Php 如何查找子字符串并删除周围的P标记
Wordpress很棒,但它有一个非常讨厌的习惯,就是到处添加段落标记 问题是,即使是youtube链接也被p标签包围。在这种情况下,它们不会被嵌入,而是一个链接,而不是一个可播放的视频。我尝试了各种方法来阻止wordpress添加P标签,但似乎没有任何效果 因此,我想实现一个过滤器,读取帖子的完整内容,查找youtube URL,并从中去除周围的p标记 例如,我有:Php 如何查找子字符串并删除周围的P标记,php,regex,wordpress,youtube,Php,Regex,Wordpress,Youtube,Wordpress很棒,但它有一个非常讨厌的习惯,就是到处添加段落标记 问题是,即使是youtube链接也被p标签包围。在这种情况下,它们不会被嵌入,而是一个链接,而不是一个可播放的视频。我尝试了各种方法来阻止wordpress添加P标签,但似乎没有任何效果 因此,我想实现一个过滤器,读取帖子的完整内容,查找youtube URL,并从中去除周围的p标记 例如,我有: add_filter('the_content','replace_content'); function replace_co
add_filter('the_content','replace_content');
function replace_content($content)
{
$content = str_replace('###replacement###', 'something_else',$content);
return $content;
}
$content包含完整内容。现在我需要在$content中查找被P标记包围的youtube URL。例如https://youtu.be/abcdefg
然后将p标签从其上撕下并放回原处
任何帮助都将不胜感激
谢谢
莫里斯简单,不太好的正则表达式,但它做到了
$content = preg_replace('#<p>(https?:\/\/youtu.+?)<\/p>#i', '$1',$content);
$content=preg\u replace(“#(https?:\/\/youtu.+?)#i',“$1',$content);
您可以轻松地将该功能一起删除,而不是在之后再摆弄正则表达式(不管怎样,它们都是在应用于DOM时使用的:)
在functions.php
中:
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
请参阅官方网站的更多信息。还有一个更好的调整方法