从段落标签中删除图像

时间:2016-12-27 23:51:13

标签: php wordpress

我有以下代码,它会删除blockquote并将我的WordPress帖子内容放在<p>标记中。

<?php
    $content = preg_replace('/<blockquote>(.*?)<\/blockquote>/', '', get_the_content());
    $content = wpautop($content); // Add paragraph-tags
    $content = str_replace('<p></p>', '', $content); // remove empty paragraphs
    echo $content;
?>

然而,它会将图片放在我不想要的<p>标签中

2 个答案:

答案 0 :(得分:1)

以下是一些应该执行此操作的代码(未经测试)。

<?php
    $content = preg_replace('/<blockquote>(.*?)<\/blockquote>/', '', get_the_content());
    $content = wpautop($content); // Add paragraph-tags
    $content = str_replace('<p></p>', '', $content); // remove empty paragraphs
    $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content); // remove paragraphs around img tags
    echo $content;
?>

答案 1 :(得分:0)

str_replace之后的行上,您可以使用此domDocument方法:

$dom = new domDocument;
$dom->loadHTML($content);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagname('img');
$removeList = array();
foreach ($images as $domElement) {
    $removeList[] = $domElement;
}
foreach ($removeList as $toRemove) {
    $toRemove->parentNode->removeChild($toRemove);
}
$content = $dom->saveHTML();

(ps:这也会给你一个非preg_replace方法,而不是真的很重要)