我有以下代码,它会删除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>
标签中
答案 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
方法,而不是真的很重要)