簡體   English   中英

如何使用php從外部XML中排除某些內容?

[英]How to exclude certain content from external XML with php?

繼續這個主題如何使用php在前端使用Wordpress顯示遠程XML文件? 我被問到以下問題:

<?php
$xmlhd = wp_remote_get('http://www.myurl.com/api/channel.php?type=hd');
$xmlparseado = simplexml_load_string($xmlhd['body']);

$content = '';
echo "<ul>";
$rows = $xmlparseado->channel->row;
foreach($rows as $key=>$row){   
    if($key =='row'){
        $row_string = '<li>';
        $row_string.= '<span>'.$row->date.'</span>';
        $row_string.= '<span>'.$row->time.'</span>';
        $row_string.= '<span>'.$row->description.'</span>';
        $row_string.= '<span>'.$row->imagethumb.'</span>';
        $row_string.= '</li>';
        $content.=$row_string;
    }   
}
echo $content;
echo "</ul>";
?>

XML返回:

<programations>
    <channel name="KCBS HD">
        <row>
            <date>july, 23</date>
            <time>06:00</time>
            <title><![CDATA[ WKCBS Action News ]]></title>
            <description><![CDATA[ Action News, hosted by: Jenn Doe ]]></description>
            <imagethumb/>
        </row>
        <row>
            <date>July, 23</date>
            <time>06:35</time>
            <title><![CDATA[ KCBS Sports Center ]]></title>
            <description><![CDATA[ The best scoreS from the Sportscenter stadium, hosted by: Fernando Sobalaprieta ]]></description>
            <imagethumb/>
        </row>
    </channel>
</programations>

此代碼顯示包含以下內容的列表:

  • 日期
  • 時間
  • 描述
  • 圖片

有很多,但是我被要求顯示日期,只有第一個條目,即:

第一次進入:

  • 日期
  • 時間
  • 描述
  • 圖片

第二次入境及更多:

  • 時間
  • 描述
  • 圖片

問題在於,當您結束一天時, 日期更改為第二天,因此我不能使用條件式。

有什么建議么?

編輯:

請記住這一點:

每隔一天,第一個程序都會顯示日期。 :)

如果我理解正確,則只希望第一個條目顯示日期。 因此,請使用虛擬計數器:

$count = 0;
$first_date = "";
foreach($rows as $key=>$row){   
if($key =='row'){
    $row_string = '<li>';
    if($count == 0 ){ 
    $first_date = $row->date; 
    $row_string.= '<span>'.$row->date.'</span>';
    }
    $row_string.= '<span>'.$row->time.'</span>';
    $row_string.= '<span>'.$row->description.'</span>';
    $row_string.= '<span>'.$row->imagethumb.'</span>';
    $row_string.= '</li>';
    $content.=$row_string;
    if( $count == 0 || strcmp( $row->date, $first_date ) == 0 ) 
    $count++;
    else $count = 0;
}   
}

編輯:好的,所以現在它將僅顯示該天的第一個出現條目的日期。

嗯,嘗試注釋掉不需要的行。 順便說一句,我希望我做對了。 嘗試以下示例:

 $row_string = '<li>';
 $row_string.= '<span>'.$row->date.'</span>';
 //$row_string.= '<span>'.$row->time.'</span>';
 //$row_string.= '<span>'.$row->description.'</span>';
 $row_string.= '<span>'.$row->imagethumb.'</span>';
 $row_string.= '</li>';
 $content.=$row_string;

使用// php將忽略這些行,例如,這里您將不再有時間並且不再顯示說明。

將日期存儲在一個單獨的變量中,並在其發生變化時將其回顯。

$dateHolder = "";
foreach($rows as $key=>$row){   
    if($key =='row'){         
        $row_string = '<li>';
        if($dateHolder=="" || $dateHolder != $row->date) {
            $row_string.= '<span>'.$row->date.'</span>';
            $dateHolder = $row->date;
        }
        $row_string.= '<span>'.$row->time.'</span>';
        $row_string.= '<span>'.$row->description.'</span>';
        $row_string.= '<span>'.$row->imagethumb.'</span>';
        $row_string.= '</li>';
        $content.=$row_string;
    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM