正则 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 字符在 后向引用替换时会被用反斜线转义.
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn