【问题标题】:How to find substring and remove surrounding P tags如何查找子字符串并删除周围的 P 标签
【发布时间】:2016-06-19 11:11:54
【问题描述】:

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。例如<p>https://youtu.be/abcdefg</p>

然后去掉上面的P标签,放回去。

非常感谢任何帮助。

谢谢。

莫里斯

【问题讨论】:

    标签: php regex wordpress youtube


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以轻松地一起删除该功能,而不是事后摆弄正则表达式(无论如何应用到 DOM 时它们是 known to cause a significant loss in mental health :)

      在你的functions.php:

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

      更多信息见官方Wordpress website
      还有一个plugin 可以进行一些更精细的调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多