2010-08-10 82 views
0

您好我最近發現一個問題,人們使用BB代碼來輸入鏈接能夠操縱它們。如何停止BB代碼操作?

這意味着它們是輸入類似:

[LINK]http://www.domain.com[/LINK] 

不過,他們可以進入這樣的事情,使鏈接紅色:

[LINK]http://www.domain.com 'span style="color:red;"'[/LINK] 

這是其轉換的代碼:

$text = preg_replace("/\\[LINK\\\](.*?)\\[\/LINK\\]/is", 
         "<a href='$1' target='_blank'>$1</a>", $text); 

另外,我忘了,這是t他其他類型:

[LINK=http://www.domain.com]example text[/LINK] 

$text = preg_replace("/\\[LINK\=(.*?)\\\](.*?)\\[\/LINK\\]/is", 
         "<a href='$1' target='_blank'>$2</a>", $text); 

回答

0

不要讓報價,這樣的網址,並帶標籤,其未能在第一關:

$text = preg_replace("/\[LINK\]([^'\"\\s]*?)\[\/LINK\]/is", 
           "<a href='$1' target='_blank'>$1</a>", $text); 

$text = preg_replace("/\[LINK\](.*?)\[\/LINK\]/is", "<i>(link removed)</i>", $text); 
+0

謝謝,這個作品很棒! – Mike 2010-08-10 15:34:00

+0

您能否爲我的問題提供第二種解決方案? – Mike 2010-08-10 16:24:01

+0

我會說:試着弄明白。所有的成分都在那裏。如果您遇到問題,請發佈一個新問題。 – mvds 2010-08-10 16:38:21

0

這是非常危險的,特別是如果你的客人有足夠的智慧開始在鏈接上添加onclick處理程序。

正如mvds所說,替換所有的引用和插頁。消毒輸入是必不可少的。

但是,對於這個特殊的URL問題,這並不是必要的幫助。然而,有大量的正則表達式URL驗證器會從實際的URL中去掉任何頑皮的小代碼修飾符。