PHP preg_match для получения идентификатора YouTube с img.youtube.com тоже

0

Я реализовал функцию для захвата Youtube ID, и я использую регулярное выражение:

preg_match('%(?:youtube(?:-nocookie)?\.com/(?:(?:v|e(?:mbed)?)/|.*[?&]v=|[^/]+/.+/)|youtu\.‌​be/)([^"&?/ ]{11})%i', $sourceCode, $youtube)) 

Моя проблема заключается в том, что это выражение resular не захватывает идентификатор из URL-адреса, например: http://img.youtube.com/vi/Di9mW35zprs/0.jpg

Итак, как я могу изменить его для работы, поскольку он работает прямо сейчас, но, предоставив мне "Di9mQ35zprs" из URL-адреса " http://img.youtube.com/vi/Di9mW35zprs/0.jpg " тоже?

  • Есть много других вопросов, касающихся GRABBING YOUTUBE ID с PREG_MATCH, НО НЕСКОЛЬКО ОТ ИХ ОТВЕТОВ КАК ОТКЛЮЧИТЬ ИЗ URL http://img.youtube.com/vi/Di9mW35zprs/0.jpg ТОО.

Все, что я хочу достичь, это заменить мой текущий preg_match и включить его для захвата идентификатора youtube с URL-адресов http://img.youtube.com/vi/Di9mW35zprs/0.jpg.

Спасибо!

Теги:
youtube

2 ответа

0

Используйте parse_url() и взорваться() первым. Теперь ваше регулярное выражение выглядит так, как будто оно исходило из ада.

0

попробуйте использовать это:

 $videoId = preg_replace("/.*v[=i]\/?(\w+).*/", '\1', "http://img.youtube.com/vi/Di9mQ35zprs/0.jpg");

Функция вернет вам нужный идентификатор. Он должен работать с обоими типами URL, которые вы описали.

  • 0
    Это не работает!
  • 0
    Кажется, работает нормально: $videoId = preg_replace("/.*v[=i]\/?(\w+).*/", '\1', "http://img.youtube.com/vi/Di9mQ35zprs/0.jpg"); echo $videoId; //outputs Di9mQ35zprs и $videoId = preg_replace("/.*v[=i]\/?(\w+).*/", '\1', "https://www.youtube.com/watch?v=bhxXvEzVXXM"); echo $videoId; //outputs bhxXvEzVXXM

Ещё вопросы

Сообщество Overcoder
Наверх
Меню