正規表現を使わない文字列検索
PHPでよく使う文字列の検索方法、前方一致、後方一致
PHP
// 対象に検索文字列が含まれている場合はTRUE
// $strが検索対象、'foo'が検索する文字列
if (mb_strpos($str, 'foo') !== FALSE) {
echo "一致";
} else {
echo "不一致";
}
// 対象に検索文字列が含まれている場合はTRUE(大文字小文字区別せず)
if (mb_stripos($str, 'foo') !== FALSE) {
echo "一致";
} else {
echo "不一致";
}
// 前方一致
if (mb_strpos($str, 'foo') === 0) {
echo "一致";
} else {
echo "不一致";
}
// 後方一致
if (mb_strrpos($str, 'foo') == mb_strlen($str) - mb_strlen('foo')) {
echo "一致";
} else {
echo "不一致";
}
// 対象(配列)に検索文字列が含まれている場合はTRUE
if (array_search('foo', $arr) !== FALSE){
echo "含む";
} else {
echo "含まない";
}
// 英字の場合、TRUE
if (ctype_alpha($str)) {
echo "英字";
}
// 数字の場合、TRUE
// ctype_digit(-1); FALSE
// ctype_digit(0); FALSE
// ctype_digit(1); FALSE
// ctype_digit(1.5); FALSE
// ctype_digit('0'); TRUE
// ctype_digit('1'); TRUE
// ctype_digit('-1'); FALSE
// ctype_digit('1.5'); FALSE
if (ctype_digit($str)) {
echo "数字";
}
// is_numeric(-1); TRUE
// is_numeric(0); TRUE
// is_numeric(1); TRUE
// is_numeric(1.5); TRUE
// is_numeric('0'); TRUE
// is_numeric('1'); TRUE
// is_numeric('-1'); TRUE
// is_numeric('1.5'); TRUE
if (is_numeric($str)) {
echo "数字";
}
// is_int(-1); TRUE
// is_int(0); TRUE
// is_int(1); TRUE
// is_int(1.5); TRUE
// is_int('0'); FALSE
// is_int('1'); FALSE
// is_int('-1'); FALSE
// is_int('1.5'); FALSE
if (is_int($str)) {
echo "数字";
}
// 英数字の場合、TRUE
if (ctype_alnum($str)) {
echo "英数字";
}
// 空白文字の場合、TRUE
// ctype_space(''); FALSE
// ctype_space(""); FALSE
// ctype_space('\n'); FALSE
// ctype_space("\n"); TRUE
// ctype_space("\t"); TRUE
if (ctype_space($str)) {
echo "空白";
}
// メールアドレスの場合、TRUE
if (filter_var($str, FILTER_VALIDATE_EMAIL)){
echo "メールアドレス";
}
大文字小文字を区別しないのであれば、対象に合わせて、小文字化 mb_strtolower($str) するか、大文字化 mb_strtoupper($str) して比較する。