如何从iframe获取ID?

时间:2014-06-24 04:21:04

标签: php iframe youtube

我想从iframe获取youtube id。并使用此链接进行此链接here

给出的正则表达式

我正在使用此代码,但得到数组(0){}结果。这是代码:

`

    preg_match('/src="\/\/(?:https?:\/\/)?.*\/(.*?)\?rel=\d*"/',$urldd, $matches);

     var_dump($matches);
        echo $matches[0][0];`

我使用preg_match很差,所以任何人都可以帮助我正确地从iframe获取youtube id。

1 个答案:

答案 0 :(得分:2)

或者,您也可以使用DOMDocument获取该特定网址,然后使用parse_url()。示例代码:

$html = '<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$iframe = $dom->getElementsByTagName('iframe');
$url = '';
foreach($iframe as $tag) {
    $url = $tag->getAttribute('src');
}
$output = parse_url($url, PHP_URL_PATH);
$pieces = array_filter(explode('/', $output));
$id = end($pieces);

// Should output 0gugBiEkLwU

如果你坚持使用正则表达式,你可以这样做:

$pattern = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=‌​(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
$html = '<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>';
preg_match($pattern, $html, $matches);
$url = reset($matches);
$url = strtok($url, '?');
echo $url; // 0gugBiEkLwU