Regex, чтобы получить идентификатор видео YouTube с полной <object> - PullRequest
1 голос
/ 03 ноября 2011

Я оглянулся, но не смог найти работающего (и недавнего) решения для этого.

Используя API, я получаю строку, подобную этой:

<object width="600" height="338">
    <param name="movie" value="http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed"></param>
    <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
    <embed src="http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed" type="application/x-shockwave-flash" width="600" height="338" allowscriptaccess="always" allowfullscreen="true"></embed>
</object>

Каким было бы регулярное выражение в PHP для извлечения только идентификатора видео? например ItT88H3nAWw

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Получить src параметр из embed тег БЕЗ регулярное выражение. Затем проанализируйте его следующим образом:

$youtubeUrl = 'http://www.youtube.com/v/ItT88H3nAWw?version=3&feature=oembed';

if ( preg_match('youtube\.\w+.*?v[/=](\w+)', $youtubeUrl, $matches) ) {
  $youtubeId = $matches[1];
}

Это регулярное выражение будет обрабатывать оба:

Для преобразования строки HTML в объект используйте SimpleXMLElement.

$obj = new SimpleXMLElement($htmlCode);
$youtubeUrl = $obj->embed->src;
0 голосов
/ 03 ноября 2011

Регулярное выражение .Используйте что-то вроде: getBetween ('www.youtube.com/v/', '? Version')

Хорошо, здесь другая версия.Предполагая, что $s является вашей строкой, а YouTube не меняет длину своего идентификатора:

$p = strpos($s, 'youtube.com/v/') + count('youtube.com/v/');
$id = substr($s, $p, count('ItT88H3nAWw') );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...