2013-12-09 6 views
1

Я пытаюсь снять теги, добавленные аддоном Chrome в наши сообщения WordPress.PCRE Regex/WordPress/дескрипторы

Проверка правописания и грамматики программного обеспечения Ginger (https://chrome.google.com/webstore/detail/spell-checker-and-grammar/kdfieneakcjfaiglcfcgkidlkmlijjnh?hl=en) изменяет HTML за кулисами и оставляет страницу, замусоренную ложными метками span для класса = "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')); 

Думаю, что я близко, но не уверен, что мне нужно настроить, какие-либо предложения?

Кару

+0

удален комментарий здесь – Karu

ответ

0

Вы в коде "GINGER_SOFTAWARE" не "GINGER_SOFTWARE". Я думаю, что это проблема - если это не сработает, прокомментируйте это, поэтому я буду дальше погружаться в это.

- Edit -

Тогда, возможно, попробуйте использовать RegExp, который удаляет все, если класс правильно что-то вроде этого:

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

Привет Lashus, Спасибо за взглянуть , к сожалению, старые теги имели опечатку, а новые - нет. Первое, что я пробовал, прежде чем работать с регулярным выражением для шестнадцатеричного идентификатора, просто исправляло его, тогда я понял, что они начали давать каждому тегу span уникальный идентификатор. У меня C + P'd новый стиль тега непосредственно из фрагмента HTML, поэтому он репрезентативен тем, что я пытаюсь исправить. Karu – Karu

Смежные вопросы