有人可以告诉我如何从 url 中获取 youtube id,而不管 URL 中还有哪些其他 GET 变量。
以该视频为例:http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=related
所以在 v=
和下一个 &
最佳答案
Use parse_url()和 parse_str() .
(您几乎可以将正则表达式用于任何事情,但它们很容易出错,因此如果有专门用于您想要完成的 PHP 函数,请使用它们。)
parse_url 接受一个字符串并将其分割成一个包含大量信息的数组。您可以使用此数组,也可以将所需的一项指定为第二个参数。在这种情况下,我们对查询感兴趣,即 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
?>
编辑:
呵呵 - 谢谢查尔斯。这让我发笑,我以前从未见过 Zawinski 的名言:
有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。
– 杰米·扎温斯基
关于PHP Regex 获取 youtube 视频 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392993/