此函数从短代码中删除杂散括号。有没有更优雅的方式来做到这一点?

时间:2014-11-15 20:16:07

标签: php regex wordpress

如何清理此代码?

Wordpress使用[短代码]形式的短代码为帖子和页面添加扩展功能。

我要做的是返回一个包含所有'stray'括号的字符串,其中没有被任何短代码用作html实体。

我需要使用的是WordPress的这些变量:

$ shortcode_tags:所有短代码数组(不带括号)

get_shortcode_regex():将所有已注册的短代码标记组合成一个正则表达式。 (我在下面的代码中没有使用它)

function find_stray_brackets ($content) {
// this code repalces all occurences of every shortcode with special brackets.
// It then replaces remaining 'stray' brackets with the HTML character entitiy.

        global shortcode_tags;
        foreach($shortcode_tags as $k=>$item)
        {
            $pattern='/\[('.$k.'.*?(?=\]))\]/';
            $content=preg_replace($pattern,'*{*$1*}*',$content);
            $pattern='/\[\/('.$k.'.*?(?=\]))\]/';
            $content=preg_replace($pattern,'*{*/$1*}*',$content);
        }

        $content=str_replace('[','[',$content);
        $content=str_replace(']',']',$content);
        $content=str_replace('*{*','[',$content);
        $content=str_replace('*}*',']',$content);

    return($content);
}

方法是用特殊字符替换所有围绕短代码的括号 - >用html实体替换流浪括号 - >重新插入原始括号

0 个答案:

没有答案