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

게시물에서 img 태그 src 값 추출(에디터로 업로드시, 파일로 업로드시) 채택완료

lacomparte 7년 전 조회 6,152

게시판에 img 태그를 추출해서 src값 다시 추출했습니다.

</p>

<p>// 정규식으로 img 태그의 src값만 추출

    $contents = $view['content'];

    preg_match_all("/<img[^>]*src=[\'\"]?([^>\'\"]+)[\'\"]?[^>]*>/", $contents, $matches);

//    echo ($matches[1][0]);</p>

<p>    // 정규식으로 게시물내의 img 태그 유무 찾기

    if(preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $view['content']) == 0) {

        $matches[1][0] = G5_IMG_URL."/logo_p.png";

    }</p>

<p><meta property="og:type" content="website">

<meta property="og:title" content="<?php echo $view['subject']; ?>">

<meta property="og:url" content="<?php echo $_SERVER['REQUEST_URI']; ?>">

<meta property="og:description" content="<?php echo cut_str(strip_tags($write['wr_content']), 200) ?>">

<meta property="og:image" content="<?php echo($matches[1][0]); ?>"></p>

<p>

 

위 코드로 테스트 해보았는데요.

에디터로 이미지를 올렸을때는 정상작동하여

meta의 og:image content 가 정상적으로 채워졌으나,

 

파일로 이미지를 올렸을때는

위의 코드 if 문이 false 가 되어 기본 이미지가 src 값이

mata의 og:image content 에 들어가 버립니다...!

 

본문에 무조건 img 태그가 있다면

meta의 og:imgage content 가 img 태그의 src 값으로

채워지게 할 수 있을까요?

 

DB보니까 파일로 이미지를 올렸을때는 wr_content 에 저장이 안되더라구요;

흡 ㅠ

 

 

리스트에 파일아이콘은....

파일로 올렸을때(확장자가 gif,jpg,png, ico, html, hwp, ppt 등등)

다양하니 아이콘이 출력되는게 맞고

이미지로 에디터로 첨부했을때는 gif,jpg,png 등만 첨부가능하니

아이콘이 안나오는게 맞는것 같습니다 ㅎ

아이콘 자체 의미가 파일 이니까요ㅎ

 

 

 

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

답변 2개

채택된 답변
+20 포인트
w
7년 전

파일로 했을때는 첨부 형태로 되어서 그런듯 보입니다.

$content쪽에는 없을테니 false가 떨어질테고요. 그렇다면 false때 첨부파일까지 검사해서 각 값을 채워주면 되지 않을까 합니다.

 

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

답변에 대한 댓글 1개

l
lacomparte
7년 전
감사합니다 ㅋㅋ
[code]
<?php
// 정규식으로 img 태그의 src값만 추출
$contents = $view['content'];
preg_match_all("/<img[^>]*src=[\'\"]?([^>\'\"]+)[\'\"]?[^>]*>/", $contents, $matches);

// 정규식으로 게시물내의 img 태그 유무 찾기
// 만약 이미지가 없다면
if(preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $view['content']) == 0) {
// 만약 첨부파일에 이미지가 있다면
if($view['file'][0]['file']){
$matches[1][0] = G5_DATA_URL."/file/".$bo_table."/".$view['file'][0]['file'];
} else {
$matches[1][0] = G5_IMG_URL."/logo_p.png";
}
} else {
;
}
?>
[/code]

로 일단 했습니닷.
근데 캐시때문인지 공유시 이미지를 못가져오네요;
og:image content 는 잘 들어가는데 말입니다..

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

음 직접 소스를 작성하시지 마시구요.

그누보드의 라이브러리 파일 중에 /lib/thumbnail.lib.php 파일 7번째 라인을 보시면 

get_list_thumbnail 이라는 함수가 있습니다.

이 함수는 게시물에서 첨부파일이 있다면 첨부파일 이미지를 없다면 내용에서 이미지를 추출하여 썸네일화 하는 함수인데요.

이것을 응용하시면 될 것으로 보입니다.

 

</p>

<p><?php</p>

<p>$og_img = get_list_thumbnail($bo_table, $wr_id, 600, 0); // 600은 출력 이미지의 가로 사이즈</p>

<p>?></p>

<p><meta property="og:image" content="<?php echo $og_img['src']; ?>"></p>

<p>

 

위와 같이 처리해 보세요.

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

답변에 대한 댓글 2개

l
lacomparte
7년 전
헉...
[code]
<?php
// 정규식으로 img 태그의 src값만 추출
$contents = $view['content'];
preg_match_all("/<img[^>]*src=[\'\"]?([^>\'\"]+)[\'\"]?[^>]*>/", $contents, $matches);

// 정규식으로 게시물내의 img 태그 유무 찾기
// 만약 이미지가 없다면
if(preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $view['content']) == 0) {
// 만약 첨부파일에 이미지가 있다면
if($view['file'][0]['file']){
$matches[1][0] = G5_DATA_URL."/file/".$bo_table."/".$view['file'][0]['file'];
} else {
$matches[1][0] = G5_IMG_URL."/logo_p.png";
}
} else {
;
}
?>
[/code]

이렇게 해버렸는데....
주신소스로 한번 해보겠습니다 감사합니다 ㅎ





적용해봤는데...
훨신 간단하고...좋으네요....
두성
7년 전
잘 되셨다니 다행입니다.
즐코하세요. ^^

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

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

로그인