PHP Regex 获取 youtube 视频 ID?

标签 php regex

有人可以告诉我如何从 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
?> 

Working example


编辑:

呵呵 - 谢谢查尔斯。这让我发笑,我以前从未见过 Zawinski 的名言:

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。杰米·扎温斯基

关于PHP Regex 获取 youtube 视频 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392993/

相关文章:

php - 带参数的 Cakephp 原始查询

java - 如何使用 java Apache Lucene 检索 PDF 文档中的正则表达式搜索字母数字文本?

javascript - 正则表达式 : Find a character unless it is surrounded by double quotes

java - 包含荷兰电话号码的正则表达式

java - Java (Android) 中的 Debug模式(正则表达式)失败

php - Laravel Query Builder 如何跳过并从最新到最旧的行?

php - 如何使用phpStorm从远程服务器删除文件

php - 在mysql数据库的一列中插入多个值

php - 在更改其位置的 div 框中包含 php

regex - 如果连续存在两个以上空格,请删除字符串中的空格