ereg_replaceに気をつけろおおおっ!!

PCREが使えない環境に触れなくなって久しいので,ereg系の関数群を使ったソースに久しぶりに触れた.
それは本来str_replace()でできることをereg_replace()で行うというバカなコードだったんだけど,それがゆえにハマってしまった.とりあえずマニュアル.

っで,ereg_replace()の実行例.

$ php -r 'define(S, "foobarbaz"); var_dump(S, ereg_replace("baz", 100, S), ereg_replace("baz", "100", S));'
string(9) "foobarbaz"
string(7) "foobard"
string(9) "foobar100"

上記のように第2引数にintegerを渡すと期待しない結果が!!
確かにマニュアルで第2引数はstringと明記されているんですけどね.
データベースに問い合わせるときに丁寧にintval()してみたら該当のようなコードでハマってしまった.
バージョン4.4.2,4.4.7,5.2.5で確認.気が向いたらbugs.php.netに報告する.