[英]Php regex match a string between two html tags with the tags been unknown
好的,這是我的問題:
我有一個鏈接,說: http : //www.blablabla.com/watch?v= 1lyu1KKwC74& feature= list_other& playnext=1&list=AL94UKMTqg-9CfMhPFKXPXcvJ_j65v7UuV
鏈接位於兩個標簽之間,如下所示:
<br>http://www.blablabla.com/watch?v=1lyu1KKwC74&feature=list_other&playnext=1&list=AL94UKMTqg-9CfMhPFKXPXcvJ_j65v7UuV<br></p>
將此正則表達式與preg_replace一起使用:
'@(^|[^\/]|[^>])('.addcslashes($link,'.?+').')([^\w\/]|[^<]$)@i'
因此:
preg_replace('@(^|[^\/]|[^>])('.addcslashes($link,'.?+').')([^\w\/]|[^<]$)@i', "***",$strText);
結果字符串是:
<br***p>
哪有錯!
應該是
<br>***<br></p>
如何獲得理想的結果? 我已經竭盡全力試圖解決這一問題。
我想提到str_replace
甚至替換了另一個有效鏈接中的鏈接,所以這不是一個好方法,即使邊界是文本或另一個HTML標記,我也需要兩個邊界之間的精確匹配。
假設由於某些原因您不想使用DOM解析器,我相信您可以按照以下說明進行操作:
preg_replace('@(^|[^\/]|[^>])('.addcslashes($link,'.?+').')([^\w\/]|[^<]$)@i', "$1***$3",$strText);
這將使用$ 1和$ 3放回您在正則表達式中匹配的定界文本。
正如其他人指出的那樣,使用DOM解析器更為可靠。
這是您想要的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.