簡體   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