2013-02-01 75 views
-1

可能重複:
Parsing xml from url php如何替換特殊符號?

我需要從URL解析XML文檔並解決使用捲曲,因爲我的主機不與一些DOM或SimpleXML函數工作。我怎樣才能取代歐元符號並顯示出來。函數str_replace不幫助我。

<?php 
$url = 'http://www.aviasales.ru/latest-offers.xml'; 


$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, 'app'); 

$query = curl_exec($ch); 
curl_close($ch); 
$xml=simplexml_load_string($query); 
//$xml = str_replace('&euro;', '€', $xml); 
?> 

<table width=100%> 

    <tr bgcolor="#CAE8F0" align="left"> 
     <td><b><?= $xml->offer[1]['title']?></b></td> 
     <td width=5%><b><a href="<?=$xml->offer[1]["href"]?>">buy</a></td> 
    </tr> 

</table> 
+0

我向您展示瞭如何做到這一點,但您無法理解!你想要什麼?讓我們去你的辦公桌,爲你寫出最好的代碼......好嗎? http://stackoverflow.com/questions/14511687/parsing-xml-from-url-php –

回答

1

str_replace如你所想,不會在一個對象上工作。但是,如果你輸出到html,你可以保持原樣。

如果您需要對其進行解碼,請通過html_entity_decode運行您的屬性,而不是整個對象。

0

在你的代碼中,$ xml不是一個字符串,而是一個SimpleXMLElement。你也許可以代替€實體您加載字符串之前:只要$查詢與多字節字符編碼,你應該沒事

$xml = simplesml_load_string(str_replace('&euro;', '€', $query)); 

。如果不是,您可能需要遍歷$ xml。

0

你將不能夠直接編輯XML使用SimpleXML:

SimpleXML擴展提供了一個非常簡單和容易使用的工具集XML轉換成可以用正常的屬性選擇器和陣列進行處理的對象迭代器。 http://www.php.net/manual/en/intro.simplexml.php

你將不得不使用PHP DOM擴展:

DOM擴展可以讓你在XML文檔通過DOM API與PHP 5 http://www.php.net/manual/en/intro.dom.php

操作例如:
// Create 
$doc = new DOMDocument(); 
$doc->formatOutput = true; 

// Load 
if(is_file($filePath)) 
    $doc->load($filePath); 
else 
    $doc->loadXML('<rss version="2.0"><channel><title></title><description></description><link></link></channel></rss>'); 

// Update nodes content 
$doc->getElementsByTagName("title")->item(0)->nodeValue = 'Foo'; 
$doc->getElementsByTagName("description")->item(0)->nodeValue = 'Bar'; 
$doc->getElementsByTagName("link")->item(0)->nodeValue = 'Baz'; 

通過結合問題和選擇答案的示例:https://stackoverflow.com/a/6001937/358906