> 백엔드 개발 > PHP 튜토리얼 > 정규식을 사용하여 텍스트에서 YouTube 동영상 ID를 어떻게 추출할 수 있나요?

정규식을 사용하여 텍스트에서 YouTube 동영상 ID를 어떻게 추출할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-16 19:19:12
원래의
716명이 탐색했습니다.

How Can I Extract YouTube Video IDs from Text Using Regular Expressions?

정규 표현식을 사용하여 텍스트에서 YouTube 동영상 ID 찾기

목표는 모든 YouTube 동영상 URL을 식별하고 텍스트에서 해당 ID를 검색하는 것입니다. 필드. 정규 표현식은 이 작업을 수행하기 위한 강력한 도구를 제공합니다.

YouTube URL 형식 이해

YouTube URL은 다음과 같은 다양한 형식으로 제공됩니다.

  • 짧은 형식: https://youtu.be/NLqAF9hrVbY
  • iframe 삽입: https://www.youtube.com/embed/NLqAF9hrVbY
  • 보기 페이지: https://www.youtube.com/ watch?v=NLqAF9hrVbY

YouTube 동영상 ID 정규식 추출

다음은 이러한 모든 형식과 일치하고 YouTube 동영상 ID를 캡처하는 정규식입니다.

https?://(?:[0-9A-Z-]+\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*
로그인 후 복사

정규식 설명

  • https?://: URL의 구성표 부분과 일치합니다(HTTP 또는 HTTPS).
  • (?:[0-9A-Z-] .)?: 선택적 하위 도메인 부분(예: www.).
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?1) : YouTube 호스트 부분과 일치합니다. 여러 하위 도메인과 형식을 처리합니다.
  • ([w-]{11}): 정확히 11자의 영숫자와 문자로 구성된 YouTube 동영상 ID를 캡처합니다. 하이픈.
  • (?=2|$): ID 뒤의 다음 문자가 단어가 아닌 문자이거나 문자열의 끝.
  • (?![?=& %w.-](?:['"]3>|))[?=& %w.-] *: 사전 연결된 항목을 제외하는 부정적 예측 URL.

예제 코드

PHP에서는 다음 기능을 사용하여 비디오 URL을 링크로 바꿀 수 있습니다.

function linkifyYouTubeURLs($text) {
    $text = preg_replace('~(?#!js YouTubeId Rev:20160125_1800)
        # Match non-linked youtube URL in the wild. (Rev:20130823)
        https?://          # Required scheme. Either http or https.
        (?:[0-9A-Z-]+\.)?  # Optional subdomain.
        (?:                # Group host alternatives.
          youtu\.be/       # Either youtu.be,
        | youtube          # or youtube.com or
          (?:-nocookie)?   # youtube-nocookie.com
          \.com            # followed by
          \S*?             # Allow anything up to VIDEO_ID,
          [^\w\s-]         # but char before ID is non-ID char.
        )                  # End host alternatives.
        ([\w-]{11})        # : VIDEO_ID is exactly 11 chars.
        (?=[^\w-]|$)       # Assert next char is non-ID or EOS.
        (?!                # Assert URL is not pre-linked.
          [?=&amp;+%\w.-]*     # Allow URL (query) remainder.
          (?:              # Group pre-linked alternatives.
            [\'"][^<>]*>   # Either inside a start tag,
          | </a>           # or inside <a> element text contents.
          )                # End recognized pre-linked alts.
        )                  # End negative lookahead assertion.
        [?=&amp;+%\w.-]*       # Consume any URL (query) remainder.
        ~ix', '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>',
        $text);
    return $text;
}
로그인 후 복사

JavaScript에서 다음 코드는 유사한 작업을 수행합니다. 작업:

function linkifyYouTubeURLs(text) {
    var re = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*/ig;
    return text.replace(re, '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>');
}
로그인 후 복사

  1. ws-
  2. w-
  3. <>

위 내용은 정규식을 사용하여 텍스트에서 YouTube 동영상 ID를 어떻게 추출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿