2013-12-09 54 views
1

我试图剥离Chrome插件添加到我们的WordPress帖子的标签。PCRE正则表达式/ WordPress的/剥离标签

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

我的确发现了一个晦涩的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')); 

认为我接近,但不知道我需要调整,有什么建议?

卡鲁

+0

删除评论 – Karu

回答

0

你有码 “GINGER_SOFTAWARE” 而不是 “GINGER_SOFTWARE”。我认为这是问题 - 如果这不起作用,请评论这个,所以我会进一步深入探讨。

- 编辑 -

那么也许尝试使用正则表达式如果类是正确的这样的事情,消除一切:

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

Lashus嗨, 感谢您抽空看看不幸的是,旧的标签有错字,新的没有。在处理十六进制ID的正则表达式之前,我尝试的第一件事是纠正它,然后我意识到他们已经开始给每个span标签一个唯一的标识符。 我已经C + P直接从一块HTML的新标签样式,所以它代表了我想要解决的问题。 Karu – Karu