📖
그누보드5 링크 중복 체크 + 유튜브 ID 추출 포함
페이지 정보
본문
[code]// 입력값 받기
$wr_1 = $_POST['wr_1'] ?? $_GET['wr_1'] ?? '';
$wr_1 = trim($wr_1);//앞뒤 공백을 제거
// 유튜브 비디오 ID 추출 함수
function extract_youtube_id($sosm) {
// 11자리 유튜브 비디오 ID만 입력된 경우 (예: abc123XYZ00)
if (!preg_match("/^https?:\/\//", $sosm) &&
!preg_match("/\.[a-zA-Z0-9]+$/", $sosm) && // URL이나 확장자 형식이 아니면
preg_match("/^[a-zA-Z0-9_-]{11}$/", $sosm)) { // 11자리 알파벳, 숫자, _ , - 로 이루어진 경우
return $sosm; // 비디오 ID 그대로 반환
}
// URL에서 비디오 ID 추출 (youtube.com, youtu.be, embed, shorts 등)
if (preg_match('/(?:youtu\.be\/|youtube\.com\/(?:watch\?v=|embed\/|shorts\/|v\/))([\w\-]{11})/', $sosm, $matches)) {
return $matches[1]; // ID만 반환
}
return false; // 유효하지 않으면 false 반환
}
// 유튜브 비디오 ID 추출
$video_id = extract_youtube_id($wr_1);
if ($video_id) {
// wr_1에 해당 유튜브 비디오 ID가 포함된 행이 있는지 확인
$row = sql_fetch("SELECT COUNT(*) as cnt FROM $write_table WHERE wr_1 LIKE '%$video_id%'");
if ($row['cnt']) {
alert("이미 등록된 유튜브 영상입니다.");
}
} else {
// 유튜브 비디오 ID가 아닌 경우에는 URL로 중복 체크
$row = sql_fetch("SELECT COUNT(*) as cnt FROM $write_table WHERE wr_1 = '$wr_1'");
if ($row['cnt']) {
alert("이미 존재하는 URL 입니다.");
}
}[/code]✅ 코드 설명:
$wr_1 처리: 사용자로부터 받은 입력값에서 양옆 공백을 제거하고, 그 값으로 유튜브 ID를 추출합니다.
extract_youtube_id() 함수:
11자리 ID일 경우 바로 반환.
유튜브 URL에서 비디오 ID를 추출.
ID 추출 실패시 false를 반환.
중복 체크:
유튜브 비디오 ID가 있을 경우, DB에서 해당 ID가 포함된 데이터가 있는지 확인.
ID가 없으면 URL을 그대로 DB에서 중복 체크.
$sosm의 값:
sosm은 extract_youtube_id() 함수 안에서 입력값을 받는 변수입니다. 즉, extract_youtube_id($sosm) 함수가 호출될 때 전달되는 인자 값이 바로 URL이나 비디오 ID값이 됩니다.
예를 들어, 아래처럼 함수를 호출할 때:[code]$video_id = extract_youtube_id($wr_1);[/code]여기서 $wr_1이 **$sosm**에 전달 됩니다.
**$sosm**은 extract_youtube_id() 함수에 입력값으로 전달되는 URL이나 비디오 ID를 받는 변수 입니다.
$wr_1 = $_POST['wr_1'] ?? $_GET['wr_1'] ?? '';
$wr_1 = trim($wr_1);//앞뒤 공백을 제거
// 유튜브 비디오 ID 추출 함수
function extract_youtube_id($sosm) {
// 11자리 유튜브 비디오 ID만 입력된 경우 (예: abc123XYZ00)
if (!preg_match("/^https?:\/\//", $sosm) &&
!preg_match("/\.[a-zA-Z0-9]+$/", $sosm) && // URL이나 확장자 형식이 아니면
preg_match("/^[a-zA-Z0-9_-]{11}$/", $sosm)) { // 11자리 알파벳, 숫자, _ , - 로 이루어진 경우
return $sosm; // 비디오 ID 그대로 반환
}
// URL에서 비디오 ID 추출 (youtube.com, youtu.be, embed, shorts 등)
if (preg_match('/(?:youtu\.be\/|youtube\.com\/(?:watch\?v=|embed\/|shorts\/|v\/))([\w\-]{11})/', $sosm, $matches)) {
return $matches[1]; // ID만 반환
}
return false; // 유효하지 않으면 false 반환
}
// 유튜브 비디오 ID 추출
$video_id = extract_youtube_id($wr_1);
if ($video_id) {
// wr_1에 해당 유튜브 비디오 ID가 포함된 행이 있는지 확인
$row = sql_fetch("SELECT COUNT(*) as cnt FROM $write_table WHERE wr_1 LIKE '%$video_id%'");
if ($row['cnt']) {
alert("이미 등록된 유튜브 영상입니다.");
}
} else {
// 유튜브 비디오 ID가 아닌 경우에는 URL로 중복 체크
$row = sql_fetch("SELECT COUNT(*) as cnt FROM $write_table WHERE wr_1 = '$wr_1'");
if ($row['cnt']) {
alert("이미 존재하는 URL 입니다.");
}
}[/code]✅ 코드 설명:
$wr_1 처리: 사용자로부터 받은 입력값에서 양옆 공백을 제거하고, 그 값으로 유튜브 ID를 추출합니다.
extract_youtube_id() 함수:
11자리 ID일 경우 바로 반환.
유튜브 URL에서 비디오 ID를 추출.
ID 추출 실패시 false를 반환.
중복 체크:
유튜브 비디오 ID가 있을 경우, DB에서 해당 ID가 포함된 데이터가 있는지 확인.
ID가 없으면 URL을 그대로 DB에서 중복 체크.
$sosm의 값:
sosm은 extract_youtube_id() 함수 안에서 입력값을 받는 변수입니다. 즉, extract_youtube_id($sosm) 함수가 호출될 때 전달되는 인자 값이 바로 URL이나 비디오 ID값이 됩니다.
예를 들어, 아래처럼 함수를 호출할 때:[code]$video_id = extract_youtube_id($wr_1);[/code]여기서 $wr_1이 **$sosm**에 전달 됩니다.
**$sosm**은 extract_youtube_id() 함수에 입력값으로 전달되는 URL이나 비디오 ID를 받는 변수 입니다.
댓글목록
등록된 댓글이 없습니다.
![]() ![]() |