【发布时间】:2012-03-09 09:42:12
【问题描述】:
如何转换:
ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", " ", $data);
到
preg_replace("......", " ", $data);
【问题讨论】:
标签: php preg-replace deprecated ereg-replace
如何转换:
ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", " ", $data);
到
preg_replace("......", " ", $data);
【问题讨论】:
标签: php preg-replace deprecated ereg-replace
您在正则表达式中的所有内容似乎都对 perl 正则表达式有效。不同之处在于 perl 正则表达式需要边界字符(由第一个字符定义),以及第二个边界字符之后的可选标志(我将忽略它们,请参阅 PHP 页面中的 preg_match 以了解它们的使用)。
换句话说,^\d$ 的 ereg 匹配变为/^\d$/,其中/ 是边界字符。如果你从一个不同的字符开始,那将成为边界字符。这很有用,就像您的情况一样,当/ 的通常边界字符在正则表达式中被大量使用并且您不想转义它时。例如,/^\d$/ 和 |^\d$| 是等价的。
在这种特定情况下,您可以将其用作 preg_replace:
preg_replace("|[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]|", " ", $data);
【讨论】: