PHPのソースコードで推奨されなくなった関数を新しい推奨関数に置き換えようとしています。しかし、私はeregi関数をpreg_match関数で置き換えることに大きな問題を抱えていました。これは、PHPマニュアルで提案されている正規表現パターンの "i"で置き換えられました。PHPの廃止された関数の削除と置換の問題
<?php
$strXml=<<<XMLSTRING
ALIPC231232
TIME
Jan 21 10:43:58 UTC 2011
ORIGINAL REQUEST:
TIME PLEASE
XMLSTRING;
eregi("(TIME)(.*)(ORIGINAL REQUEST:)" , $strXml, $matches);
echo "begin_ck_eregi_match1:".$matches[1].":end_ck_eregi_match1";
echo "begin_ck_eregi_match2:".$matches[2].":end_ck_eregi_match2";
preg_match("/(TIME)(.*)(ORIGINAL REQUEST:)/i" , $strXml, $match);
echo "begin_ck_preg_match_match1:".$match[1].":end_ck_preg_match_match1";
echo "begin_ck_preg_match_match2:".$match[2].":end_ck_preg_match_match2";
?>
上記のコードでは、文字列がパターンに対してテストされたとき、eregiは適切に一致を返しました。同じ文字列に対してpreg_matchが使用され、同じパターンに対してテストされた場合、一致は返されません。なぜ私は理解できませんか?私はここで何かを逃していなければならないこれで私を助けてください。
彼はすでに「i」を使用しています。 –
私は以前に "s"修飾語を使用していなかったことがわかりました。私がCrozinの例のように "s"修飾語を使用したとき、うまくいきました。どうもありがとう。 – Kartins