【问题标题】:how do I make a bbcode to parse url tags into links?如何制作一个 bbcode 将 url 标签解析为链接?
【发布时间】:2012-04-11 14:59:31
【问题描述】:

我应该如何解析 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;
    }

我该怎么做呢?

【问题讨论】:

  • 如果想解析[url]标签,在开始标签中有和没有双引号的url,see this answer

标签: php html css bbcode


【解决方案1】:
$post = preg_replace('/\[url=(.+?)\](.+?)\[\/url\]/', '<a href="\1">\2</a>', $post);

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

进入已解析的 bbcode 文本: Google

您可能希望使用更具体的 regex 而不仅仅是 .+ 来过滤掉潜在的不良/危险输入。

【讨论】:

  • 这是一个糟糕的解决方案...我可以像这样添加到我的网址中添加 XSS:[url=google.com" onclick="myfucnk();"]Google[/url]或 [url=javascript: alert('XSS!');]Google[/url]
猜你喜欢
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多