본문으로 바로가기

<IMG> 태그 추출 (게시글 썸네일 만들기)

category 코딩/PHP 2016. 8. 23. 17:40

게시글 본문에 이미지가 1개 이상 삽입되어 있다면, 첫번째 이미지를 해당 게시글의 썸네일로 표시하는 방법.

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

echo $matches[0]; // img 태그 전체
echo $matches[1]; // img 태그 중 src 값

응용해서 아래와 같은 결과물을 만들 수 있다.

게시판 글 중에 이미지가 있는 썸네일과 제목+내용 일부를 표시, 없으면 제목+내용 일부만 표시.

 

 

$contents = stripslashes($contents); // addslashes 함수를 사용하여 DB에 저장한 경우
preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $contents, $matches);
$contents = strip_tags($contents); // 본문 내용을 텍스트만 일부 표시하려는 경우 태그 제거

if($matches[1]) {
    $thumb = '<span><img src="'.$matches[1].'" class="thumb_img" alt=""></span>';
} else {
    $thumb = '';
}

 

BEST한 방법은 아니다.

게시글 본문에 삽입된 이미지 파일의 용량에 상관 없이 썸네일로 표시하기 때문이다.

 

가장 좋은 방법은 애초에 게시글이 작성/수정될 때 썸네일로 첫번째 이미지를 추출하여,

적당히 작은 크기로(위 코드에서는 70px*70px) 별도의 썸네일 전용 이미지를 생성하는 것이다.

GD 라이브러리를 사용하면 가능하다.