Ответы пользователя по тегу Регулярные выражения
  • Как подправить регулярку?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    videoId всегда содержит 11 символов и всегда будет заканчиваться одним из следующих символов:
    A, E, I, M, Q, U, Y, c, g, k, o, s, w, 0, 4, 8

    Таким образом, регулярное выражение (RegEx) для videoId будет выглядеть следующим образом:
    [\w-]{10}[AEIMQUYcgkosw048]{1}

    И так как вариантов ссылок на видеоролик может быть много, то не всегда подойдёт парсинг URL (parse_url, parse_str итп), поэтому лучше использовать регулярное выражение в этом случае

    function getVideoID ($url)
    {
    	preg_match("%^(?:https?://)?(?:www\.|m\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com(?:/watch\?v=|/watch/\?v=|/embed/|/v/))([\w-]{10}[048AEIMQUYcgkosw]{1})($|\S+).*$%x", $url, $matches);
    	return $matches[1] ?? "";
    }
    
    echo getVideoID("https://youtu.be/DBXH9jJRaDk?t=11");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/embed/DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk&t=30&feature=emb_logo");
    //DBXH9jJRaDk
    
    echo getVideoID("https://www.youtube.com/watch?v=DBXH9jJRaDk");
    //DBXH9jJRaDk
    
    echo getVideoID("https://m.youtube.com/watch?v=DBXH9jJRaDk&t=30");
    //DBXH9jJRaDk
    Ответ написан
    5 комментариев