[英]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.