글을 신규록/수정등록 할 때 전송된 내용을 parsing해서 저장하고 싶은데 어느 파일을 봐야할까요?

글을 신규록/수정등록 할 때 전송된 내용을 parsing해서 저장하고 싶은데 어느 파일을 봐야할까요?

QA

글을 신규록/수정등록 할 때 전송된 내용을 parsing해서 저장하고 싶은데 어느 파일을 봐야할까요?

본문

안녕하세요.

content에 입력한 글이

html 에디터에서 작성된 내용이 다음과 같은 텍스트가  전송됩니다.

내용 시작 ---->

<h1>김광석 너무아픈 사람이 아니었음을</h1>

https://www.youtube.com/watch?v=6OBUqiEeozc

 

<h1>잊어야 한다는 마음으로 </h1>

https://www.youtube.com/watch?v=hvDOUl_DikM

<-----내용끝

 

그런데 db에 저장할 때는  

 

db에 변경해서 저장하고 싶은 내용 시작 여기부터 -->

 

<h1>김광석 너무아픈 사람이 아니었음을</h1>

<div class="youtube_area"><iframe width="100%" height="100%" src="https://www.youtube.com/embed/6OBUqiEeozc" frameborder="0" allowfullscreen></iframe></div>

 

<h1>잊어야 한다는 마음으로 </h1>

<div class="youtube_area"><iframe width="100%" height="100%" src="https://www.youtube.com/embed/hvDOUl_DikM" frameborder="0" allowfullscreen></iframe></div>

 

<--여기까지 db에 변경해서 저장하고 싶은 내용 끝

 

그럼 wr_content가 넘어갈 때 유튜브주소를 파싱해서 id를 걸러내서 

iframe 태그를 붙여서 저장하고 싶은데......

 

bbs말고

skin폴더 내에서 insert나 update sql 실행전에 

parsing을 하려면 어떻게 하나요?

 

어느 파일에서 손봐야 할까요?

 

 

 

 

 

 

이 질문에 댓글 쓰기 :

답변 3

아래의 내용을 참고해보세요..

 

* write_update.php 수정

 

// 유튜브 URL을 iframe으로 변환하는 함수


function convert_youtube_to_iframe($content) {


    $pattern = '/__https?:\/\/(?:www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)__/i';
    $replacement = '<div class="youtube_area"><iframe width="100%" height="100%" src="https://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>';
    
    $content = preg_replace($pattern, $replacement, $content);
    
    $pattern2 = '/__https?:\/\/youtu\.be\/([a-zA-Z0-9_-]+)__/i';
    $content = preg_replace($pattern2, $replacement, $content);
    
    return $content;
}


$wr_content = convert_youtube_to_iframe($wr_content);

 

 

 

 

 

답변 정말 감사드려요.
그런데 write_update.php에서는 되는데
스킨폴더내에서 write_update.skin.php에서는 안되네요.
bbs는 건드리고 싶지 않은데 스킨폴더내에서 이와 같이 하는 방법은 없나요?

이렇게 한번 해보세요.

 

/skin/board/[스킨명]/write_update.skin.php

 

-->

 

<?php
if (!defined('_GNUBOARD_')) exit;

// 게시글 DB 저장 전에 실행되는 스킨 파일
// $wr_content를 파싱해서 유튜브 링크를 iframe으로 변환

function convert_youtube_to_iframe($content) {
    
    $pattern = '/__https?:\/\/(?:www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)__/i';
    $replacement = '<div class="youtube_area"><iframe width="100%" height="100%" src="https://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div>';
    
    $content = preg_replace($pattern, $replacement, $content);
    

    $pattern2 = '/__https?:\/\/youtu\.be\/([a-zA-Z0-9_-]+)__/i';
    $content = preg_replace($pattern2, $replacement, $content);
    
    return $content;
}


$wr_content = convert_youtube_to_iframe($wr_content);


?>

 

선생님 감사하고 또 미안합니다. $wr_content로는 값이 전달되지 않습니다. 위의 함수를 없애고
if (!defined('_GNUBOARD_')) exit;
$wr_content ="sample"; 이것만 있는 write_update.skin.php를 작동시켜도 'sample' 이라는 내용이 등록되지 않고  write.skin.php 폼에디터에서 원래 작성한 글이 저장됩니다.
$wr_content 변수가 전달되지 않는 것 같아요. 방법이 없을까요?

해결했어요. 

https://sir.kr/qa/261447

작은별 님의 답변

2018-08-27 15:55:38 125.♡.♡.227

 채택 1

  •  

write_update.skin.php 파일은 글 등록 이후에 처리되는 파일입니다.

파일명을 write_update.head.skin.php 로 하세요.

댓글쓰기주소복사  스크랩0

 
↳  미미원
2018-08-27 17:51:27175.♡.♡.116

우와 잘되욤 ㅎㅎㅎ 감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 129,664 | RSS
QA 내용 검색

회원로그인

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