테스트 사이트 - 개발 중인 베타 버전입니다

Snoopy.class 관련 질문 채택완료

남자사람1 10년 전 조회 3,614

http://sir.co.kr/g5_tip/2658">http://sir.co.kr/g5_tip/2658 

 

위에 팁 보면서 하고 있는데

 

$newpost = array(

'mb_id' => 'phoneclub',

'bo_table' => $bo_table,

'wr_subject' => $item->title,

'wr_content' => $item->description."... ... [더보기]",

'wr_link1' => $item->link

);

insert_write($newpost); 

 

$item->title 타이틀은 잘 가지고 오는데

<ht:news_item_title​> 이런류의 앞에 ht가 붙은 건 못가져 오더라구요..

 

$item->ht:news_item_title​; 이렇게 해봐도 안되고 팁좀 주실수 있나요?

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
10년 전

<ht:news_item_title​> 이런 류의 내용은 2차원 배열의 데이타로 저장되기 때문에

2차원 키를 이용하여 값을 가져와야 합니다. 

 

예를 들어 설명하자면,

먼저 파싱할 xml 데이타가 다음과 같다고 가정하고

</span></p><p><span style="line-height: 1.5;">$xml_content = '<?xml version="1.0" encoding="UTF-8"?></span></p><p><span style="line-height: 1.5;"><rss></span></p><p>   <channel></p><p>      <item></p><p>        <title>그녀는 예뻤다</title></p><p>        <description>그녀는 예뻤다 1회</description></p><p>        <link><a href="<a href="https://www.google.com/trends/hottrends?pn=p23#a=20150917-%EA%B7%B8%EB%85%80%EB%8A%94+%EC%98%88%EB%BB%A4%EB%8B%A4" target="_blank" rel="noopener noreferrer">https://www.google.com/trends/hottrends?pn=p23#a=20150917-%EA%B7%B8%EB%85%80%EB%8A%94+%EC%98%88%EB%BB%A4%EB%8B%A4</a></link>"><a href="https://www.google.com/trends/hottrends?pn=p23#a=20150917-%EA%B7%B8%EB%85%80%EB%8A%94+%EC%98%88%EB%BB%A4%EB%8B%A4</link>" target="_blank" rel="noopener noreferrer">https://www.google.com/trends/hottrends?pn=p23#a=20150917-%EA%B7%B8%EB%85%80%EB%8A%94+%EC%98%88%EB%BB%A4%EB%8B%A4</link></a></a></p><p>        <pubDate>Thu, 17 Sep 2015 01:00:00 +0900</pubDate></p><p>        <ht:picture>//t0.gstatic.com/images?q=tbn:ANd9GcRaIsjysULSRFGj6FSMYiCzXd77LOuMKm9_T18a93Rn5sGt4mzcrJlLS9vT06JmHZybH7KOy0RQ</ht:picture></p><p>        <ht:picture_source>오마이뉴스</ht:picture_source></p><p>        <ht:approx_traffic>5,000+</ht:approx_traffic></p><p>        <ht:news_item></p><p>           <ht:news_item_title>&lt;<b>그녀는 예뻤다</b>&gt;</ht:news_item_title></p><p>           <ht:news_item_snippet>&lt;<b>그녀는 예뻤다</b>&gt;는 제목처럼 과거형으로 &#39;예뻤던&#39;</ht:news_item_snippet></p><p>           <ht:news_item_url><a href="<a href="http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002144814" target="_blank" rel="noopener noreferrer">http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002144814</a></ht:news_item_url>"><a href="http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002144814</ht:news_item_url>" target="_blank" rel="noopener noreferrer">http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0002144814</ht:news_item_url></a></a></p><p>           <ht:news_item_source>오마이뉴스</ht:news_item_source></p><p>        </ht:news_item></p><p>      </item></p><p>   </channel></p><p></rss>';</p><p><span style="line-height: 1.5;">

위의 소스에서 ​ ~ 영역 안의 1단계 엘리먼트(title, ht:picture 등)는 1차원 배열이 되고

2단계 엘리먼트는 2차원 배열이 되게 됩니다.​

여기서 2단계 엘리먼트는 ​ ~ 영역 안에 있는 ,  등 입니다.

 

따라서, ​<ht:news_item_title​>를 출력하려면 위의 팁 링크에 게시된 post_rss.php 파일의

​foreach 루푸 안에서 다음과 같이 하면 됩니다.

</span></span></p><p><span style="line-height: 1.5;">$xml = @simplexml_load_string($snoopy->results);</span></p><p><span style="line-height: 1.5;"><span style="line-height: 1.5;">
</span></span></p><p><span style="line-height: 1.5;"><span style="line-height: 1.5;">foreach($xml->channel->item as $item) {</span></span></p><p><span style="line-height: 1.5;">   //1차원 배열 <ht:*> 부분 가져오기 추가</span></p><p>   $picture = '<img src="'.$item->picture.'" alt="'.$item->picture_source.'">';</p><p>   </p><p>   //2차원 배열 <ht:news_item> 영역 내용 가져오기 추가</p><p>   <span style="line-height: 1.5;"><span style="line-height: 1.5;">foreach($item->news_item as $news){</span></span></p><p><span style="line-height: 1.5;">      $news_item = $news->news_item_title.'
 ... (<a href="'.$news->news_item_url.'" target="_blank">더보기</a>)';</span></p><p><span style="line-height: 1.5;">   }</span></p><p><span style="line-height: 1.5;"><span style="line-height: 1.5;">
</span></span></p><p><span style="line-height: 1.5;">   //위의 추가로 불러온 내용을 아래의 wr_content 값에 추가함</span></p><p><span style="line-height: 1.5;">   $sql = "select count(*) as cnt from $write_table where wr_link1 = '".$item->link."' and wr_is_comment = 0";</span></p><p><span style="line-height: 1.5;">   $row = sql_fetch($sql);</span></p><p><span style="line-height: 1.5;"> </span></p><p><span style="line-height: 1.5;">   if ($row['cnt'] == 0){</span></p><p><span style="line-height: 1.5;">      $newpost = array(</span></p><p><span style="line-height: 1.5;">        'mb_id' => 'admin',</span></p><p><span style="line-height: 1.5;">        'bo_table' => $bo_table,</span></p><p><span style="line-height: 1.5;">        'wr_subject' => $item->title,</span></p><p><span style="line-height: 1.5;">        'wr_content' => $item->description.'...

... [<a href="'.$item->link.'" target="_blank">더보기</a>]'.$news_item.'
'.$picture,</span></p><p><span style="line-height: 1.5;">        'wr_link1' => $item->link</span></p><p><span style="line-height: 1.5;">      );</span></p><p><span style="line-height: 1.5;">      insert_write($newpost);</span></p><p><span style="line-height: 1.5;">   }</span></p><p><span style="line-height: 1.5;">}</span></p><p><span style="line-height: 1.5;"><span style="line-height: 1.5;">
​ 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

남자사람1
10년 전
답변 정말 감사합니다^^

//1차원 배열 <ht:*> 부분 가져오기 추가
$picture = '<img src="'.$item->picture.'" alt="'.$item->picture_source.'">';

그런데 해당 부분에서
$item->picture 이부분을 가져오지 못하는거 같은데 찍어봐도 아무것도 나오지 않습니다

title이나 link이런 부분은 가져오는데 ht가 붙은 내용은 못가져오는거 같습니다 ㅜㅜ
선우善友
10년 전
https://www.google.com/trends/hottrends/atom/feed?pn=p23 이 주소를 확인해보니
xml 문서의 네임스페이스에 ht 접두어가 문제를 일으키는 것 같네요.

위에 알려드린 두번째 소스(post_rss.php 파일)에서 foreach 루푸 위에 있는
$xml = @simplexml_load_string($snoopy->results); 이 코드를 아래와 같이 수정해보세요.
[code]
$xml = @simplexml_load_string($snoopy->results); // 이부분을 아래와 같이 수정

$results = str_replace('xmlns:ht', 'xmlns', $snoopy->results); //ht 접두어 제거
$xml = @simplexml_load_string($results);
[/code]

제가 RSS 수집기(post_rss.php)를 통해 확실한 테스트는 해보지 못했지만,
위처럼 수정하시고 나머지는 알려드린 대로 그대로 하면 아마도 될 것으로 생각됩니다.
남자사람1
10년 전
와 정말 최고네요^^
일주일동안 고민하던게 풀리니 정말 기분이 좋습니다

감사합니다!!!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인