최신글에서 링크1의 값을 파싱(?) 하는 방법 질문입니다.

최신글에서 링크1의 값을 파싱(?) 하는 방법 질문입니다.

QA

최신글에서 링크1의 값을 파싱(?) 하는 방법 질문입니다.

답변 2

본문

최신글에서 유투브가 바로 플레이 되는 스킨을 수정하려고 합니다

http://sir.kr/g5_skin/11619 

=================================================

 

 

wr_link1 에다가 

 

유투브 주소 https://www.youtube.com/watch?v=npttud7NkL0  를 입력하면

 

videoid 인  npttud7NkL0 를 추출해서 사용하려고 구글 검색을 하다보니까

 


function youtubeLinkParser(url) {
    var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
    var match = url.match(regExp);
    if (match && match[2].length == 11) {
        return match[2];
    } else {
        return null;
    }
 
}

 

위와 같은 스크립트를 쓰면 되는거 같더군요 

(http://stackoverflow.com/questions/18268233/get-youtube-video-id-from-link-with-javascript)

 

 

그래서.....

 

videoid 값이 제대로 추출되는지 보려고 latest.skin.php 에다가

 


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
 
?>
 
<script>
function youtubeLinkParser(url) {
    var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
    var match = url.match(regExp);
    if (match && match[2].length == 11) {
        return match[2];
    } else {
        return null;
    }
}
</script>
 
 
 
<!-- 최신글 시작 -->
 
<div>
  
    <?php for ($i = 0; $i < count($list); $i++) {
    $url = $list[$i]['wr_link1'];
    $video_id = youtubeLinkParser($url) 
    ?> 
    <div style="position:relative">
 
 
  <?php echo $video_id; ?>
 
    </div>   
    <?php }  ?>
    
    <?php if (count($list) == 0) { //게시물이 없을 때  ?>
    <li>게시물이 없습니다.</li>
    <?php }  ?>
 
</div>

 

 

...이렇게 해봤는데

 

fatal error: Call to undefined function youtubeLinkParser() in /latest.skin.php on line 29 

 

에러가 납니다...

 

 $video_id = youtubeLinkParser($url)  가 아마도 말도 안되는 방법인거 같은데요.... (문법 모릅니다 ;;;)  

 

어떻게 처리를 해야 할까요?

 

 

 

이 질문에 댓글 쓰기 :

답변 2

처리방안#2


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
 
?> <!-- 최신글 시작 -->
 
<div>
  
    <?php for ($i = 0; $i < count($list); $i++) {
    $url = $list[$i]['wr_link1'];
    // 유투브 링크 파싱
     if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
           $video_id = $match[1];
     }     ?> 
    <div style="position:relative">
 
 
  <?php echo $video_id; ?>
 
    </div>   
    <?php }  ?>
    
    <?php if (count($list) == 0) { //게시물이 없을 때  ?>
    <li>게시물이 없습니다.</li>
    <?php }  ?>
 
</div>

 

처리방안 #1

// 27번째줄 ~ 37번째줄까지
<?php for($i=0; $i<count($list); $i++) {
       $url = $list[$i]['wr_link1'];
?> 
<div style="position:relative">
    <script type="text/javascript">
    var video_id = youtubeLinkParser("<?php echo $url?>"); 
    document.write( video_id );
    </script>
</div>
<?php } ?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,119
© SIRSOFT
현재 페이지 제일 처음으로