테스트 사이트 - 개발 중인 베타 버전입니다

게시판 링크 입력시 유튜브 동영상 출력 채택완료

tlsdlq 11개월 전 조회 2,195

안녕하세요!

 

게시판 글쓰기 화면에 링크를 총5개 입력하게끔 수정해놓았고

 

그 링크에 유튜브 링크를 입력하면 view 화면에 유튜브 화면이 뜨게 스킨을 이용하였습니다.

 

그런데 링크가 1개만 유튜브 영상이 나오고 나머지 4개는 화면이 아닌 링크로 화면이 나옵니다.

 

5개 링크 모두 유튜브 동영상이 바로 보이게끔 하는방법이 있을까요??

 

write.skin.php 코드

</strong></p>

<p><?php for ($i = 1; $is_link && $i <= 5; $i++) { ?></p>

<p>        <div class="bo_w_link write_div"></p>

<p>          <label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크</p>

<p>              #<?php echo $i ?></span></label></p>

<p>          <input type="text" name="wr_link<?php echo $i ?>" value="<?php if ($w == "u") {</p>

<p>                                                                      echo $write['wr_link' . $i];</p>

<p>                                                                    } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50"></p>

<p>        </div></p>

<p>      <?php } ?></p>

<p> </p>

<p><strong>
 

 

 

view.skin.php 코드

 

</strong></p>

<p><?php</p>

<p>        ## 저장된 주소값을 "/" 을 기준으로 나눈다.</p>

<p>        $youtube = explode("/", $view['wr_link1']);</p>

<p> </p>

<p>        ## 링크가 있다면 유튜브 출력</p>

<p>        if ($view['wr_link1']) {</p>

<p>          ## end() 함수로 마지막 배열값을 삽입</p>

<p>        ?></p>

<p>          <iframe src="<a href="https://www.youtube.com/embed/<?php" target="_blank" rel="noopener noreferrer">https://www.youtube.com/embed/<?php</a> echo end($youtube); ?>" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>

<p>        <?php } ?></p>

<p> </p>

<p> </p>

<p><strong>
 

 

 

 

http://sir.kr/data/editor/2411/2041395728_1731376617.5378.png" width="100%" />

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
11개월 전

</p>

<p><?php

    // 최대 5개의 링크를 배열로 저장

    $links = [

        $view['wr_link1'],

        $view['wr_link2'],

        $view['wr_link3'],

        $view['wr_link4'],

        $view['wr_link5']

    ];</p>

<p>    // 각 링크를 순회하며 iframe 생성

    foreach ($links as $link) {

        // 링크가 비어있지 않은지 확인

        if (!empty($link)) {

            // 링크를 "/" 기준으로 분할하여 마지막 부분(비디오 ID) 추출

            $youtubeParts = explode("/", $link);

            $videoId = end($youtubeParts);</p>

<p>            // YouTube 비디오 ID가 유효한지 간단히 확인 (길이 등)

            if (!empty($videoId) && strlen($videoId) === 11) { // YouTube 비디오 ID는 일반적으로 11자

                echo '<iframe width="560" height="315" src="<a href="https://www.youtube.com/embed/'" target="_blank" rel="noopener noreferrer">https://www.youtube.com/embed/'</a> . htmlspecialchars($videoId, ENT_QUOTES, 'UTF-8') . '" ';

                echo 'title="YouTube video player" frameborder="0" ';

                echo 'allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" ';

                echo 'allowfullscreen></iframe>';

                echo '
'; // 각 iframe 사이에 줄바꿈 추가

            }

        }

    }

?>

 </p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

t
tlsdlq
11개월 전
답변감사합니다!!
혹시 유튜브 id가 아닌 공유 링크로 출력이 가능하도록 변경가능한가요???
미니님a
11개월 전
[code]
<?php
// 최대 5개의 링크를 배열로 저장
$links = [
$view['wr_link1'],
$view['wr_link2'],
$view['wr_link3'],
$view['wr_link4'],
$view['wr_link5']
];

// 각 링크를 순회하며 iframe 생성
foreach ($links as $link) {
// 링크가 비어있지 않은지 확인
if (!empty($link)) {
// YouTube URL 패턴에 맞는지 확인하고 비디오 ID 추출
if (preg_match('/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([A-Za-z0-9_-]{11})/', $link, $matches)) {
$videoId = $matches[1]; // 추출된 비디오 ID

// iframe 출력
echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . htmlspecialchars($videoId, ENT_QUOTES, 'UTF-8') . '" ';
echo 'title="YouTube video player" frameborder="0" ';
echo 'allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" ';
echo 'allowfullscreen></iframe>';
echo '<br>'; // 각 iframe 사이에 줄바꿈 추가
} else {
echo '<p>유효하지 않은 YouTube 링크: ' . htmlspecialchars($link, ENT_QUOTES, 'UTF-8') . '</p>';
}
}
}
?>

[/code]
t
tlsdlq
11개월 전
너무너무 감사합니다~!!!!!!

댓글을 작성하려면 로그인이 필요합니다.

g
11개월 전

저도 도움되었습니다. 감사합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인