Php 我如何制作bbcode来将url标记解析为链接?

Php 我如何制作bbcode来将url标记解析为链接?,php,html,css,bbcode,Php,Html,Css,Bbcode,我应该如何在php中解析url?我想让它继续下去 [url=http://www.google.com]Google[/url] 变成: <a href="http://www.google.com">Google</a> 这是我用于其他bb代码的代码: function postparser($post){ $post = str_replace("\n",'END_OF_LINE',$post); $post = str_rep

我应该如何在php中解析url?我想让它继续下去

[url=http://www.google.com]Google[/url]
变成:

<a href="http://www.google.com">Google</a>
这是我用于其他bb代码的代码:

function postparser($post){ 
        $post = str_replace("\n",'END_OF_LINE',$post);

        $post = str_replace("[line]",'HORIZONTAL_LINE',$post);

        $post = str_replace("[bold]",'BOLD_TEXT_START',$post);
        $post = str_replace("[/bold]",'BOLD_TEXT_END',$post);

        $post = str_replace("[yt]",'YOUTUBE_START',$post);
        $post = str_replace("[/yt]",'YOUTUBE_END',$post);

        $post = sanitize($post);

        $post = str_replace("END_OF_LINE",'<br />',$post);

        $post = str_replace("HORIZONTAL_LINE",'<hr />',$post);

        $post = str_replace("BOLD_TEXT_START",'<b>',$post);
        $post = str_replace("BOLD_TEXT_END",'</b>',$post);

        $post = str_replace("YOUTUBE_START",'<iframe width="560" height="315" src="http://www.youtube.com/embed/',$post);
        $post = str_replace("YOUTUBE_END",'" frameborder="0" allowfullscreen></iframe>',$post);

        return $post;
    }
我该怎么做呢

$post = preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/', '<a href="\1">\2</a>', $post);
这将转变为: [url]=

转换为解析的bbcode文本:

您可能希望使用比.+更具体的方法来过滤潜在的不良/危险输入

这将转变为: [url]=

转换为解析的bbcode文本:


你可能想使用更具体的方法来过滤潜在的错误/危险的输入。

这是一个糟糕的解决方案…我可以在我的url中添加一些类似于add-XSS的内容:[url=onclick=myfucnk;]Google[/url]或[url=javascript:alert'XSS!']Google[/url]这是一个糟糕的解决方案…我可以在我的url中添加一些类似于add-XSS的内容:[url=onclick=myfucnk;]Google[/url]或[url=javascript:alert'XSS!';]Google[/url]如果要解析在开始标记中包含或不包含双引号url的[url]标记。如果要解析在开始标记中包含或不包含双引号url的[url]标记。