질문/조언질답게시판

안녕하세요.

현재 mytube 애드온을 잘 사용하고 있습니다.

그런데 채널링크를 넣으니 게시판에 오류가 발생하여 유튜브 링크를 추출하는 정규식까지 문의를 드리게 되었습니다.

 

다운로드.png

 

스샷은 오류 화면입니다.

유튜브 링크는 잘 나오는데, 채널링크까지 유튜브로 인식해서 오류가 나옵니다.

 

 

mytube 애드온에 있는 정규식은 아래와 같습니다.

 

//유튜브 url과 video id 추출하는 정규식
private static $youtube_id_pattern = '~(?:http|https|)(?::\/\/|)(?:www.|)?(?:music\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[a-z0-9;:@#?&%=+\/\$_.-]*~i';


private static $youtube_pattern = '%(?:https?:\/\/)?(?:www\.)?(?:music\.)?(?:m\.)?(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/= ]{11})%i';

 

screenshot-regexr.com-2020.06.06-01_56_26.png

 

 

$youtube_id_pattern 에서 채널링크는 제외할 수 있는 방법이 어떻게 될까요?

정규식에서 channel 들어간 링크는 제외하는게 제일 빠를 것 같은데 헤딩하다가 포기하고 질문드립니다. ㅠ

  • profile
    (?:http|https|)(?::\/\/|)(?:www.|)?(?:music\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com(?!\/channel)(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[a-z0-9;:@#?&%=+\/\$_.-]*

    (?!\/channel) 말씀하시는 것 같네요
  • profile profile
    regexr.com/566pn

    감사합니다. 의도대로 잘 되네요. ^^
  • profile
    private static $youtube_id_pattern = '~(?:http|https|)(?::\/\/|)(?:www.|)?(?:music\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|(?!\/channel\/)\S*[^\w\-\s]))([\w\-]{11})[a-z0-9;:@#?&%=+\/\$_.-]*~i';

     

    이렇게 한 번 해보시겠어요? 

     

    음 그리고 두번째 정규식은 오류가 있네요. / 이건 \/ 이렇게 이스케이프 문자로 표시해야 합니다.

    (?:https?:\/\/)?(?:www\.)?(?:music\.)?(?:m\.)?(?:youtube(?:-nocookie)?\.com\/([^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/= ]{11})

  • profile profile
    regexr.com/566q0
    잘 되네요. 감사합니다. ^^