2012-09-13 2 views
0

둘러 보면서 어색해했습니다. 기본적으로 XML 피드에서 결과를 필터링하고 HTML 출력에 표시하지 않으려 고합니다. 나는 "Hornblower Cruises and Events"장소를 찾고, 존재한다면 모든 노드의 부모 인 전체를 숨기려고합니다. 여기 SimpleXML을 사용하여 항목 필터링하기

는 URL입니다 : http://www.sandiegomagazine.com/goldstartest/rss3-exclude.php

여기 내 코드입니다 :

<?php 
$myfeed = simplexml_load_file('https://www.goldstar.com/api/listings.xml?api_key=6d0d598c69dfecfcf028b0d2b3c9b693b606ad8c&postal_code=92101'); 
$i = 0; 
foreach ($myfeed as $goldstar): 
    $title=$goldstar->headline_as_html; 
    $summary=$goldstar->summary_as_html; 
    $dates=$goldstar->upcoming_dates->event_date->date; 
    $ourprice=$goldstar->our_price_range; 
    $fullprice=$goldstar->full_price_range; 
    $img=$goldstar->image; 
    $link=$goldstar->link; 
    $venue_name=$goldstar->venue->name; 
    $venue_street=$goldstar->venue->address->street_address; 
    $venue_locality=$goldstar->venue->address->locality; 
    $venue_region=$goldstar->venue->address->region; 
    $venue_zip=$goldstar->venue->address->postal_code; 
    $venue_phone=$goldstar->venue->phone; 
    $category=$goldstar->category_list->category->name; 


    // if ($venue_name == 'Hornblower Cruises and Events'){ 
    // unset($myfeed->event); 
     //echo $myfeed->asxml(); 

    //} 

    if (++$i > 20) { 
    // stop after 10 loops 
    break; 
} 


?> 

<html> 
<head></head> 
<body> 







<div class="gs-item"> 
<div class="gs-itemcontent"> 

<h3 class="gs-cat"><?php echo $category; ?></h3> 
<h2><a href="<?php echo $link; ?>" target="_blank"><?php echo $title; ?></a></h2> 
<h4 class="gs-date">Date: <?php echo $dates; ?> <br/>For more show dates, <a href="<?php echo $link; ?>" target="_blank">click here</a></h4> 

<img src="<?php echo $img; ?>" /> 
<p><?php echo $summary; ?></p> 


<div id="gs-callout"> 
<span class="fullprice">Full Price: <?php echo $fullprice; ?></span> 
<br/> 
<span class="ourprice">Our Price: <span class="gs-hilite"><?php echo $ourprice; ?></span></span> 
<p><a class="gs-button" href="<?php echo $link; ?>" target="_blank">Buy Tickets &raquo;</a></p> 

</div> 


<ul class="gs-venue"> 
<li><strong><?php echo $venue_name; ?></strong> | </li> 
<li><?php echo $venue_street; ?></li> 
<li><?php echo $venue_locality; ?>, <?php echo $venue_region; ?> <?php echo $venue_zip; ?></li> 
<li><?php echo $venue_phone; ?></li> 


</ul> 

</div> 
<div class="gs-clear"></div> 
</div> 







    <? endforeach; ?> 



</body> 

도움말?

답변

0

사용 키있는 foreach는

foreach ($myfeed as $key => $goldstar): 

그리고 해제 해제와 키

unset($myfeed->$key); 

또는 해제 단지 장소 사용하여 전체 현재 XML ($ myfeed -> $ 키 -> 장소를) ;

다른 방법으로 기존 obj를 편집하는 대신 obj를 새로 만들 수 있습니다. 루프 전에 새 오브젝트를 인스턴스화 한 다음 보관하려는 조각 만 추가하십시오.

원치 않는 장소를 찾으면 foreach를 계속할 수 있습니다. 유일한 단점은 $ myfeed에 ok'd 목록의 복사본이없는 것입니다. 그래서 ...

if ($venue_name == 'Hornblower Cruises and Events') { continue; } 
+0

이 감사 좋아. 난 아직도 일을하고 있지 않다 :(작동하지 않는,하지만 7 개 항목의 목록의 일부로서, 내가 삭제할 항목을 반환 (루프 요청 . 20) 가까이 다음과 같다 '경우 ($ venue_name == ('Hornblower 크루즈와 이벤트')) {' '해제 ($ myfeed -> $ 키),' '}?' – iosSicilian

+0

감사합니다 @M_user 도움! – iosSicilian

0

먼저 SimpleXML 객체에서 가져 오는 모든 객체를 관련 유형으로 캐스팅해야합니다. 예를 들어, 필드 읽기 전에 (string) 퍼팅와 문자열 속성이나 노드를 주조한다 : 나는 경기 문자열을 찾고 유지하는 자신 만의 방법을 제시하고 추가로 결정할 것, 필터링에 대한 질문의 경우

$venue_name = (string)$goldstar->venue->name 

또는 아니.

당신은 장소의 이름 'Hornblower Cruises and Events' 다음 해제 현재 이벤트 필드의 경우보고 XML로 에코하려는

EDIT? 먼저 이벤트 필드 자체이기 때문에 unset($myfeed)이라고 써야합니다. $myfeed을 설정 해제하면 다음 asxml은 아무 것도 반환하지 않습니다. 그리고 코드에 HTML 실수가 있습니다. 당신의 for의 모든 루프, 당신은 쓰고있어 : 당신은 for 전에 배치해야

<html> 
<head></head> 
<body> 

. 그리고 거기에는 닫는 태그가 없습니다. for 뒤에 닫는 태그를 넣으십시오. 개최지 이름이 'Hornblower Cruises and Events'이 아닌 필드를 가져 오려면 <div class="gs-item"> 앞에 <?php if($venue_name != 'Hornblower Cruises and Events') : ?>을 입력하고 </ul> 뒤에 <?php endif; ?>을 입력하십시오.

+0

감사합니다. @MahanGM, 저는 멍청한 사람입니다.나는 모든 항목을 주조 , 그럼 내가 쓴 : '경우 ($ venue_name == ('Hornblower 크루즈와 이벤트')) {' \t'해제 ($ myfeed-> 이벤트)' \t \t' echo $ myfeed-> asxml();' '}' – iosSicilian

+0

20 개가 아닌 7 개 항목을 반환하는 것처럼 보입니다. 여전히 루프를 설정하고 을 표시하고 있습니다. – iosSicilian

+0

감사합니다. @MahanGM, 그것을 작동했습니다 감사합니다! 나는'unset();을 사용할 필요조차 없었습니다. ' ' '오류도 지적 해 주셔서 감사합니다. 나는 필터에 너무 집중한다는 것을 놓쳤습니다. 내가 다음과 보내고 쓴 @M_user – iosSicilian

관련 문제