> 백엔드 개발 > PHP 튜토리얼 > 新人求教~关于正则的模式修正符e的问题,为啥我感觉没啥用呢?

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

WBOY
풀어 주다: 2016-06-23 14:12:07
원래의
983명이 탐색했습니다.

正则 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 字符在 后向引用替换时会被用反斜线转义. 

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿