我需要一個函數來自動添加bbcode。如何REGEX一個url和autoadd [url]標籤並修復重複
- 用戶使用我的編輯器類型的東西。
- 提交後,會運行一個自動鏈接()php函數。
- 如果文字內容有URL將被自動添加[URL] XXX [/ URL]
我能做到這一點。但設置高亮編輯器也許使用2格式的URL
A. [URL] XX [/ URL] B. [URL = XXX] XXX [/ URL]
我無法修復重複的問題。這裏的演示代碼
$content="
http://www.google.com/logo.png
[url]http://www.yahoo.com[/url]
[url=http://yahoo.com/abc.zip]DownLoad[/url]";
$content = nl2br($content);
echo linkAdd($content);
//auto add link
function linkAdd($content){
preg_match_all('~\[url=((?:ftp|https?)://.*?)\](.*?)\[/url\]~s', $content, $stack);
foreach($stack[1] as $t) {
$content = preg_replace('~\[url=((?:ftp|https?)://.*?)\](.*?)\[/url\]~s','[url=\\1]\\2[/url]', $content,1);
}
preg_match_all('~\[url](.*?)\[/url\]~s', $content, $stack);
foreach($stack[1] as $t) {
$content = preg_replace('~\[url](.*?)\[/url\]~s',$t, $content,1);
}
$str=preg_replace('(((f|ht){1}tp://)[[email protected]:%_/+.~#?&//=]+)','[url]\\0[/url]',$content);
return $str;
}
現在結果
[url]http://www.google.com/logo.png[/url]
[url]http://www.yahoo.com[/url]
[url=[url]http://yahoo.com/abc.zip[/url]]DownLoad[/url]
線之一,線路二是確定。
但3號線再次重複[URL] XXX [/ URL]
how to be
[url=[url]http://yahoo.com/abc.zip[/url]]DownLoad[/url]
to
[url=http://yahoo.com/abc.zip]DownLoad[/url]
哇!如此清晰和簡單的代碼。 我明白了,非常感謝你,jmleroux! – Sky 2014-11-05 13:33:39
嗨,jmleroux。我想跳過[img]標籤,在「[-a-z0-9 @:%_/+。〜#」之後添加此代碼「〜\ [img \](。*?)\ [/ img \]〜s」 ?&=] +「爲什麼不工作?你能再幫助我嗎?謝謝。 – Sky 2014-11-06 09:37:05
你能舉出輸入和預期輸出的例子嗎?如果使用你的代碼不能編輯,請使用 – jmleroux 2014-11-06 10:16:52