php弃用功能删除和重新安置问题

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并针对相同的模式对其进行测试时,不会返回任何匹配项.我无法弄清楚为什么?我必须在这里遗漏一些东西.请你帮我解决这个问题.

Lin*_*een 5

该点.与新线不匹配.另外,使用s修饰符(称为PCRE_DOTALL):

preg_match('/(TIME)(.*)(ORIGINAL_REQUEST:)/is', $strXml, $match);
Run Code Online (Sandbox Code Playgroud)