簡體   English   中英

PCRE正則表達式/ WordPress /剝離標簽

[英]PCRE Regex / WordPress / stripping tags

我正在嘗試剝離Chrome插件已添加到我們WordPress帖子中的標簽。

Ginger Software的拼寫和語法檢查器( https://chrome.google.com/webstore/detail/spell-checker-and-grammar/kdfieneakcjfaiglcfcgkidlkmlijjnh?hl=zh-CN )會更改HTML的背景,並使頁面亂碼亂七八糟class =“ GINGER_SOFTWARE_mark”的標簽。

我確實找到了一個晦澀的WordPress插件來剝離這些插件,但是自從他們更新了Chrome擴展程序之后,由於標簽格式的更改,它就不再起作用了,作者改用了AWOL,所以我一直在努力自己更新插件,我已經接近了,但需要一臂之力才能通過最后階段。

這是我要剝離的標簽的示例:

<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_SOFTWARE”。 我認為這是問題所在-如果無法解決問題,請對此發表評論,以便我進一步探討。

-編輯-

然后,如果類正確,則嘗試使用RegExp刪除所有內容,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM