-1

Possible Duplicate:
Parsing xml from url php

I need to parse xml-document from url and solve to use CURL, because my hosting don't working with some dom or simplexml functions. How I can replace symbol of euro and show them. Function str_replace dont help me.

<?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>
4

3 回答 3

1

str_replace正如您所发现的,它不适用于对象。但是,如果您将其输出到 html,您可以保持实体不变。

如果您需要对其进行解码,请运行您的属性,而不是整个对象,通过html_entity_decode.

于 2013-02-01T01:18:55.973 回答
0

您将无法使用 SimpleXML 直接编辑 XML:

SimpleXML 扩展提供了一个非常简单且易于使用的工具集,用于将 XML 转换为可以使用普通属性选择器和数组迭代器处理的对象。http://www.php.net/manual/en/intro.simplexml.php

您将不得不使用 PHP DOM 扩展:

DOM 扩展允许您使用 PHP 5 通过 DOM API 对 XML 文档进行操作。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

于 2013-02-01T01:39:26.620 回答
0

在您的代码中,$xml 不是字符串,而是 SimpleXMLElement。您可以在加载字符串之前替换 € 实体:

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

只要 $query 是用多字节字符编码的,你应该没问题。如果没有,您可能必须遍历 $xml。

于 2013-02-01T01:22:15.763 回答