블로그   |    태그로그   |    방명록
민준이
전체 (120)
공부 (49)
포트폴리오 (70)
공지사항 (0)
자유게시판 (1)
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
월별보기
'공부/PHP'에 해당되는 글 4건
rss 내용을 파싱하는 간단한 함수입니다.
Category : 공부/PHP Date : 2008/11/21 10:33
2008/11/21 10:33 2008/11/21 10:33
rss 내용을 파싱하는 간단한 함수입니다.
(rss 파일은 fopen이나 fsocket 등등 알아서 읽어오셔야합니다;;)
HTML 파싱용으로도 사용가능합니다 덜덜;;

function _parser($tag, $str){
    preg_match_all("/<".$tag.">(.*)<\/".$tag.">/iUs", $str, $match);
    for($i=0, $total=sizeof($match[1]); $i<$total; $i++){
        $match[1][$i]=str_replace("<![CDATA[", "", $match[1][$i]);
        $match[1][$i]=str_replace("]]>", "", $match[1][$i]);
    }
    return $match[1];
}

원리는 간단합니다.
<a>
  <b>하하하</b>
  <b>
    <c>aaa하하하</c>
    <c>222</c>
  </b>
</a>

이런구조를 파싱하시려고 할때 $tmp 변수에 위 내용이 있다고 가정할때

* a 태그를 가져올때
$a = _parser("a", $tmp);

$a[0]의 값
<b>하하하</b>
  <b>
    <c>aaa하하하</c>
    <c>222</c>
  </b>


* b 태그를 가져올때
$b = _parser("b", $a[0]);

$b[0]의 값
하하하

$b[1]의 값
<c>aaa하하하</c>
<c>222</c>


* c 태그를 가져올때
$c = _parser("c", $b[1]); // 두번째 b 태그에만 c태그가 들어있으므로

$c[0]의 값
aaa하하하

$c[1]의 값
222

----------------------------------------------------------------------------------------------


*  UTF-8로 인코딩 처리하기
 $data 변수에 rss 내용이 있을경우
    if(preg_match("/encoding=\"(.*)\"/Us", $data, $match)){
        if(strtolower($match[1]) != "utf-8"){
            $data=iconv($match[1], "UTF-8", $data);
        }
    }

-------------------------------------------------------------------------------------------------

* 위 정보를 토대로 RSS 파싱하기
$data 변수에 rss 정보가 들어있다고 가정합니다.
        list($channel) = _parser("channel", $data);

        // RSS 제공하는 제목입니다.
    list($channel_title) = _parser("title", $channel);

        // RSS url 입니다.
    list($channel_link) = _parser("link", $channel);

        // RSS 설명입니다.
    list($channel_description) = _parser("description", $channel);

      echo '<h2><a href="'.$channel_link.'" target="_blank">'.$channel_title.'</a> : '.$channel_description.'</h2>'.$list.'</ul>';

    $channel_item = _parser("item", $channel);        
    for($i=0, $total=sizeof($channel_item);$i<$total; $i++){
        $item = $channel_item[$i];
        list($title) = _parser("title", $item); // RSS기사 제목
        list($link) = _parser("link", $item); // RSS기사 url
        list($pubDate) = _parser("pubDate", $item); // RSS기사 날짜
        $pubDate= date("m/d", strtotime($pubDate));

        echo '<li>'.$date.' <a href="'.$link.'">'.$title.'</a></li>';
    }

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
쿼리구문이 시간초과 되는거 방지
Category : 공부/PHP Date : 2008/06/25 17:45
2008/06/25 17:45 2008/06/25 17:45
@set_time_limit(0);

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
랜덤값 창출.. 5,000 이하
Category : 공부/PHP Date : 2008/06/25 17:45
2008/06/25 17:45 2008/06/25 17:45
srand((double) microtime()*1000000);
$rand = rand(1000,5000);

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
주소창 암호화
Category : 공부/PHP Date : 2008/06/25 16:57
2008/06/25 16:57 2008/06/25 16:57
base64_encode($code) ->보낼때
base64_decode($code) -> 사용할때

상위로
엮인글 쓰기 0 | 덧글 쓰기 0 | 목록 열기
Creative Commons License 블로그 내에 모든 저작물은 크리에이티브 커먼즈코리아 저작자표시 - 비영리 - 변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
최근 올라온 글
블로그 최근 덧글
최근 엮인글
Viagra.
 Viagra attorneys.
Phentermine 37.5 mg online...
 Cheapest phentermine online.
Buy cheap tramadol mg table...
 Cheap tramadol prescription...
How much tickets are sold f...
 Air flight tickets.
Valtrex.
 Valtrex medication.
즐겨찾기
Today : 18
Yesterday : 57
Total : 13778
Powered by Textcube 1.7.1 : Risoluto
Skin by mulder21c
RSS 주소보기 E-Mail 보내기