dongyong6045 2014-02-04 11:36
浏览 25
已采纳

跳过解析CODE标记内的BBCode

I'm parsing the BBCode using the regex in order to replace it into the HTML. I'm stuck right now because of the [code] tags parsing.

Basically, when you do [code][b]this is bb[/b] [u]code in[/u] [i]code[/i][/code] it shouldnt replace the [b], [u], [i] and similar tags that are INSIDE of the [code] tag.

Unfortunately, using the preg_replace:

$this->_text = preg_replace('/\[i](.+?)\[\/i]/i', '<em>\1</em>', $this->_text);
$this->_text = preg_replace('/\[code](.+?)\[\/code]]/i', '<code>\1</code>', $this->_text);

will cause replacing them all, and the code inside of the [code] tag will become HTML formated.

Is there any work-around for this? I need ideas. I was thinking about escaping the [, ] brackets characters in [code] before parsing the rest, but this idea sound silly.

  • 写回答

1条回答 默认 最新

  • doupo2157 2014-02-04 14:39
    关注

    If you are going to parse from the exterior in, you need something like this for your code tag

    (?:\[code])(.*)(?=(?:\[\/code]))
    

    But as other have mentioned, you should be very careful with you do with this because you can not guarantee what is coming to you, it may be malformed and then you will end up with a mess of tags or even an incomplete mixture of parsed and unparsed bbcodes.

    Even the code that i just wrote will fail if you have two [/code][/code].

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集