【发布时间】:2016-12-31 17:07:50
【问题描述】:
我希望正则表达式从我的内容中删除所有外部链接,只保留所提供域的链接。
例如。
$inputContent = 'Lorem Ipsum <a href="http://www.example1.com" target="_blank">http://www.example1.com</a> lorem ipsum dummy text <a href="http://www.mywebsite.com" target="_blank">http://www.mywebsite.com</a>';
预期输出:
$outputContent = 'Lorem Ipsum lorem ipsum dummy text <a href="http://www.mywebsite.com" target="_blank">http://www.mywebsite.com</a>';
尝试了这个解决方案,但它不起作用。
$pattern = '#<a [^>]*\bhref=([\'"])http.?://((?<!mywebsite)[^\'"])+\1 *>.*?</a>#i';
$filteredString = preg_replace($pattern, '', $content);
【问题讨论】:
-
尝试先检查您的正则表达式,您有 3 个未转义的分隔符。您可以使用此站点检查您的正则表达式一致性。 regex101.com
-
您的正则表达式不考虑
target=_blank或任何其他属性。