用PHP解析xml如何处理这些字符

时间:2012-10-25 15:04:14

标签: php xml encoding xml-parsing

我正在使用php解析xml文档。

当我在浏览器中看到结果时,我得到以下字符:

Ã而不是西班牙语ñ

Ã而不是í

á而不是á

³而不是ó

é而不是é

我打算使用str_replace并将每个奇怪的字符替换为好的字符,但遗憾的是之前的模式只是偶尔发生,而且一般来说我有很多奇数字符:(

xml标题是:

<?xml version="1.0" encoding="iso-8859-1"?>

但如果我把它改成utf-8就不会打印出来..

我使用simplexml_load_string(来自数据库)将xml加载为字符串

您能否告诉我如何解决这个问题?

非常感谢

4 个答案:

答案 0 :(得分:2)

您有两个选择:

a)在php文件中的任何输出之前包含header('Content-Type: text/html; charset=iso-8859-1');

b)用$str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1');

将输出转换为utf-8

两者都应该做到这一点。

答案 1 :(得分:0)

SimpleXML使用UTF-8编码存储的字符串。您可以将XML文件与iso-8859-1一起使用,但如果要使用此编码打印XML值,则必须先使用utf8_decode

答案 2 :(得分:0)

$ string = preg_replace('/ [\ x00- \ x1F \ x80- \ xFF] /','',$ string);

答案 3 :(得分:0)

// new xml
$xml = new SimpleXMLElement('new.xml'); 

// Displaying XML in textual form
echo $xml->asXML();