如何查找子字符串并删除周围的P标记

时间:2016-03-05 18:01:37

标签: php regex wordpress youtube

Wordpress很棒,但它有一个非常讨厌的习惯,即在任何地方添加段落标记。

问题是即使是youtube链接也被P标签包围。在这种情况下,它们不会被嵌入,而是保持链接,而不是可播放的视频。我已经尝试了各种各样的东西来阻止wordpress添加P标签,但似乎没有任何效果。

所以我想实现一个过滤器,它会读取帖子的完整内容,找到youtube网址,并从中删除周围的P标记。

例如我有这个:

add_filter('the_content','replace_content');
function replace_content($content)
{
     $content = str_replace('###replacement###', 'something_else',$content);
     return $content;
}

$ content包含完整内容。现在我需要在$ content中找到由P标记包围的youtube网址。例如<p>https://youtu.be/abcdefg</p>

然后从中剥离P标签并将其放回原位。

非常感谢任何帮助。

感谢。

莫里斯

2 个答案:

答案 0 :(得分:0)

简单且不太好的正则表达式,但它可以解决问题

$content = preg_replace('#<p>(https?:\/\/youtu.+?)<\/p>#i', '$1',$content);

答案 1 :(得分:0)

您可以轻松地完全删除所有功能,而不是随后摆弄正则表达式(无论如何它们都是known to cause a significant loss in mental health :)

functions.php

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

查看有关官方Wordpress website的更多信息 还有plugin进行更精细的调整。