PHP Regex가 유튜브 비디오 ID를 얻습니까?
URL에 있는 다른 GET 변수와 상관없이 URL에서 유튜브 ID를 추출하는 방법을 누가 보여줄 수 있나요?
이 해 보세요.http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=related
ㅇㅇㅇㅇㅇㅇ 사이에서v=
다음 을 앞두고&
parse_url() 및 parse_str()을 사용합니다.
(regexes는 거의 모든 용도로 사용할 수 있지만 오류가 발생하기 쉬우므로 특별히 달성하려는 PHP 함수가 있다면 그것들을 사용하십시오.)
.이 배열로 작업하거나 두 번째 인수로 원하는 항목을 지정할 수 있습니다.즉 '어울릴 수 없다'에 관심이 PHP_URL_QUERY
.
그럼 입니다.v=C4kxS1ksqtw&feature=relate
그 다음 돼요.v=
에, 「 」를 해 주세요parse_str
으로 '아주 좋다'와 같이 동작합니다.GET
이 지정되고 됩니다.문자열을 사용하여 문자열에 지정된 변수를 만듭니다. 경우, 「 」$v
★★★★★★★★★★★★★★★★★」$feature
작성됩니다.저희는 단지$v
.
, 단지 해 두는 것은 .parse_url
(순간의 코멘트)대신 변수를 배열의 요소로 저장하여 저장하는 변수를 제어할 수 있으며 실수로 기존 변수를 덮어쓰지 않도록 합니다.
모든 것을 종합하면, 다음과 같은 것이 있습니다.
<?php
$url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=relate";
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
echo $my_array_of_vars['v'];
// Output: C4kxS1ksqtw
?>
편집:
헤헤 - 고마워 찰스자윈스키의 인용구를 본 적이 없어서 웃었어요.
Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.
– 제이미 자윈스키
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $url, $matches);
이것으로 설명할 수 있습니다.
youtube.com/v/{vidid}
youtube.com/vi/{vidid}
youtube.com/?v={vidid}
youtube.com/?vi={vidid}
youtube.com/watch?v={vidid}
youtube.com/watch?vi={vidid}
youtu.be/{vidid}
서포트하기 위해서 약간 개선했습니다.http://www.youtube.com/v/5xADESocujo?feature=autoshare&version=3&autohide=1&autoplay=1
현재 사용하고 있는 회선은 다음과 같습니다.
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $link, $matches);
앤서니의 답변에 대한 bokor의 코멘트를 바탕으로:
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches);
$matches[1]
되어 있습니다.
일치:
- youtube.com/v/vidid
- youtube.com/vi/vidid
- youtube.com/?v=vidid
- youtube.com/?vi=vidid
- youtube.com/watch?v=vidid
- youtube.com/watch?vi=vidid
- youtu.be/vidid
- youtube.com/embed/vidid
- http://youtube.com/v/vidid
- http://www.youtube.com/v/vidid
- https://www.youtube.com/v/vidid
- youtube.com/watch?v=vidid&wtv=wtv
- http://www.youtube.com/watch?dev=inprogress&v=vidid&feature=related
- https://m.youtube.com/watch?v=vidid
- youtube.com/shorts/vidid
일치하지 않음:
이것은 parse_str과 parse_url을 사용하여 매우 쉽게 달성할 수 있으며, 제 생각에 더 신뢰할 수 있습니다.
내 함수는 다음 URL을 지원합니다.
- http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player
- http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player
- http://youtube.com/?v=dQw4w9WgXcQ&feature=feature_gdata_player
- http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtube.com/?vi=dQw4w9WgXcQ&feature=module_gdata_player
- http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
- http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player
또한 기능 아래에 있는 테스트도 포함합니다.
/**
* Get Youtube video ID from URL
*
* @param string $url
* @return mixed Youtube video ID or FALSE if not found
*/
function getYoutubeIdFromUrl($url) {
$parts = parse_url($url);
if(isset($parts['query'])){
parse_str($parts['query'], $qs);
if(isset($qs['v'])){
return $qs['v'];
}else if(isset($qs['vi'])){
return $qs['vi'];
}
}
if(isset($parts['path'])){
$path = explode('/', trim($parts['path'], '/'));
return $path[count($path)-1];
}
return false;
}
// Test
$urls = array(
'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
);
foreach($urls as $url){
echo $url . ' : ' . getYoutubeIdFromUrl($url) . "\n";
}
SOLTUION 모든 링크 유형!!:
<?php
function get_youtube_id_from_url($url) {
preg_match('/(http(s|):|)\/\/(www\.|)yout(.*?)\/(embed\/|watch.*?v=|)([a-z_A-Z0-9\-]{11})/i', $url, $results); return $results[6];
}
echo get_youtube_id_from_url('http://www.youtube.com/watch?var1=blabla#v=GvJehZx3eQ1$var2=bla');
// or http://youtu.be/GvJehZx3eQ1
// or http://www.youtube.com/embed/GvJehZx3eQ1
// or http://www.youtu.be/GvJehZx3eQ1/blabla?xyz
?>
출력: GvJehZx3eQ1
유튜브 비디오 ID를 검증하는 방법에 따라 수정할 수 있습니까?
<?php
$links = [
"youtube.com/v/tFad5gHoBjY",
"youtube.com/vi/tFad5gHoBjY",
"youtube.com/?v=tFad5gHoBjY",
"youtube.com/?vi=tFad5gHoBjY",
"youtube.com/watch?v=tFad5gHoBjY",
"youtube.com/watch?vi=tFad5gHoBjY",
"youtu.be/tFad5gHoBjY",
"http://youtu.be/qokEYBNWA_0?t=30m26s",
"youtube.com/v/vidid",
"youtube.com/vi/vidid",
"youtube.com/?v=vidid",
"youtube.com/?vi=vidid",
"youtube.com/watch?v=vidid",
"youtube.com/watch?vi=vidid",
"youtu.be/vidid",
"youtube.com/embed/vidid",
"http://youtube.com/v/vidid",
"http://www.youtube.com/v/vidid",
"https://www.youtube.com/v/vidid",
"youtube.com/watch?v=vidid&wtv=wtv",
"http://www.youtube.com/watch?dev=inprogress&v=vidid&feature=related",
"youtube.com/watch?v=7HCZvhRAk-M"
];
foreach($links as $link){
preg_match("#([\/|\?|&]vi?[\/|=]|youtu\.be\/|embed\/)([a-zA-Z0-9_-]+)#", $link, $matches);
var_dump(end($matches));
}
다음은 모든 Youtube 링크에 적용됩니다.
<?php
// Here is a sample of the URLs this regex matches: (there can be more content after the given URL that will be ignored)
// http://youtu.be/dQw4w9WgXcQ
// http://www.youtube.com/embed/dQw4w9WgXcQ
// http://www.youtube.com/watch?v=dQw4w9WgXcQ
// http://www.youtube.com/?v=dQw4w9WgXcQ
// http://www.youtube.com/v/dQw4w9WgXcQ
// http://www.youtube.com/e/dQw4w9WgXcQ
// http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ
// http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ
// http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ
// http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ
// It also works on the youtube-nocookie.com URL with the same above options.
// It will also pull the ID from the URL in an embed code (both iframe and object tags)
$url = "https://www.youtube.com/watch?v=v2_MLFVdlQM";
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
$youtube_id = $match[1];
echo $youtube_id;
?>
의 추출을 위해서id
캡처 그룹에서는 다음 표현식 또는 그 일부 도함수도 옵션이 될 수 있습니다.
(?im)\b(?:https?:\/\/)?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)\/(?:(?:\??v=?i?=?\/?)|watch\?vi?=|watch\?.*?&v=|embed\/|)([A-Z0-9_-]{11})\S*(?=\s|$)
데모
시험
$re = '/(?im)\b(?:https?:\/\/)?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)\/(?:(?:\??v=?i?=?\/?)|watch\?vi?=|watch\?.*?&v=|embed\/|)([A-Z0-9_-]{11})\S*(?=\s|$)/';
$str = 'http://youtube.com/v/tFad5gHoBjY
https://youtube.com/vi/tFad5gHoBjY
http://www.youtube.com/?v=tFad5gHoBjY
http://www.youtube.com/?vi=tFad5gHoBjY
https://www.youtube.com/watch?v=tFad5gHoBjY
youtube.com/watch?vi=tFad5gHoBjY
youtu.be/tFad5gHoBjY
http://youtu.be/qokEYBNWA_0?t=30m26s
youtube.com/v/7HCZvhRAk-M
youtube.com/vi/7HCZvhRAk-M
youtube.com/?v=7HCZvhRAk-M
youtube.com/?vi=7HCZvhRAk-M
youtube.com/watch?v=7HCZvhRAk-M
youtube.com/watch?vi=7HCZvhRAk-M
youtu.be/7HCZvhRAk-M
youtube.com/embed/7HCZvhRAk-M
http://youtube.com/v/7HCZvhRAk-M
http://www.youtube.com/v/7HCZvhRAk-M
https://www.youtube.com/v/7HCZvhRAk-M
youtube.com/watch?v=7HCZvhRAk-M&wtv=wtv
http://www.youtube.com/watch?dev=inprogress&v=7HCZvhRAk-M&feature=related
youtube.com/watch?v=7HCZvhRAk-M
http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player
http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player
http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
산출량
array(30) {
[0]=>
array(2) {
[0]=>
string(32) "http://youtube.com/v/tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[1]=>
array(2) {
[0]=>
string(34) "https://youtube.com/vi/tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[2]=>
array(2) {
[0]=>
string(37) "http://www.youtube.com/?v=tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[3]=>
array(2) {
[0]=>
string(38) "http://www.youtube.com/?vi=tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[4]=>
array(2) {
[0]=>
string(43) "https://www.youtube.com/watch?v=tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[5]=>
array(2) {
[0]=>
string(32) "youtube.com/watch?vi=tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[6]=>
array(2) {
[0]=>
string(20) "youtu.be/tFad5gHoBjY"
[1]=>
string(11) "tFad5gHoBjY"
}
[7]=>
array(2) {
[0]=>
string(27) "http://youtu.be/qokEYBNWA_0"
[1]=>
string(11) "qokEYBNWA_0"
}
[8]=>
array(2) {
[0]=>
string(25) "youtube.com/v/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[9]=>
array(2) {
[0]=>
string(26) "youtube.com/vi/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[10]=>
array(2) {
[0]=>
string(26) "youtube.com/?v=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[11]=>
array(2) {
[0]=>
string(27) "youtube.com/?vi=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[12]=>
array(2) {
[0]=>
string(31) "youtube.com/watch?v=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[13]=>
array(2) {
[0]=>
string(32) "youtube.com/watch?vi=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[14]=>
array(2) {
[0]=>
string(20) "youtu.be/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[15]=>
array(2) {
[0]=>
string(29) "youtube.com/embed/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[16]=>
array(2) {
[0]=>
string(32) "http://youtube.com/v/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[17]=>
array(2) {
[0]=>
string(36) "http://www.youtube.com/v/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[18]=>
array(2) {
[0]=>
string(37) "https://www.youtube.com/v/7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[19]=>
array(2) {
[0]=>
string(31) "youtube.com/watch?v=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[20]=>
array(2) {
[0]=>
string(57) "http://www.youtube.com/watch?dev=inprogress&v=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[21]=>
array(2) {
[0]=>
string(31) "youtube.com/watch?v=7HCZvhRAk-M"
[1]=>
string(11) "7HCZvhRAk-M"
}
[22]=>
array(2) {
[0]=>
string(32) "http://youtube.com/v/dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[23]=>
array(2) {
[0]=>
string(33) "http://youtube.com/vi/dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[24]=>
array(2) {
[0]=>
string(33) "http://youtube.com/?v=dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[25]=>
array(2) {
[0]=>
string(42) "http://www.youtube.com/watch?v=dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[26]=>
array(2) {
[0]=>
string(34) "http://youtube.com/?vi=dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[27]=>
array(2) {
[0]=>
string(38) "http://youtube.com/watch?v=dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[28]=>
array(2) {
[0]=>
string(39) "http://youtube.com/watch?vi=dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
[29]=>
array(2) {
[0]=>
string(27) "http://youtu.be/dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
}
}
표현식을 단순화/간단화/축소화하려면 regex101.com의 오른쪽 상단 패널에 설명되어 있습니다.원하는 경우 이 링크에서 샘플 입력과 일치하는 방법을 볼 수도 있습니다.
RegEx 회선
의 는 11 이며, 그 에 「ID」 「ID」 「11」, 「ID」 「11」, 「ID」가 수 있습니다.v=
★★★★★★★★★★★★★★★★★」vi=
★★★★★★★★★★★★★★★★★」v/
★★★★★★★★★★★★★★★★★」vi/
★★★★★★★★★★★★★★★★★」youtu.be/
가장 간단한 방법은 다음과 같습니다.
<?php
$youtube = 'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player
http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player
http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player
http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player';
preg_match_all("#(?<=v=|v\/|vi=|vi\/|youtu.be\/)[a-zA-Z0-9_-]{11}#", $youtube, $matches);
var_dump($matches[0]);
출력:
array(8) {
[0]=>
string(11) "dQw4w9WgXcQ"
[1]=>
string(11) "dQw4w9WgXcQ"
[2]=>
string(11) "dQw4w9WgXcQ"
[3]=>
string(11) "dQw4w9WgXcQ"
[4]=>
string(11) "dQw4w9WgXcQ"
[5]=>
string(11) "dQw4w9WgXcQ"
[6]=>
string(11) "dQw4w9WgXcQ"
[7]=>
string(11) "dQw4w9WgXcQ"
}
if (preg_match('![?&]{1}v=([^&]+)!', $url . '&', $m))
$video_id = $m[1];
(?<=\?v=)([a-zA-Z0-9_-]){11}
이것도 할 수 있을 거예요.
유튜브 아이디를 빼내기 위해 암호화해야 할 게시물이 몇 개 있었어요.그것은 공교롭게도 의 형태로 되어 있었다.<iframe>
유튜브가 제공하는 임베드 코드.
<iframe src="http://www.youtube.com/embed/Zpk8pMz_Kgw?rel=0" frameborder="0" width="620" height="360"></iframe>
@rob @rob rob 음 음 음 음 음 음 음 rob rob rob rob rob rob rob rob 。은 「」을 합니다.foreach
일치하는 것을 찾으면 루프하고 추가 보너스를 위해 유튜브에 있는 미리보기 이미지에 링크했습니다.Youtube의 URL입니다.
$pattern = '#(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+#';
preg_match_all($pattern, $post_content, $matches);
foreach ($matches as $match) {
$img = "<img src='http://img.youtube.com/vi/".str_replace('?rel=0','', $match[0])."/0.jpg' />";
break;
}
Rob 프로필 : https://stackoverflow.com/users/149615/rob
$vid = preg_replace('/^.*(\?|\&)v\=/', '', $url); // Strip all meuk before and including '?v=' or '&v='.
$vid = preg_replace('/[^\w\-\_].*$/', '', $vid); // Strip trailing meuk.
스레드 제목이 정규식을 사용하는 것을 의미한다는 것은 알지만, Zawinski의 인용문에 있듯이 정규식을 피하는 것이 가장 좋다고 생각합니다.대신 이 기능을 권장합니다.
function get_youtube_id($url)
{
if (strpos( $url,"v=") !== false)
{
return substr($url, strpos($url, "v=") + 2, 11);
}
elseif(strpos( $url,"embed/") !== false)
{
return substr($url, strpos($url, "embed/") + 6, 11);
}
}
YouTube 동영상의 ID는 URL 스타일에 관계없이 항상 같기 때문에 추천합니다.
http://www.youtube.com/watch?v=t_uW44Bsezg
http://www.youtube.com/watch?feature=endscreen&v=Id3xG4xnOfA&NR=1
- "그리고 "embedded/"라는 단어가 ID 앞에 있는 기타 ULR 형식...!"
임베디드 기기 및iframe
- ed 물건들.
다음 코드 사용:
$url = "http://www.youtube.com/watch?v=C4kxS1ksqtw&feature=related";
$parse = parse_url($url, PHP_URL_QUERY);
parse_str($parse, $output);
echo $output['watch'];
결과:C4kxS1ksqtw
http://snipplr.com/view/62238/get-youtube-video-id-very-robust/에서 온라인으로 확인했습니다.
function getYouTubeId($url) {
// Format all domains to http://domain for easier URL parsing
str_replace('https://', 'http://', $url);
if (!stristr($url, 'http://') && (strlen($url) != 11)) {
$url = 'http://' . $url;
}
$url = str_replace('http://www.', 'http://', $url);
if (strlen($url) == 11) {
$code = $url;
} else if (preg_match('/http:\/\/youtu.be/', $url)) {
$url = parse_url($url, PHP_URL_PATH);
$code = substr($url, 1, 11);
} else if (preg_match('/watch/', $url)) {
$arr = parse_url($url);
parse_str($url);
$code = isset($v) ? substr($v, 0, 11) : false;
} else if (preg_match('/http:\/\/youtube.com\/v/', $url)) {
$url = parse_url($url, PHP_URL_PATH);
$code = substr($url, 3, 11);
} else if (preg_match('/http:\/\/youtube.com\/embed/', $url, $matches)) {
$url = parse_url($url, PHP_URL_PATH);
$code = substr($url, 7, 11);
} else if (preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#", $url, $matches) ) {
$code = substr($matches[0], 0, 11);
} else {
$code = false;
}
if ($code && (strlen($code) < 11)) {
$code = false;
}
return $code;
}
Shawn의 답변 데이터를 사용했지만 정규식을 조금 줄이고 일반화했습니다.이 제품의 주요 차이점은 유효한 Youtube URL을 테스트하지 않고 비디오 ID만 찾는다는 것입니다.즉, 비디오 ID가 반환됩니다.www.facebook.com?wtv=youtube.com/v/vidid
모든 테스트 케이스에 대응하지만, 조금 느슨합니다.결과적으로, 다음과 같은 것에 대해 잘못된 양성이 출력됩니다.https://www.twitter.com/watch?v=vidid
데이터가 매우 일관성이 없는 경우 이 방법을 사용하고, 그렇지 않은 경우 보다 구체적인 regex 또는parse_url()
그리고.parse_str()
.
preg_match("/([\?&\/]vi?|embed|\.be)[\/=]([\w-]+)/",$url,$matches);
print($matches[2]);
난 네가 이걸 하려고 한다고 생각해.
<?php
$video = 'https://www.youtube.com/watch?v=u00FY9vADfQ';
$parsed_video = parse_url($video, PHP_URL_QUERY);
parse_str($parsed_video, $arr);
?>
<iframe
src="https://www.youtube.com/embed/<?php echo $arr['v']; ?>"
frameborder="0">
</iframe>
다른 캐릭터로 가득 찬 문자열에서 yourue URL을 추출하려면 어떻게 해야 하나요?다음과 같습니다.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporary ut dolore magna aliqua.Ut enim ad minim veniam, quis nostroud 운동 Ulamco https://www.youtube.com/watch?v=cPW9Y94BJI0 laboris nisi ut aliquip ea commodo 결과.Duis aute Irure dolor in reputerit in voluptate velit ese cillum dolore eu fugiat nulla pariatular.예외적으로 신트 오카에캣 큐피다트 비프로젝트, culpa qui officia deserunt mollit id est laborum.
그 문자열에서 https://www.youtube.com/watch?v=cPW9Y94BJI0을 얻을 수 있을까요?
언급URL : https://stackoverflow.com/questions/3392993/php-regex-to-get-youtube-video-id
'itsource' 카테고리의 다른 글
strcmp는 PHP의 정수(intcmp)와 동등합니다. (0) | 2023.01.19 |
---|---|
Java 11을 사용한 디버깅 중 "부트스트랩 클래스 경로가 추가되었기 때문에 공유는 부트 로더 클래스에 대해서만 지원됩니다" 경고를 피하는 방법 (0) | 2023.01.19 |
PHP에서 사용할 압축 방법을 선택하십시오. (0) | 2023.01.19 |
속성 값을 기준으로 개체 배열 정렬 (0) | 2023.01.19 |
Python에서는 @property decorator가 어떻게 동작합니까? (0) | 2023.01.19 |