0

周りを見回して困惑しています。基本的に、私はxmlフィードから結果を除外し、それがhtml出力に表示されないようにしようとしています。会場「ホーンブロワークルーズとイベント」を見つけようとしています。存在する場合は、すべてのノードの親である全体を非表示にします。

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>

ヘルプ?

4

2 に答える 2

0

まず、SimpleXMLオブジェクトから取得するすべてのオブジェクトを関連するタイプにキャストする必要があります。たとえば(string)、フィールドを読み取る前に、パッティングを使用して文字列属性またはノードをキャストする必要があります。

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

フィルタリングに関する質問については、一致する文字列を探し続けてから、追加するかどうかを決定する独自の方法を提案します。

編集

'Hornblower Cruises and Events'会場名が現在のイベントフィールドの設定を解除してXMLとしてエコーするかどうかを確認しようとしていますか?まずunset($myfeed)、イベントフィールド自体であるため、書き込む必要があります。の設定を解除すると、 Nextasxmlは何も返しません$myfeed。そして、あなたはHTMLあなたのコードに間違いがあります。あなたのすべてのループでfor、あなたは書いています:

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

の前に配置する必要がありforます。そして、それらの終了タグはありません。の後に終了タグを付けますfor。会場名以外のフィールドだけを取得したい場合は'Hornblower Cruises and Events'<?php if($venue_name != 'Hornblower Cruises and Events') : ?><div class="gs-item"><?php endif; ?>後を入れて</ul>ください。

于 2012-09-13T20:01:02.170 に答える
0

キー付きforeachを使用する

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

次に、キーを使用して現在のxml全体の設定を解除します

unset($myfeed->$key);

または、unset($ myfeed-> $ key->venue);で会場だけを設定解除します。

または、既存のobjを編集する代わりに、新しいobjを作成することもできます。ループの前に新しいオブジェクトをインスタンス化し、保持したい部分だけをそのオブジェクトに追加します。

または、不要な場所を見つけた場合は、foreachを続行できます。唯一の欠点は、$myfeedにok'dリストのコピーがないことです。それで...

if ($venue_name == 'Hornblower Cruises and Events') { continue; }
于 2012-09-13T20:06:38.430 に答える