Регулярное выражение для разбора встроенного кода YouTube - PullRequest
1 голос
/ 10 марта 2010

Как я могу взять встроенный код YouTube, который предоставляет YouTube, и использовать регулярное выражение для преобразования его в действительный код FBML, то есть использовать тег fb:swf?

Итак, регулярное выражение, которое я придумал:

preg_replace('/<object(.*)<\/object>/i', "Whatever I need here...", $str);

Я знаю, что это отстой, но это моя первая попытка.

PS: пример встроенного кода YouTube,

<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/NWHfY_lvKIQ&hl=en_GB&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NWHfY_lvKIQ&hl=en_GB&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>

Ответы [ 2 ]

0 голосов
/ 10 марта 2010

Насколько я понял, вы хотите собрать URL видео из встроенного кода, а затем сделать свое дело и получить с ним все, что захотите.

Предполагая, что во всем встроенном коде будет только два URL-адреса (источник и значение) и что в URL-адресах нет кавычек (по крайней мере, на YouTube), регулярное выражение, которое я использовал бы для получения URL-адреса:

[^(src=")]http.*[^"]

Объяснение: http, которому не предшествует 'src = "', получается до тех пор, пока не появится кавычка.

0 голосов
/ 10 марта 2010

Я должен был сделать это только на днях. Вот функция, которую я написал, чтобы получить идентификаторы клипов в строке / вводе и поместить их в массив (который вы можете вставить во встроенный объект):

preg_match_all('/\/vi?\/([A-Za-z0-9\+_-]+)/i', $str_containing_yt_ids, $yt_ids);

тогда

print_r($yt_ids);

и если вам нужно динамически получать заголовки:

function get_yt_title($clip_id){
    $feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $clip_id;
    $entry = simplexml_load_file($feedURL);
    $video= new stdClass;
    $media = $entry->children('http://search.yahoo.com/mrss/');
    $video->title = ucwords(strtolower($media->group->title));
    return $video->title;
}
...