웹에디터에 확장자 없는 이미지 복사해서 넣을 경우 새로고침시 이미지 깨지는 문제
확장자가 없어도 이미지가 보여지는건 데이터가 있다는 것이므로 바이너리 데이터를 보여주는 형식으로 처리
// 이미지 추출
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];
}