2013-04-28 3 views
0

Я woud хотел бы получить последнюю часть URL Youtube из кода встраивания, таких как:Получить последнюю часть URL из 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 и ничего больше.

Есть ли другой подход, который я могу использовать?

+1

Используйте '$ разобранном [4]', и взять его там? ('' .. и остальное' все еще там). Или используйте парсер DOM, получите атрибут, выведите часть пути из URL-адреса и взорвите это. – Wrikken

ответ

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]; 
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 
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>, то вы можете использовать следующие re горловой выражение

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

Если формат URL всегда это то почему бы не использовать:

$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