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に報告する.