Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-对特定域名使用preg_replace_Php_Regex_Preg Replace - Fatal编程技术网

php-对特定域名使用preg_replace

php-对特定域名使用preg_replace,php,regex,preg-replace,Php,Regex,Preg Replace,我在preg_replace()中使用以下模式替换html文件中所有路径开头的特定域名。一切都很好,但问题是它也取代了电子邮件地址中的域名 preg_replace('%(https?://)?(www\.)?domain\.com/?%im', '', '$html') 结果应该是: domain.com/path/ => /path/ www.domain.com/path/ => /path/ 如果要替换: domain.com www.domain.com 但不是

我在
preg_replace()
中使用以下模式替换html文件中所有路径开头的特定域名。一切都很好,但问题是它也取代了电子邮件地址中的域名

preg_replace('%(https?://)?(www\.)?domain\.com/?%im', '', '$html')
结果应该是:

domain.com/path/ => /path/
www.domain.com/path/ => /path/

如果要替换:

  • domain.com
  • www.domain.com
但不是该域的电子邮件地址,则您需要对电子邮件地址中所需的
@
使用负面查找:

'%(https?://)?(?<!@)(www\.)?domain\.com/?%im'

你能解释一下html文件中文件路径的开头是什么意思吗;或者提供一个函数示例字符串?另外,
m
修饰符在表达式中没有任何作用。类似于:
%(https?:/)?(?否定
@
?您将协议部分设置为可选部分,因此正则表达式无法区分
example.com
-电子邮件地址和
example.com
-网络-url@AbraCadaver这在某种程度上是有效的。尽管
https://https://www.domain.com
会很奇怪。
使其成为可选的;只需删除它就需要它出现一次。
'%(https?://)?(?<!@)(www\.)?domain\.com%i'