我想从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。
答案 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