PHP - Как конвертировать URL YouTube с помощью Regex - PullRequest
0 голосов
/ 06 июня 2010

Как конвертировать приведенные ниже URL-адреса YouTube

$url1 = http://www.youtube.com/watch?v=136pEZcb1Y0&feature=fvhl
$url2 = http://www.youtube.com/watch?feature=fvhl&v=136pEZcb1Y0

в

 $url_embedded = http://www.youtube.com/v/136pEZcb1Y0

с использованием регулярных выражений?

Ответы [ 3 ]

5 голосов
/ 06 июня 2010

Вот пример решения:

PHP:

preg_replace('/.+(\?|&)v=([a-zA-Z0-9]+).*/', 'http://youtube.com/watch?v=$2', 'http://www.youtube.com/watch?v=136pEZcb1Y0&feature=fvhl');

Совпадение:

^.+(\?|&)v=([a-zA-Z0-9]+).*$

Заменить на:

http://youtube.com/watch?v=$2

Вот какэто работает: анализатор регулярных выражений .

2 голосов
/ 06 июня 2010

suicideducky ответит хорошо, но вы изменили требования. Попробуйте

preg_match($url1, "/v=(\w+)/", $matches);
$url_embedded = "http://www.youtube.com/v/" . $matches[1];

Если неправильная версия все еще была в кеше, я имел в виду $matches[1]!

1 голос
/ 06 июня 2010

добавить строку "http://www.youtube.com/watch/" к результату применения регулярного выражения "v = (\ w +)" к URL-адресу (ам) следует выполнить работу.

\ w указывает буквенно-цифровые символы (a-z, A-Z, 0-9 и _) и, таким образом, останавливается на &

ПРАВКА для обновленного вопроса. Мой подход кажется немного хакерским.

, поэтому получите результат применения регулярного выражения "v = (\ w +)" и затем примените регулярное выражение "(\ w +)" к нему. Затем добавьте к строке префикс "http://www.youtube.com/v/".

Подводя итог:

"http://www.youtube.com/v/" + ( result of "(\w+)" applies to the result of ( "v=(\w+)" applied to the origional url ) )

ВНОВЬ ИЗМЕНЕНО этот подход предполагает, что вы используете функцию регулярного выражения, которая соответствует подстроке вместо всей строки

Кроме того, версия MvanGeest превосходит мою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...