Как конвертировать приведенные ниже 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
используя регулярные выражения?
Вот пример решения:
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
Вот как это работает: анализатор регулярных выражений .
Ответ suicideducky в порядке, но вы изменили требования. Пытаться
preg_match($url1, "/v=(\w+)/", $matches); $url_embedded = "http://www.youtube.com/v/" . $matches[1];
Если неправильная версия была кеширована, я имел в виду $matches[1]
!
добавьте строку « http://www.youtube.com/watch/ » к результату применения регулярного выражения «v = (\ w +)» к URL-адресу (-ам), чтобы выполнить задание.
\ w указывает буквенно-цифровые символы (az, AZ, 0-9 и _) и, таким образом,
EDIT для обновленного вопроса. Мой подход кажется немного хакерским.
поэтому получим результат применения регулярного выражения «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 ) )
EDITED AGAIN Этот подход предполагает, что вы используете функцию регулярного выражения, которая соответствует подстроке, а не всей строке
Кроме того, версия MvanGeest превосходит мою.