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

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

QA

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

본문

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

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 } ?>
답변을 작성하시기 전에 로그인 해주세요.
전체 149
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT