실행결과
http://time-space.biz/metro/index.html
아래는 php5용소스
<?
//지명위치코드 확인 Url http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text="seoul"&format=xml
$xml = array('Seoul' => 1132599, 'Tokyo' => 1118370, 'Beijing' => 2151330);
foreach($xml as $city => $code) {
$url = 'http://weather.yahooapis.com/forecastrss?w='.$code.'&u=c';
$ch = curl_init();
$timeout = 5;
@curl_setopt($ch, CURLOPT_URL, $url);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$yahooxml = @curl_exec($ch);
@curl_close($ch);
if (@simplexml_load_string($yahooxml))
{
$smplxml = @simplexml_load_string($yahooxml);
@$smplxml->registerXpathNamespace('yweather', 'http://xml.weather.yahoo.com/ns/rss/1.0');
@$children = $smplxml->xpath('//channel/item/yweather:condition');
}
else
{
$city = "Reload!";
$children[0]['text'] = "http://weather.yahoo.com";
$children[0]['date'] = "Traffic jam!";
}
?>
<div class="tile-content slide">
<div class="padding10" style="background: url(http://us.i1.yimg.com/us.yimg.com/i/us/we/52/<?=$children[0]['code']?>.gif) no-repeat top right;">
<h1 class="fg-white ntm"><?=$children[0]['temp']?>°</h1>
<h1 class="fg-white no-margin"><?=$city?></h1>
<h5 class="fg-white no-margin"><?=$children[0]['text']?></h5>
<p class="tertiary-text fg-white no-margin">Today</p>
<h4 class="fg-white no-margin"><?=$children[0]['date']?></h4>
</div>
</div>
<? } ?>
여기까지 소스
위에 사용된 curl 함수 설명
curl (Client URL Library Functions)이라는 모듈이 서버에 설치되어 있는지 확인(phpinfo()함수로 확인).
이것이 하는 역할은 내가 원하는 주소의 페이지에서 내가 임의의 값을 넣고 그 넣은 값으로 페이지에서 리턴되는 값을 받아오는 역할입니다. 웬만한 호스팅에서는 지원하고 있습니다.
실행방법
$ch = curl_init([String url]) /* curl 세션의 초기화 [파라메터는 선택사항]. */
curl_setopt($ch, OPTION, VALUE) /* curl 옵션을 세팅한다. */
curl_setopt 의 OPTION
CURLOPT_HEADER : 헤더 정보를 받기 원한다면 이 옵션을 추가한다. VALUE : 1 OR true
CURLOPT_NOBODY : 본문의 정보를 받기 원하지 않는다면 이 옵션을 추가한다.
CURLOPT_TIMEOUT : curl 타임아웃을 설정한다.
CURLOPT_URL : 접속할 url정보를 설정
CURLOPT_REFERER : 리퍼러 정보를 설정
CURLOPT_USERAGENT : 에이전트 정보를 설정
CURLOPT_POST : 전송 메소드를 post로 정의한다.
CURLOPT_POSTFIELDS: POST 메소드라면 파라미터 값들을 이 옵션에 정의하면된다.
curl_exec($ch) /* curl을 실행 */
curl_errno($ch) /* 에러번호를 가져온다. */
curl_error($ch) /* 에러 메시지를 가져온다. */
curl_getinfo($ch) /* 상태 정보를 리턴한다. */
curl_close($ch) /* curl 세션을 닫는다 */
아래는 php4용 소스
<?
//지명위치Url http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text="london"&format=xml
$xml = array('Seoul' => 1132599, 'Tokyo' => 1118370, 'Beijing' => 2151330);
foreach($xml as $city => $code) {
//while (list($city, $code) = each($xml)) {
$url = 'http://weather.yahooapis.com/forecastrss?w='.$code.'&u=c';
$ch = @curl_init();
$timeout = 5;
@curl_setopt($ch, CURLOPT_URL, $url);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$yahooxml = @curl_exec($ch);
@curl_close($ch);
$data = $yahooxml;
$parser = xml_parser_create('UTF-8');
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $vals, $index);
xml_parser_free($parser);
if($vals)
{
$day= $vals[28]["attributes"]["DAY"];
$date= $vals[28]["attributes"]["DATE"];
$hightemp= $vals[28]["attributes"]["HIGH"];
$lowtemp= $vals[28]["attributes"]["LOW"];
$text= $vals[28]["attributes"]["TEXT"];
$code= $vals[28]["attributes"]["CODE"];
}
else
{
$city = "Reload!";
$text = "http://weather.yahoo.com";
$date = "Traffic jam!";
}
?>
<div class="tile-content slide">
<div class="padding10" style="background: url(http://us.i1.yimg.com/us.yimg.com/i/us/we/52/<?=$code?>.gif) no-repeat top right;">
<h1 class="fg-white ntm"><?=$hightemp."°~".$lowtemp?>°</h1>
<h1 class="fg-white no-margin"><?=$city?></h1>
<h5 class="fg-white no-margin"><?=$text?></h5>
<p class="tertiary-text fg-white no-margin">Today</p>
<h4 class="fg-white no-margin"><?=$day." ".$date?></h4>
</div>
</div>
<? } ?>
php 메일함수로 첨부파일 보내기 (0) | 2014.05.05 |
---|---|
class내에서 php4와 php5에서 호환가능한 __construct 함수(include변수사용가능) (0) | 2014.03.20 |
아래의 홈페이지 폴더구조도보다 먼저 나와야 하는 결과물은 시안페이지 입니다. (0) | 2013.07.21 |
웹솔루션 개발용 폴더및파일구조도 만들기 (0) | 2013.07.20 |
로그인에서 사용하는 세션샘플 (0) | 2012.08.12 |
댓글 영역