Regexp, чтобы найти URL YouTube, удалить параметры и вернуть чистый видео URL? - PullRequest
1 голос
/ 12 февраля 2011

Эй, ребята, представьте себе этот URL:

http://www.youtube.com/watch?v=6n8PGnc_cV4&feature=rec-LGOUT-real_rn-2r-13-HM

что является самым чистым и лучшим регулярным выражением для следующих действий:

1.) Я хочу раздетьсяот каждой вещи после видео URL.так что остается только http://www.youtube.com/watch?v=6n8PGnc_cV4.

2.) Я хочу преобразовать этот URL в http://www.youtube.com/v/6n8PGnc_cV4

Поскольку я не так уж много регулярных выражений, мне нужна вашаhelp:

$content = preg_replace('http://.*?\?v=[^&]*', '', $content); 

return $content;

edit: проверить это!Я хочу создать действительно простой плагин Wordpress, который распознает каждый нормальный URL-адрес YouTube в моем контенте $ и заменяет его на код для вставки:

<?php
function videoplayer($content) {

    $embedcode = '<object class="video" width="308" height="100"><embed src="' . . '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="308" height="100" wmode="opaque"></embed></object>';

    //filter normal youtube url like http://www.youtube.com/watch?v=6n8PGnc_cV4&feature=rec-LGOUT-real_rn-2r-13-HM
    //convert it to http://www.youtube.com/v/6n8PGnc_cV4
    //use embedcode and pass along the new youtube url
    $content = preg_replace('', '', $content); 

    //return embedcode
    return $content;
}

add_filter('the_content', 'videoplayer');  
?>

Ответы [ 4 ]

0 голосов
/ 03 августа 2011

Редактировать: простейшее регулярное выражение: /http:\/\/www\.youtube\.com\/watch\?v=.*/

Все ссылки на Youtube одинаковы.Чтобы получить идентификатор видео из них, сначала вы отрежете лишние параметры с конца, а затем отрежете все, кроме последних 11 символов.Посмотрите его в действии:

$url = "http://www.youtube.com/watch?v=1rnfE4eo1bY&feature=...";
$url = $url.left(42); // "http://www.youtube.com/watch?v=1rnfE4eo1bY"
$url = $url.right(11); // "1rnfE4eo1bY"
$result = "http://www.youtube.com/v/" + $url; // "http://www.youtube.com/v/1rnfE4eo1bY"

Вы можете унифицировать все ваши ссылки на YouTube (удалив ненужные параметры) с помощью скрипта Greasemonkey: http://userscripts.org/scripts/show/86758. Скрипты Greasemonkey изначально поддерживаются в виде дополнений в Google Chrome.1009 *

И в качестве бонуса, один (ладно, на самом деле два) лайнер:

$url = "http://www.youtube.com/watch?v=1rnfE4eo1bY&feature=...";
$result = "http://www.youtube.com/v/" + $url.left(42).right(11);

- 3ICE

0 голосов
/ 12 февраля 2011

Вы можете просто разделить его на первый амперсанд.

$content = explode('&', $content);
$content = $content[0];
0 голосов
/ 12 февраля 2011
0 голосов
/ 12 февраля 2011

Я использую этот критерий поиска в своем скрипте:

/((http|ftp)\:\/\/)?([w]{3}\.)?(youtube\.)([a-z]{2,4})(\/watch\?v=)([a-zA-Z0-9_-]+)(\&feature=)?([a-zA-Z0-9_-]+)?/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...