2014-06-24 4 views
1

Я tring, чтобы получить идентификатор youtube из iframe. И используя эту ссылку для регулярного выражения, заданного по этой ссылке hereКак получить идентификатор из iframe?

Я использую этот код, но получаю массив (0) {} result. Вот код:

`

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

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

Я беден в использовании preg_match поэтому, пожалуйста, может кто-нибудь помочь мне получить идентификатор YouTube из фрейма правильно.

ответ

2

В качестве альтернативы вы также можете использовать DOMDocument для получения этого URL-адреса, а затем использовать 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 
+0

Thankyou ... Вы сделали это так easy..Thanks снова – user3739733

+0

Но мне нужно решение для preg_match чтобы узнать мои знания .. – user3739733

+0

@ user3739733 вы также можете использовать preg_match, если вы настаиваете –

Смежные вопросы