return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);
///this doesnt work
return preg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);
任何聪明人都有线索吗?
答案 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。
祝你好运,
- PCRE函数要求模式由分隔符括起来。
- 与POSIX不同,PCRE扩展没有专用功能 不区分大小写的匹配。代替, 使用/ i模式支持此功能 修改。其他模式修饰符是 也可以改变 匹配策略。
- POSIX函数找到最左边匹配的最长时间,但是 PCRE在第一次有效比赛时停止。 如果字符串完全不匹配 没有区别,但如果它匹配 它可能会对两者产生巨大影响 结果匹配和匹配 速度。为了说明这种差异, 考虑以下示例 “掌握正则表达式” 杰弗里弗里德。使用模式 一个(个体经营)?(自给自足)?在...上 用PCRE串起来 会导致匹配自己,但是 使用POSIX结果将是 全字符串自足。都 (子)字符串与原始字符串匹配 字符串,但POSIX要求 最长的结果。
醇>
答案 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);