strip изображения из get_the_content () удаляет теги <p>

Я пытаюсь удалить все изображения и окружающий тег <a> из get_the_content() с помощью этого фрагмента кода:

 <?php $content = get_the_content(); $postOutput = preg_replace(array('{<a[^>]*><img[^>]+.}','{></a>}'),'', $content); echo $postOutput; ?> 

Это хорошо работает, за исключением тегов <p> вокруг абзацев.
1. Является ли это нормальным при использовании get_the_content() ?
2. и как я могу добавить их к моему результату?
3. Или мое регулярное выражение ошибочно?

Хорошо, я отвечу на свои вопросы:

  1. Да, это нормально, что нет <p> на get_the_content() благодаря @s_ha_dum
  2. Чтобы добавить <p> мне нужно применить фильтр содержимого, как указано здесь (прокрутите вниз до «Альтернативное использование»).
  3. Регулярное выражение не является неправильным, но довольно грязно для регулярного выражения html. Спасибо @MarcB

См. Новый вопрос, который приводит к следующему коду здесь.

 $dom = new DOMDocument; $dom->loadHTML(get_the_content()); $xpath = new DOMXPath($dom); $nodes = $xpath->query('//img|//a[img]'); foreach($nodes as $node) { $node->parentNode->removeChild($node); } $no_image_content = $dom->saveHTML(); $no_image_content = apply_filters('the_content', $no_image_content); $no_image_content = str_replace(']]>', ']]&gt;', $no_image_content); echo $no_image_content;