Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何查找子字符串并删除周围的P标记_Php_Regex_Wordpress_Youtube - Fatal编程技术网

Php 如何查找子字符串并删除周围的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

Wordpress很棒,但它有一个非常讨厌的习惯,就是到处添加段落标记

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

因此,我想实现一个过滤器,读取帖子的完整内容,查找youtube URL,并从中去除周围的p标记

例如,我有:

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' );
请参阅官方网站的更多信息。
还有一个更好的调整方法