英字を使い文字数を調べましたが、日本語の文字列の長さを
調べたい場合、strlen()の代わりにmb_strlen()関数を
使います。strlen()関数では日本語の文字列を正しく
カウントできない場合があります。mb_が先頭につく関数を、
マルチバイト文字列関数といいます。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>日本語文字列</title> <link rel="stylesheet" href="../style.css"> </head> <body> <table border="2"> <tr bgcolor="#B0B0B0"> <th>果物</th> <th>strlen</th> <th>mb_strlen</th> </tr> <?php $food = array("林檎","バナナ","桃"); mb_language("ja"); mb_internal_encoding("UTF-8"); foreach( $food as $value){ echo "<tr>"; echo "<td>{$value}</td>"; echo "<td>" . strlen($value) . "</td>"; echo "<td>" . mb_strlen($value) ."</td>"; echo "</tr>"; } ?> </table> </body> </html> |
strlen()関数を使うと、1文字が1個以上とカウントされています。
mb_strlen()関数を津アクト日本語文字列の長さを
正しく数えることができます。
上記のサンプルコードではmb_language()関数を使い
"ja"日本語環境であることを設定して、mb_internal_encoding関数を
使って文字コードをUTF-8に設定しました。文字コードが正しく設定されないと、
正しく動作しないことがあります。