[PHP-users 31291] eregi と mb_eregiの動作の違いについて

t m matbluecat @ gmail.com
2007年 1月 19日 (金) 16:46:32 JST


どうもお世話になりますmatといいます。よろしくお願いいたします。
今現在XML-RPC関連のプログラムを書いています。その中で正規表現によるチェック部分がPEARライブラリのRPC.php内にあるのですが、そこで行われているチェックで以下のような正規表現によるチェックがあります

if ($GLOBALS['XML_RPC_func_ereg']('^HTTP', $data) &&
    !$GLOBALS['XML_RPC_func_ereg']('^HTTP/[0-9\.]+ 200 ', $data) &&
    !$GLOBALS['XML_RPC_func_ereg']('^HTTP/[0-9\.]+ 10[0-9]([A-Z
]+)?[\r\n]+HTTP/[0-9\.]+ 200', $data))

ソース内を探したところ環境により、eregiまたはmb_eregiを$GLOBALS['XML_RPC_func_ereg']に代入して使用するようなつくりになっているようでした

本来であればこの部分で「HTTP/1.1 200
OK」というものを許可する作りなはずなのですが、eregiとmb_eregiを使用した場合にそれぞれ結果が変わってしまうようです
2番目の「('^HTTP/[0-9\.]+ 200 ', $data)」の部分でeregiでは結果が1、mb_eregiではfalseが返ってきます

環境としてはPHP4.2.2で--enable-mbstringを有効にしている環境では上記のような実行結果になりますが、PHP4.3.9で試したところ、eregi、mb_eregiともに動作は同じようになりました

ということで、PHP4.2.2ではeregiとmb_eregiの動作の違いがあるように思ったのですが、この辺りの情報をお持ちの方はご教授願えないでしょうか
よろしくお願いします。


PHP-users メーリングリストの案内