[PHP-users 22275]ereg関数の引数による戻り値の違いについて
Masayuki AOKI
info @ martin.bz
2004年 6月 18日 (金) 23:43:59 JST
こんばんは,martinです。
別に質問というわけではないのですが,「ふーん」と思ったことが
あり,マニュアルに明言なく過去ログにもないようなので。
ereg関数で,第3引数を指定しない場合の返り値は,int(1) or bool(false)
ですが,第3引数を指定するとマッチしたstring patternのバイト数を返す
ようです。これはmb_eregでもそうでした。
[例]
$str = "012345abcdef";
var_dump( ereg("5abc", $str) );
の結果は,int(1) となり,
$str = "012345abcdef";
var_dump( ereg("5abc", $str, $reg) );
の結果は,int(4) です。
だから何と言われればそれまでですが,例えば次のようなスクリプトは
意図した通り(.....を実行させたい)には作動しません。
[例]
$str = "012345abcdef";
if(ereg("5abc", $str, $reg)==1){
.....
}
まぁ通常はこういう書き方はしないでしょうが。普通に
if(ereg("5abc", $str, $reg)){
.....
}
とすれば期待した動作をします。参考までに。
/*
Masayuki AOKI: maoki @ bioreg.kyushu-u.ac.jp
http://martin.bz
*/
PHP-users メーリングリストの案内