Шаблон RegEx для получения идентификатора видео YouTube с любого URL YouTube

Давайте возьмем эти URL в качестве примера:

http://www.youtube.com/watch?v=8GqqjVXhfMU&feature=youtube_gdata_playerhttp://www.youtube.com/watch?v=8GqqjVXhfMU

Эта функция PHP НЕ будет правильно получать идентификатор в случае 1, но будет в случае 2. Случай 1 очень распространен, когда НИЧЕГО может быть за идентификатором YouTube.

/**
 * get YouTube video ID from URL
 *
 * @param string $url
 * @return string YouTube video id or FALSE if none found. 
 */
function youtube_id_from_url($url) {
    $pattern = 
        '%^# Match any YouTube URL
        (?:https?://)?  # Optional scheme. Either http or https
        (?:www\.)?      # Optional www subdomain
        (?:             # Group host alternatives
          youtu\.be/    # Either youtu.be,
        | youtube\.com  # or youtube.com
          (?:           # Group path alternatives
            /embed/     # Either /embed/
          | /v/         # or /v/
          | /watch\?v=  # or /watch\?v=
          )             # End path alternatives.
        )               # End host alternatives.
        ([\w-]{10,12})  # Allow 10-12 for 11 char YouTube id.
        $%x'
        ;
    $result = preg_match($pattern, $url, $matches);
    if (false !== $result) {
        return $matches[1];
    }
    return false;
}

Я думаю, что должен быть способ, которым я могу просто найти «v =», независимо от того, где он находится в URL, и взять символы после этого. Таким образом, никаких сложных RegEx не потребуется. Это с базы? Есть идеи для отправных точек?

Ответы на вопрос(9)

Ваш ответ на вопрос