PHP | 文字列に日本語が含まれているかどうか判別する方法
PHPで文字列の中に日本語が含まれているかどうか(文字列が英語のみかどうか)判別する方法を紹介しています。
目次
strlen()とmb_strlen()の長さを比較して判別する
if (strlen($str != mb_strlen($str, 'utf8'))) {
// 日本語文字列が含まれている
} else {
// 日本語文字列が含まれていない
}
正確には、strlen()
とmb_strlen()
で取得する文字列の長さを比較してマルチバイト文字列が含まれているかどうかで判別する方法です。
絵文字や漢字が含まれていた場合も「true」となります。
正規表現を使って日本語が含まれているかどうか判別する方法
preg_match()
を利用して、文字列中の正規表現判別を実行する事で日本語を含む文字列かどうかを判別する事が可能です。
ひらがな・カタカナを含むかどうか
if (preg_match("/[ぁ-ん]+|[ァ-ヴー]+/u", $str)) {
// 日本語文字列が含まれている
} else {
// 日本語文字列が含まれていない
}
ひらがな・カタカナ・漢字を含むかどうか
漢字も判別対象に含める場合は「一-龠」までの文字列を正規表現判別に追加します。
if (preg_match("/[ぁ-ん]+|[ァ-ヴー]+|[一-龠]/u", $str)) {
// 日本語文字列が含まれている
} else {
// 日本語文字列が含まれていない
}
ひらがな・カタカナ・漢字・全角英数字を含むかどうか
全角英数字も含める場合は以下のような正規表現を指定します。
この場合、全角英数字だけでもtrueとなります。
f (preg_match("/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[一-龠]+|[a-zA-Z0-9]/u", $str)) {
// 日本語文字列が含まれている
} else {
// 日本語文字列が含まれていない
}
ディスカッション
ためになる記事ありがとうございます。参考にさせていただきました。
「strlen()とmb_strlen()の長さを比較して判別する」のソースは
if (strlen($str != mb_strlen($str, ‘utf8’)))
ではなく
if (strlen($str) != mb_strlen($str, ‘utf8’))
ではないでしょうか。