您好,欢迎访问一九零五行业门户网

新人求教~关于正则的模式修正符e的问题,为啥我感觉没啥用呢?

正则 php
比如这两段代码,匹配字符串中的网址链接
这是使用模式修正符e的:
$urlpattern = /(www.|https?:\/\/|ftp:\/\/|news:\/\/|telnet:\/\/){1}([^\[\']+?)(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/ei;
$url=php的地址是:www.php.com;
echo preg_replace($urlpattern,  '\\2'.'\\3', $url);
这是未使用模式修正符e的:
$urlpattern = /(www.|https?:\/\/|ftp:\/\/|news:\/\/|telnet:\/\/){1}([^\[\']+?)(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/i;
$url=php的地址是:www.php.com;
echo preg_replace($urlpattern,  '\\2'.'\\3', $url);
输出结果是一样的啊~
都是将www.php.com替换为php.com
我觉得也就是多了层双引号而已呢、、、
反而不用e还感觉更简单一点呢
这个e到底是怎么回事?
回复讨论(解决方案) e (preg_replace_eval)
    如果这个修饰符设置了, preg_replace() 在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行(eval 函数方式),并使用执行结果 作为实际参与替换的字符串。单引号、双引号、反斜线(\)和 null 字符在 后向引用替换时会被用反斜线转义.
其它类似信息

推荐信息