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