来自get_the_content()的条形图像也会删除<p>标记</p>

时间:2013-02-14 15:24:49

标签: php regex wordpress preg-replace

我正尝试使用以下代码从<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 个答案:

答案 0 :(得分:0)

好的,我会回答我自己的问题:

  1. 是的,<p> get_the_content()上没有<p>是正常的,谢谢@s_ha_dum
  2. 要添加$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; 我需要将内容过滤器应用为mentioned here(向下滚动到“其他用法”)。
  3. 正则表达式没有错,但正则表达式是非常脏的。谢谢@MarcB
  4. 查看导致以下代码here

    的新问题
    {{1}}