谁能告诉我如何从URL中获取YouTube id,而不管URL中有哪些其他GET变量.

用这个视频举例:http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=related

推荐答案

Use parse_url()parse_str().

(几乎任何事情都可以使用正则表达式,但它们很容易出错,所以如果有专门用于您试图实现的PHP函数,请使用它们.)

parse_url接受一个字符串,并将其分割成一个包含大量信息的array.您可以使用此数组,也可以指定所需的一项作为第二个参数.在本例中,我们对查询感兴趣,即PHP_URL_QUERY.

现在我们有了查询,它是v=C4kxS1ksqtw&feature=relate,但我们只想要v=之后的部分.对于这一点,我们转向parse_str,它的工作原理基本上类似于一根弦上的GET.它接受一个字符串并创建字符串中指定的变量.在这种情况下,创建$v$feature.我们只对$v感兴趣.

为了安全起见,您不希望只将parse_url中的所有变量存储在名称空间中(参见mellowsoon的注释).而是将变量存储为数组的元素,这样您就可以控制要存储的变量,并且不会意外地覆盖现有变量.

把一切放在一起,我们有:

<?php
$url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=relate";
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
echo $my_array_of_vars['v'];    
  // Output: C4kxS1ksqtw
?> 

Working example


编辑:

呵呵-谢谢查尔斯.这让我发笑,我以前从未见过扎温斯基的名言:

100

Php相关问答推荐

PHP 8.3类型类常数-关闭

有条件的运费率基于购物车小计与WooPayments货币转换

PHP cUrl扩展与v8.2.12更新损坏

在函数内部获取一致的单选按钮值以更新WordPress用户数据

与会者在WooCommerce中按购物车项目数量自定义 checkout 字段

在WooCommerce中禁用特定日期之前的免费送货

我的邮箱中的链接在我的URL中添加了一个

从AJAX响应中获取一个未定义的html

在WordPress中从CPT中删除插件

Laravel 10.x在到达控制器之前将查询参数强制转换为正确的类型

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

打折时更改 Woocommerce 产品名称

Symfony:从控制器内部调用自定义命令

过滤会员计划标题和标签

循环中未序列化数组显示的问题

PHP 简单 XML Xpath 上移树(带有名称的父级)

使用现有的htaccess的PHP路由脚本

在WooCommerce单产品页面中显示特价产品的节省金额

WooCommerce 按 ID 限制产品

如何通过本地主机在同一台 PC 上同时运行 Microsoft IIS 和 WAMP