pw:php5.3 対応メモ
created 2010-12-10 modified 2010-12-10
eregからpregへ
php 5.3 から、ereg 関数を使うとこっぴどくしかられるようになったらしい。マニュアルを見ると、preg を使ってくれとのこと。
ライブラリ | 備考 |
---|---|
ereg | POSIX 正規表現関数 |
preg | 正規表現 (Perl 互換) |
うちの場合は
リンク | 備考 |
---|---|
PHP CookBook Recipe 13.2 Switching From ereg to preg | eregからpregに切り替える料理マニュアル |
を参考にさせていただき、対応しました。具体的には下記関数を共通のところにおいて
function ereg_p($pat, $str) { $pat = "!".addcslashes($pat, "!")."!"; return preg_match($pat, $str); } function eregi_p($pat, $str) { $pat = "!".addcslashes($pat, "!")."!i"; //i return preg_match($pat, $str); } function ereg_replace_p($pat, $rpl, $str) { $pat = "!".addcslashes($pat, "!")."!"; return preg_replace($pat, $rpl, $str); } function eregi_replace_p($pat, $rpl, $str) { $pat = "!".addcslashes($pat, "!")."!i"; //i return preg_replace($pat, $rpl, $str); }
利用側を置換。
ereg | → ereg_p |
eregi | → eregi_p |
ereg_replace | → ereg_replace_p |
eregi_replace | → eregi_replace_p |
パターンの前後につける区切り文字は、普通 "/" にするようですが、うちの場合は
"/" を比較の対象文字として多く使っており、"!" のほうが少なかったのでこうしました。