用preg_match替换ereg_match

时间:2011-01-21 12:59:58

标签: php ereg-replace

亲爱的先生/先生 我如何用preg_replace或str_replace替换已弃用的ereg_replace 并仍然具有与下面的代码相同的功能?

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

///this doesnt work

return preg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

任何聪明人都有线索吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);

变为

return preg_replace("/^(.*)%%number%%(.*)$/","\\1$i\\2",$number);

请注意正则表达式周围的/。

答案 1 :(得分:1)

我会用阅读精彩的手动方法。

PHP手册有a section,用于从POSIX Regex转移到PCRE。

  
      
  1. PCRE函数要求模式由分隔符括起来。
  2.   
  3. 与POSIX不同,PCRE扩展没有专用功能   不区分大小写的匹配。代替,   使用/ i模式支持此功能   修改。其他模式修饰符是   也可以改变   匹配策略。
  4.   
  5. POSIX函数找到最左边匹配的最长时间,但是   PCRE在第一次有效比赛时停止。   如果字符串完全不匹配   没有区别,但如果它匹配   它可能会对两者产生巨大影响   结果匹配和匹配   速度。为了说明这种差异,   考虑以下示例   “掌握正则表达式”   杰弗里弗里德。使用模式   一个(个体经营)?(自给自足)?在...上   用PCRE串起来   会导致匹配自己,但是   使用POSIX结果将是   全字符串自足。都   (子)字符串与原始字符串匹配   字符串,但POSIX要求   最长的结果。
  6.   
祝你好运,
阿林

答案 2 :(得分:0)

Perl兼容的正则表达式,由PHP中的preg_函数使用,需要在模式字符串中使用分界字符,定义实际字符串模式的开始和结束位置,以及额外功能的属性,例如不区分大小写。

例如:

$pattern = "/dog/i"; // Search pattern for "dog", case insensitive.
$replace = "cat";

$subject = "Dogs are cats.";

$result = preg_replace($pattern, $replace, $subject);