PHP BBCode和链接

时间:2012-02-12 14:43:30

标签: php regex anchor bbcode

行。所以我正在构建一个将bbcoded字符串解析为html的函数。 BBCode链接的结构如下:

[url=http://somelink.com/]Link[/url]

我想成功:

<a href="http://somelink.com/">Link</a>

但我也想检查链接是否有效,以保护自己免受XSS攻击。我发现这个正则表达式检查有效链接:

/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

现在,我尝试preg_match_all $ str和foreach匹配来检查它的url是否有效,然后将其解析为html,但似乎我无法做到。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

看看PHP的内置Filter模块。它自PHP 5.2起可用,并包含FILTER_VALIDATE_URL常量来过滤有效的URL。查看一些usage examples

从未个人使用过,但我认为继续使用语言内置功能比在你的情况下使用正则表达式更安全(因为你似乎没有正则表达式)。

答案 1 :(得分:0)

为什么重新发明轮子?

您可以使用PECL extension解析BBCode