Вопросы:
- Могло бы кто-нибудь поможет мне исправить шаблон preg_match для обработки URL-адресов, прокомментированных в тестах?
- Есть ли какой-либо другой URL-адрес YouTube?
Этот preg_match может извлекать идентификатор видео и время начала, но не может обрабатывать множество различных форматов URL-адресов YouTube:
preg_match("/[a-zA-Z\/\/:\.]*youtu(?:be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)(?:[&?\/]t=)?(\d*)(?:[a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i", $url, $matches);
Этот preg_match обрабатывает множество разных URL-адресов YouTube (может быть, все виды?), но не извлекает время начала:
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches);
Я изменил его, и у меня все работает, но я знаю, что мое изменение неверно, потому что я неправильно анализирую конец URL-адреса:
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)(?:[&?\/]t=)?(\d*)/", $url, $matches);
Код
Подробнее здесь: https://stackoverflow.com/questions/793 ... start-time