📖
그누보드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를 받는 변수 입니다.

댓글목록

등록된 댓글이 없습니다.


자료 목록
번호 제목 날짜
173
🫧
04-17
📖
🫧
04-17
171
🫧
04-16
170
🫧
04-15
169
🫧
04-15
168
🫧
04-13
167
🫧
04-13
166
🫧
04-13
165
🫧
04-13
164
🫧
04-13
163
🫧
04-10
162
🫧
04-10
161
🫧
04-09
160
🫧
04-09
159
🫧
04-08

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.