Get youtube id for all url types(获取所有url类型的youtube id)
本文介绍了获取所有url类型的youtube id的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码适用于除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/
,仅保留id。
我想更直观的编写方法是将整个if分组设置为可选的,但据我所知,您的正则表达式已经解决了您的问题:
#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字符等方式进一步细化它。
这篇关于获取所有url类型的youtube id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:获取所有url类型的youtube id
基础教程推荐
猜你喜欢
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01