我創建其中很多內容是通過RSS生成一個動態的網站從themoneyconvert.com
網站實時顯示貨幣供稿利率像這樣:
希望你得到我DIS思想內容,在3列模板中播放。
供稿網址對themoneyconverter.com都在,我已經叫cityConfig.php
飼料的URL都存儲在$currencySource
陣列中的腳本設置。我在每個網址的末尾添加了一個參數。例如,數組中的第一項已添加到現有提要的末尾?x=15
。該參數對應於來自供稿網址的<item>
XML標籤的位置。
該標籤由下面的代碼行訪問,該代碼位於函數內部,當我找到它時將顯示該函數。
$currency['rate'] = $xml->channel->item[$x]->description;
請注意$x
變量高於此變量我將參數傳遞到。
以下功能位於我的getCurrencyRate.php
腳本中。
<?php
// Get XML data from source
// Check feed exists
function get_currency_xml($currencySource) {
if (isset($currencySource)) {
$feed = $currencySource;
} else {
echo 'Feed not found. Check URL';
}
if (!$feed) {
echo('Feed not found');
}
return $feed;
}
function get_currency_rate($feed) {
$xml = new SimpleXmlElement($feed);
$rate = get_rate($xml, 15); //EUR 15
if ($feed == 'http://themoneyconverter.com/rss-feed/USD/rss.xml?x=16') {
$rate = get_rate($xml, 16); //GBP 16
} else {
$rate = get_rate($xml, 56); //USD 56
}
}
注意上面,我已硬編碼的值15, 16 and 56
從這個輸出可以在第一圖像中在所述柱的頂部觀看。我正在嘗試從cityConfig.php
腳本中顯示的參數集中獲取這些值。
上面的get_rate
函數調用如下:
// Get and return currency rate
// Perform regular expression to extract numeric data
// Split title string to extract currency title
function get_rate(SimpleXMLElement $xml, $x) {
$x = (int)$x;
$currency['rate'] = $xml->channel->item[$x]->description;
preg_match('/([0-9]+\.[0-9]+)/', $currency['rate'], $matches);
$rate = $matches[0];
$title['rate'] = $xml->channel->item[$x]->title;
$title = explode('/', $title['rate']);
$title = $title[0];
echo $rate . ' ' . $title . '<br />';
}
爲了實現我的目標我已經通過添加以下代碼行和更換數值變量$x
改變了get_currency_rate
功能上面。
$vars = parse_url($feed, PHP_URL_QUERY);
parse_str($vars);
和改性功能:
function get_currency_rate($feed) {
$xml = new SimpleXmlElement($feed);
$vars = parse_url($feed, PHP_URL_QUERY);
parse_str($vars);
$rate = get_rate($xml, $x); //EUR 15
if ($feed == 'http://themoneyconverter.com/rss-feed/USD/rss.xml?x=16') {
$rate = get_rate($xml, $x); //GBP 16
} else {
$rate = get_rate($xml, $x); //USD 56
}
}
從上述顯示器的輸出:
我期待在列中的相同的輸出之前,但這個人是不同。任何想法,我錯了?
在此先感謝
偉大的答案。 switch語句很有意義。謝謝! – keenProgrammer 2012-02-06 11:21:10