flat7th

pw:php5.3 対応メモ

created 2010-12-10 modified 2010-12-10 

eregからpregへ

php 5.3 から、ereg 関数を使うとこっぴどくしかられるようになったらしい。
マニュアルを見ると、preg を使ってくれとのこと。

ライブラリ備考
eregPOSIX 正規表現関数
preg正規表現 (Perl 互換)

うちの場合は

リンク備考
PHP CookBook Recipe 13.2 Switching From ereg to pregeregから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

パターンの前後につける区切り文字は、普通 "/" にするようですが、うちの場合は
"/" を比較の対象文字として多く使っており、"!" のほうが少なかったのでこうしました。