繁体   English   中英

替换字符串中与php中的模式不匹配的所有URL

[英]Replace all urls in string not matching pattern in php

我正在使用此代码替换字符串中的网址

preg_replace('#<a.*?>(.*?)</a>#i', '\1', $text)

我该如何做同样的事情,但要保留与特定模式匹配的网址(即以我要保留的域名开头)?

更新

原来,我要保留的URL包括相对URL,因此我现在要消除所有与给定URL模式不匹配且不是相对链接的URL。

您需要一个否定的前瞻断言:

preg_replace('#<a(?![^>]+?href="?http://keepthisdomain.com/foo/bar"?).*?>(.*?)</a>#i', '\1', $text);

编辑:如果只想匹配相对域,则逻辑是相同的。 只需取出协议和域名即可:

preg_replace('#<a(?![^>]+?href="?/?path/to/foo/bar"?).*?>(.*?)</a>#i', '\1', $text);

? "/表示这些字符是可选的。因此,第二个示例适用于path/to/foo/bar/path/to/foo/bar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM