我有一些帖子(在后端的实际帖子文本中)有一些错误的<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("/ |^\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标记。
答案 0 :(得分:1)
尝试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("/ |^\s*$/",'',$content);
return $content;
}
return $content;
}
将删除内容中的以下内容:
<strong></strong>
<strong> </strong>