전 PHP에서 외부 웹페이지를 가져올 때 file_get_contents라는 함수를 즐겨쓰는데, 이 놈이 이미지까지 해결해 주더군요. 여기까진 다 아시겠고... :)

위 함수로 해결 안되는 것이 헤더인데요, 마임타입이라던지 잡다한 놈을 얻기 위해서 소켓을 열어서 헤더를 파싱해서 사용하시는 분이 많더군요(PHP Q&A게시판에서 자주 나온다고 할까나...)

1원짜리 팁은 바로 이것입니다.

$http_response_header

이 넘이 있다는 사실을 지금까진 몰랐는데, 상당히 재미있는 놈이더군요. 일단, PHP에서 미리 정의된 변수로, file_get_contents로 외부 페이지던 동영상이던 읽어오면 위 변수에는 헤더가 저장이 됩니다.

메뉴얼을 링크해놨는데, 뭐 이런 식으로 나온다고 하네요.

<?php
file_get_contents("http://example.com");
var_dump($http_response_header);
?>

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}

전 외부 이미지와 마임타입을 가져오기 위해서 다음과 같이 이용합니다.

$a = file_get_contents($imageUrl);
foreach($http_response_header as $item)
{
    if(preg_match('/Content-Type/', $item))
    {
        $contentType = trim(preg_replace('/.+:/', '', $item));
        continue;
    }
}
2009/04/12 17:29 2009/04/12 17:29

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다