gpt4 book ai didi

php - 获取所有 url 类型的 youtube id

转载 作者:行者123 更新时间:2023-12-04 05:08:24 25 4
gpt4 key购买 nike

以下代码适用于除 youtu.be 之外的所有 YouTube 域.一个例子是:http://www.youtube.com/watch?v=ZedLgAF9aEg会变成:ZedLgAF9aEg
我的问题是如何让它与 http://youtu.be/ZedLgAF9aEg 一起使用.
我对正则表达式不太熟悉,因此非常感谢您的帮助。我的代码是:

    $text = preg_replace("#[&\?].+$#", "", preg_replace("#http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)#i", "", $text)); }
$text = (htmlentities($text, ENT_QUOTES, 'UTF-8'));

再次感谢!

最佳答案

您的正则表达式似乎解决了现在的问题?我没有在 php 中尝试过,但它在我的编辑器中似乎运行良好。

正则表达式的第一部分 http://(?:www\.)?youtu\.?be(?:\.com)?/匹配 http://youtu.be/第二部分 (embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)|) 结尾这意味着它不匹配(使其成为可选)。换句话说,它会修剪掉 http://youtu.be/只留下身份证。

我想,一种更直观的编写方法是将整个分组设为可选,但据我所知,您的正则表达式已经解决了您的问题:

 #http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=)?#i

注意:您的正则表达式适用于 www.youtu.be.com域也是如此。它会被剥离,但如果您使用它来验证输入,则需要注意一些事项。

更新:

如果您只想匹配 [youtube][/youtube] 内的 url您可以使用的标签 look arounds .
类似的东西:
(?<=\[youtube\])(?:http://(?:www\.)?youtu\.?be(?:\.com)?/(?:embed/|watch\?v=|\?v=|v/|e/|[^\[]+/|watch.*v=)?)(?=.+\[/youtube\])

您可以通过制作 .+ 来进一步完善它。在前瞻中只匹配有效的 URL 字符等。

关于php - 获取所有 url 类型的 youtube id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15218718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com