preg_replace("#((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)#i","\\1",$text);
上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。
比如這個: http://bbs.csdn.net/topics/new?forum_id=PHPBase
怎麼排除有[url]或者[img]這種標籤裡面的連結不要自動加連結?或者有沒有其它正則可以做到?
謝謝!
回複討論(解決方案)
比如這個:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】
或者說我又要對ubb代碼轉換,又要對沒有被ubb程式碼封裝起來的網址自動加上連結,怎麼做到?
試試
preg_replace("#(?
$text =<<< TXT上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase比如這個:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】TXT;echo preg_replace("#([^】])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)(?>=【)?#isu","$1$2",$text);上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。
比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase
比如這個:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】
試試
preg_replace("#(?
好象可以,但是不是[ubb\]標籤,上面1樓寫錯,應該是[img]和[url]這些標籤,可以把[ubb\]換成[url\],但只能排除一個標籤,怎麼寫可以排除多個?如還要排除[img\]
$text =<<< TXT上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase比如這個:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】TXT;echo preg_replace("#([^】])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)(?>=【)?#isu","$1$2",$text);上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。
比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase
比如這個:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】
====
這個【】號其實是[]這個號,因為個寫成[]時在這裡會自動轉成連結看不到,所以寫成【】
你自己換一下不就行了?
$text =<<< TXT上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase比如這個:[ubb]http://bbs.csdn.net/topics/new?forum_id=PHPBase[/ubb]TXT;echo preg_replace("#([^]])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)#isu","$1$2",$text);
你自己換一下不就行了?
$text =<<< TXT上面是給一段文字裡面的網址自動加連結的,但是有的ubb代碼的連結不能自動加連結,要怎麼排除?因為ubb會自動轉換為連結。比如這個:http://bbs.csdn.net/topics/new?forum_id=PHPBase比如這個:[ubb]http://bbs.csdn.net/topics/new?forum_id=PHPBase[/ubb]TXT;echo preg_replace("#([^]])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)#isu","$1$2",$text);
===
太謝謝了,我用你前面那個也可以
return preg_replace("#([^\]])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)(?>=\[)?#isu","$1$2",$str);
後面那個也可以,謝謝。。。。
還有一個問題,就是前面有=號的怎麼處理?就是這種格式:
[url=http://bbs.csdn.net/topics/new?forum_id=PHPBase]
謝謝,我改成這樣可以:
echo preg_replace("#([^]|=])((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)#isu","$1$2",$text);