Фильтрация HTML-тегов не работает с preg_replace - PullRequest
0 голосов
/ 16 октября 2018

У меня есть несколько постов, в которых (в фактическом тексте поста на бэкэнде) есть несколько ошибочных <strong> </strong> записей.Я пытаюсь отфильтровать их перед отображением в виде HTML.(Обратите внимание, что у меня также есть правильные теги, например <strong>This Is a Title</strong>, которые мне нужно сохранить).

Я создал фильтр, но не могу заставить полосу работать:

add_filter( 'the_content', 'filter_test');
function filter_test($content){
  global $post;
  $post_slug = $post->post_name;
  if (get_post_type() == "post" && $post_slug != "allposts") {
    $content = preg_replace("/<strong>\s+<\/strong>/",'',$content); // THIS LINE
    $content = preg_replace("/&nbsp;|^\s*$/",'',$content);
    return $content;
  }
  return $content;
}

По-прежнему остается в «пустых» тегах <strong>.Насколько я могу судить, у меня есть правильный шаблон регулярных выражений, <strong>\s+<\/strong> (и добавил / вокруг этого, так как это похоже на путь PHP).

Как я могу удалить /отфильтровать пустых тегов (<strong> </strong>), но оставить «заполненных» (<strong>Words here</strong>)?

Редактировать: Снимок некоторого HTML-кода при визуализации страницы:

<p>USA is a country</p>
<p><strong> </strong></p>
<p><strong>then there are some words here.</strong></p>
<p><strong> </strong></p>

Я пытаюсь удалить вторую и четвертую строку в этом.Теперь я вижу, что технически я хочу удалить пустой <p></p>, но ожидаемое решение подойдет для любого тега HTML.

1 Ответ

0 голосов
/ 16 октября 2018

Попробуйте str_replace

add_filter( 'the_content', 'filter_test');
function filter_test($content){
    global $post;
    $post_slug = $post->post_name;
    if (get_post_type() === 'post' && $post_slug != 'allposts') {
        $content = str_replace(array(<strong></strong>","<strong> </strong>"),'',$content); // THIS LINE
        $content = preg_replace("/&nbsp;|^\s*$/",'',$content);
        return $content;
    }
    return $content;
}

Удалит в содержании следующее:

<strong></strong>
<strong> </strong>
...