RegEx patrón para obtener la identificación de video de YouTube desde cualquier URL de YouTube

Tomemos estas URL como ejemplo:

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

Esta función PHP NO obtendrá correctamente la ID en el caso 1, pero sí en el caso 2. El caso 1 es muy común, donde CUALQUIER COSA puede estar detrás de la ID de 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;
}

Lo que estoy pensando es que debe haber una forma en la que pueda buscar "v =", sin importar dónde se encuentre en la URL, y tomar los caracteres después de eso. De esta manera, no se necesitará un RegEx complejo. ¿Está esto fuera de la base? ¿Alguna idea para los puntos de partida?

Respuestas a la pregunta(18)

Su respuesta a la pregunta