PCRE正则表达式/ WordPress /剥离标签

时间:2013-12-09 14:27:23

标签: javascript php regex wordpress pcre

我正在尝试删除Chrome插件已添加到我们的WordPress帖子中的标签。

Ginger软件拼写和语法检查程序(https://chrome.google.com/webstore/detail/spell-checker-and-grammar/kdfieneakcjfaiglcfcgkidlkmlijjnh?hl=en)改变了幕后的HTML,并使页面上散布着用于class =“GINGER_SOFTWARE_mark”的虚假span标记。

我确实发现了一个晦涩难懂的WordPress插件,但它们已经更新了Chrome扩展程序,随着标签格式的改变而不再有效,作者已经擅离改变,所以我一直在努力更新插件我自己,我很接近,但需要一只手越过最后阶段....任何接受者?

这是我正在剥离的标签示例:

<span class="GINGER_SOFTWARE_mark" id="8199646e-ebe6-45e9-bbe2-b212389a8120">words go here</span>

我一直试图调整的插件就是这个:http://wordpress.org/plugins/ginger-tag-remover/

使用Debuggex我能够获得与上述匹配的PCRE正则表达式:

\<span class\=\"GINGER_SOFTWARE_mark\" id=\"[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}"\>(.*?)\<\/span\>

但是在PHP中实现它并不是那么好......

这是从插件中取出的代码:

if ( !function_exists( 'add_action' ) ) {
    echo 'Leave me alone. I don\'t want trouble.';
    exit;
}

function gtr_strip_ginger_tags($content){

    $gtr_patern_array=array();
    array_push($gtr_patern_array,array('pattern'=>'#\<span class\=\\\"GINGER_SOFATWARE_noSuggestion GINGER_SOFATWARE_correct\\\"\>(.*?)\<\/span\>#m','replace'=>'$1'));
    array_push($gtr_patern_array,array('pattern'=>'#\<span class\=\\\"GINGER_SOFATWARE_noSuggestion GINGER_SOFATWARE_correct\\\"\>(.*?)\<\/span\>#m','replace'=>'$1'));
    array_push($gtr_patern_array,array('pattern'=>'#\<span class\=\\\"GINGER_SOFATWARE_correct\\\"\>(.*?)\<\/span\>#m','replace'=>'$1'));
    array_push($gtr_patern_array,array('pattern'=>'#\<span class\=\\\"GINGER_SOFATWARE_spelling\\\"\>(.*?)\<\/span\>#m','replace'=>'$1'));

    foreach($gtr_patern_array as $pat){
        $content=preg_replace($pat['pattern'],$pat['replace'],$content);
    }

    //$content.='<!-- GINGER CLEANED -->';

    return $content;
}
add_filter('content_save_pre','gtr_strip_ginger_tags');

我尝试添加这个:

array_push($gtr_patern_array,array('pattern'=>'#\<span class\=\\\"GINGER_SOFTWARE_mark\\\" id=\\\"[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}"\\\ \>(.*?)\<\/span\>#m','replace'=>'$1'));

认为我很接近,但不确定我需要调整什么,有什么建议吗?

卡鲁

1 个答案:

答案 0 :(得分:0)

您在代码“GINGER_SOFTAWARE”中没有“GINGER_SOFTWARE”。我认为这是问题 - 如果这不起作用,请对此进行评论,以便我进一步深入研究。

- 编辑 -

然后可能尝试使用RegExp删除所有类,如果类是正确的:

\<span class\=\"GINGER_SOFTWARE_mark\" ([^>]*)\>(.*?)\<\/span\>