PCRE Regex/WordPress/剥离标签

PCRE Regex / WordPress / stripping tags

本文关键字:标签 剥离 WordPress PCRE Regex      更新时间:2024-05-24

我正试图剥离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'));

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

卡鲁

您的代码中有"GINGER_SOFTAWARE"而不是"GINGER_StOFTWARE"。我认为这就是问题所在——如果这不起作用,请对此发表评论,我将进一步探讨。

--编辑--

然后,如果类是正确的,可以尝试使用RegExp来删除所有内容,比如:

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