从Youtube嵌入代码中获取URL的最后一部分

时间:2013-04-28 19:16:45

标签: php

我想从嵌入代码中获取Youtube网址的最后一部分,例如:

<iframe width="420" height="315" src="http://www.youtube.com/embed/gaDa2Zgtqo" frameborder="0" allowfullscreen></iframe>

我想要获得的部分是gaDa2Zgtqo

我尝试过使用爆炸,例如

$string = '<iframe width="420" height="315" src="http://www.youtube.com/embed/gaDa2Zgtqo" frameborder="0" allowfullscreen></iframe>'
$exploded = explode('/', $string);
echo $exploded[2]

但这导致www.youtube.com而没有别的。

我可以使用另一种方法吗?

4 个答案:

答案 0 :(得分:2)

var_dump($exploded);为您提供以下信息:

array (size=6)
  0 => string '<iframe width="420" height="315" src="http:' (length=43)
  1 => string '' (length=0)
  2 => string 'www.youtube.com' (length=15)
  3 => string 'embed' (length=5)
  4 => string 'gaDa2Zgtqo" frameborder="0" allowfullscreen><' (length=45)
  5 => string 'iframe>' (length=7)

所以我们看到必要的字符串在数组的第5个元素中。我们需要它的前10个字符。

echo substr($exploded[4], 0, 10);
// gaDa2Zgtqo

答案 1 :(得分:2)

你可以试试正则表达式

$str = '<iframe width="420" height="315" src="http://www.youtube.com/embed/gaDa2Zgtqo" frameborder="0" allowfullscreen></iframe>';
preg_match_all('/src="[^"]+?\/([^\/"]+)"/', $str, $x);
var_dump($x);

将输出

Array
(
    [0] => Array
        (
            [0] => src="http://www.youtube.com/embed/gaDa2Zgtqo"
        )

    [1] => Array
        (
            [0] => gaDa2Zgtqo
        )
)  

所以您想要的字符串位于$x[1][0]

如果HTML字符串中有其他元素具有src属性,例如<img>,那么您可以使用以下正则表达式

preg_match_all('/<iframe[^>]+src="[^"]+?\/([^\/"]+)"/', $str, $x);

答案 2 :(得分:1)

如果网址格式始终如此,那么为什么不使用:

$string = '<iframe width="420" height="315" src="http://www.youtube.com/embed/gaDa2Zgtqo" frameborder="0" allowfullscreen></iframe>';
preg_match("/embed\/([a-zA-Z0-9\-]+)/", $string, $matches);
$id = $matches[1];
//$id = gaDa2Zgtqo

答案 3 :(得分:1)

使用此:

$string = '<iframe width="420" height="315" src="http://www.youtube.com/embed/gaDa2Zgtqo" frameborder="0" allowfullscreen></iframe>';
preg_match('/(?<=\/embed\/)[^"\']*/', $string,$matches);
echo $matches[0];