Regex для извлечения VID YouTube с URL-адресом "www.youtube/user/" - PullRequest
0 голосов
/ 17 января 2011

Прежде всего, я хочу сказать, что знаю, что есть куча связанных вопросов, но после того, как я попробовал решения, приведенные в этих темах, у меня все еще есть что-то, что не работает для моего кода ..

Мне нужно регулярное выражение для извлечения VID YouTube из этого определенного типа URL:

http://www.youtube.com/user/thedailyenglishshow#p/u/0/B3-Bn4aUXTY

Мой PHP-код и используемые шаблоны выглядят так:

public function retrieveUserVideo($data) {

  $url = $data;
  $pattern = '/[^\/]+$/';
  //$pattern = '(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+';
  preg_match($pattern, $url, $matches);
  $result = $matches[1];

  return $result;
 }

Я проверил эти шаблоны в 'http://gskinner.com/RegExr/',, и они, кажется, работают, но я получаю пустую строку результата с первым шаблоном, а со вторым я получаю неизвестный модификатор' ['error.Если я поставлю шаблон между '#', я получу результат пустой строки.

Есть идеи, что не так с показанным кодом?Пожалуйста, помогите мне, я действительно в отчаянии!

Ответы [ 2 ]

1 голос
/ 17 января 2011

Как насчет простого explode, чтобы получить последнюю часть?

public function retrieveUserVideo($data) {
    $parts = explode('/', $data);
    return end($parts);
}
1 голос
/ 17 января 2011

Вам понадобятся разделители регулярных выражений PHP вокруг вашего шаблона, чтобы это могло привести к вашим ошибкам.Но каковы ваши требования разбора для начала?Если вы просто смотрите, чтобы получить идентификатор видео, почему бы просто не захватить все символы после финального слэша?/\/([^\/]*)$/ вернет B3-Bn4aUXTY для $matches[1] в вашем примере.

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