Ads by Google
新しい記事を書く事で広告が消せます。
[PHP]正規表現と文字コード
PHPを使って、電話番号と住所を正規表現しようとしたら、どうも上手くいかない。
どう考えてもサイトの説明通りにやってるのに、エラーが出てしまう。
以下のサイトでこんな投稿があった。
http://lolipoking.lolipop.jp/php/patio.cgi?mode=view&no=2802
同じ現象で、正しく正規表現が出来ないというのだ。
以下コード引用
-------------------------------------------------------
$str = "てすとたろう";
if (mb_ereg("^[あ-ん]+$", $str)) {
echo "すべてひらがなである";
} else {
echo "すべてひらがなではない";
}
?>
---------------------------------------------------------
ここまで引用
これが、「すべてひらがなではない」となるという。
これに対して、
mb_internal_encoding('SJIS');
mb_regex_encoding('SJIS');
を付け足して、内部エンコーディングをEUC-JPにしなければならないとのこと。
指定なしだと、正規表現スクリプトは標準エンコーディングのEUC-JPという前提で処理するとのこと。
質問者は、マニュアル見れとか若干叩かれてるけど、正直な話、マニュアル見ていちいちやってたら日が暮れる。
目的があって作ってるんだから、今の段階では「とにかく動けばいい」としか思ってないです正直。
とりあえずSJISでもそうやれば動作することを確認しつつEUCに統一。
文字コードややこしい・・・
どう考えてもサイトの説明通りにやってるのに、エラーが出てしまう。
以下のサイトでこんな投稿があった。
http://lolipoking.lolipop.jp/php/patio.cgi?mode=view&no=2802
同じ現象で、正しく正規表現が出来ないというのだ。
以下コード引用
-------------------------------------------------------
$str = "てすとたろう";
if (mb_ereg("^[あ-ん]+$", $str)) {
echo "すべてひらがなである";
} else {
echo "すべてひらがなではない";
}
?>
---------------------------------------------------------
ここまで引用
これが、「すべてひらがなではない」となるという。
これに対して、
mb_internal_encoding('SJIS');
mb_regex_encoding('SJIS');
を付け足して、内部エンコーディングをEUC-JPにしなければならないとのこと。
指定なしだと、正規表現スクリプトは標準エンコーディングのEUC-JPという前提で処理するとのこと。
質問者は、マニュアル見れとか若干叩かれてるけど、正直な話、マニュアル見ていちいちやってたら日が暮れる。
目的があって作ってるんだから、今の段階では「とにかく動けばいい」としか思ってないです正直。
とりあえずSJISでもそうやれば動作することを確認しつつEUCに統一。
文字コードややこしい・・・
コメント
コメントの投稿
トラックバック
http://onlyonewolf0513.blog1.fc2.com/tb.php/550-dc24341c

