尊敬的先生/女士,我怎样才能用 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);
有哪位聪明的知道吗?
尊敬的先生/女士,我怎样才能用 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);
有哪位聪明的知道吗?
试试这个:
return ereg_replace("^(.*)%%number%%(.*)$","\\1$i\\2",$number);
变成
return preg_replace("/^(.*)%%number%%(.*)$/","\\1$i\\2",$number);
注意正则表达式周围的 /。
我将阅读神话般的手动方法。
PHP 手册有一节用于从 POSIX Regex 迁移到 PCRE。
- PCRE 函数要求模式用分隔符括起来。
- 与 POSIX 不同,PCRE 扩展没有用于不区分大小写匹配的专用函数。相反,这是使用 /i 模式修饰符来支持的。其他模式修饰符也可用于更改匹配策略。
- POSIX 函数查找最左边的最长匹配,但 PCRE 在第一个有效匹配处停止。如果字符串根本不匹配,则没有区别,但如果匹配,则可能会对结果匹配和匹配速度产生巨大影响。为了说明这种差异,请考虑以下来自 Jeffrey Friedl 的“掌握正则表达式”的示例。使用模式 one(self)?(selfsufficient)? 在字符串 oneselfsufficient 上使用 PCRE 将导致匹配自己,但使用 POSIX 结果将是完整的字符串 oneselfsufficient。两个(子)字符串都与原始字符串匹配,但 POSIX 要求最长的是结果。
祝你好运,
阿林
PHP 中 preg_ 函数使用的 Perl 兼容正则表达式需要模式字符串中的分界字符,定义实际字符串模式的开始和结束位置,以及额外功能的属性(例如不区分大小写)在哪里。
例如:
$pattern = "/dog/i"; // Search pattern for "dog", case insensitive.
$replace = "cat";
$subject = "Dogs are cats.";
$result = preg_replace($pattern, $replace, $subject);