ereg_replace到preg_replace转换

时间:2012-02-18 01:13:15

标签: php preg-replace deprecated ereg-replace

我如何转换:

ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", " ", $data);

preg_replace("......", " ", $data);

1 个答案:

答案 0 :(得分:3)

正则表达式中的所有内容似乎对perl正则表达式都有效。不同之处在于perl正则表达式需要边界字符(由第一个字符定义),以及第二个边界字符之后的可选标记(我将忽略,请参阅preg_match的PHP页面以供其使用)。

换句话说,^\d$的ereg匹配变为/^\d$/,其中/是边界字符。如果你从一个不同的角色开始,那将成为边界角色。这很有用,就像你的情况一样,/的常用边界字符在正则表达式中被大量使用而你不想逃避它。例如,/^\d$/|^\d$|是等效的。

在这种特定情况下,您可以将其用作preg_replace:

preg_replace("|[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]|", " ", $data);