2010-08-10 69 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中去掉任何顽皮的小代码修饰符。