【问题标题】:Regex match the double quote in BBCode attribute正则表达式匹配 BBCode 属性中的双引号
【发布时间】:2014-04-29 00:20:23
【问题描述】:

我的 论坛数据库中存储有一些不兼容的 文本,例如:

Some text with [COLOR="red"]colored text[/COLOR] and [SIZE="7"]Big fonts[/SIZE] while "This double quote" is not matched

我想要的是一个正则表达式,它匹配任何双引号 " " 和其中的任何字符串,而这些双引号在 bbcode 的方括号 [ ] 内。

我需要这个能够通过去除双引号来修复那些 bbcode。正则表达式实现将使用 PHP。

【问题讨论】:

    标签: phpbb3 bbcode php regex bbcode phpbb3


    【解决方案1】:

    试试这个:

    \[\w+=("[^"]*")\]
    

    它匹配方括号、字母数字、等号、带引号的字符串、右方括号。捕获组 1 将包含引用的部分。

    【讨论】:

    • 我需要 bbcode 方括号内的引号,而不是所有的括号。
    • 使用捕获组提取您关心的部分。或者使用环视。
    【解决方案2】:

    您可能正在寻找这样的东西:

    $code= 'Some text with [COLOR="red"]colored text[/COLOR] and [SIZE="7"]Big fonts[/SIZE] while "This double quote" is not matched';
    
    preg_match_all('/\[.*?="(\w+)"\]/', $code, $matches, PREG_PATTERN_ORDER);
    for ($i = 0; $i < count($matches[1]); $i++) {
        echo $matches[1][$i]."\n";
    }
    

    演示:
    https://ideone.com/LEZHgx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多