글을 신규록/수정등록 할 때 전송된 내용을 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);
이렇게 한번 해보세요.
/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);
?>
해결했어요.
작은별 님의 답변
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우와 잘되욤 ㅎㅎㅎ 감사합니다.