Kar*_*ins 1 php regex pcre posix deprecated
我试图用新推荐的PHP源代码替换我的PHP源代码中已弃用的函数.但是我在使用preg_match函数替换eregi函数时遇到了一个大问题,正如php手册中建议的那样,正则表达式中的"i".以下是示例代码:
<?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";
?>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当针对模式测试字符串时,eregi正确地给出了匹配; 但是当在相同的字符串上使用preg_match并针对相同的模式对其进行测试时,不会返回任何匹配项.我无法弄清楚为什么?我必须在这里遗漏一些东西.请你帮我解决这个问题.
该点.与新线不匹配.另外,使用s修饰符(称为PCRE_DOTALL):
preg_match('/(TIME)(.*)(ORIGINAL_REQUEST:)/is', $strXml, $match);
Run Code Online (Sandbox Code Playgroud)