티스토리 뷰
확장자가 없어도 이미지가 보여지는건 데이터가 있다는 것이므로 바이너리 데이터를 보여주는 형식으로 처리
// 이미지 추출
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $row['content'], $out5);
for($i = 0; $i < count($out5[0]); $i++){
// base64 데이터 가져오기
$imgBase64 = getImageData($out5[1][$i]);
// mime type 가져오기
$imgData = getHeader($out5[1][$i]);
$row['content'] = str_replace($out5[0][$i], '<img src="data:'.$imgData.';base64,'.$imgBase64.'" />', $row['content']);
}
//함수
// 이미지 데이터를 가져와서 base64 인코딩으로 변환 후 반환
function getImageData($imgLink){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $imgLink);
// referer는 적당히 연구해서 속일 것. 비워도 되는 경우도 있음.
curl_setopt($curl, CURLOPT_REFERER, '');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$img = curl_exec($curl);
curl_close($curl);
return base64_encode($img);
}
// 이미지 링크에서 이미지의 확장자를 읽어 mime type 형태로 반환
function getHeader($img){
$extArr = array(
'jpg' => 'image/jpg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'png' => 'image/png'
);
$ext = strtolower(substr($img, strrpos($img, '.')+1));
return $extArr[$ext];
}
'PHP Tip' 카테고리의 다른 글
php파일 php백그라운드로 실행하기 (0) | 2011.08.01 |
---|---|
정규표현식을 이용한 팁 (0) | 2011.03.08 |
웹에디터로 이미지 등록시 이미지 태그 추출하여 활용하기 (0) | 2011.03.08 |