重音符号和 ñ xml 问题


Accents and ñ xml problems

我正在尝试创建一个文档XML,但某些字符有问题。我需要替换重音和字母 ñ。

以下代码的输出:

header('Content-type: text/html; charset=utf-8'); 
var_dump($this->xml_entities_s("Relucí"));
It shows:
string 'Reducí'

当我尝试创建 XML 时:

header('Content-type: text/xml; charset=utf-8');
$output = '<?xml version="1.0" encoding="UTF-8"?>';
$output .= $this->xml_entities_s("Relucí");
echo $output;

It shows:
string 'Reducí' 
And I want this to show:
string 'Reduc&#237;'

我需要显示上述内容,因为有一个站点从我的站点获取数据,并且他们要求以这种方式获取带有&#237;的xml中的数据,以便可以正确解析。

    private function xml_entities_s($string) {
           return str_replace(array("<",">",'"',"'","&","á","Á","é","É","í","Í","ó","Ó","ú","Ú","ñ","Ñ"),
                       array("&lt;","&gt;","&quot;","&apos;","&amp;","&#225;","&#193;","&#233;","&#201;","&#237;","&#205;","&#243;","&#211;","&#250;","&#218;","&#241;","&#209;"),
                       $string);
    }

你能帮忙吗?提前谢谢。

你真的不需要对字符进行编码。UTF-8 支持它们。只有具有特殊含义的字符(如<)才需要编码。如果你使用 DOM 来生成 XML,它会处理它。

如果要生成 ASCII XML,可以在构造函数中定义它:

$dom = new DOMDocument('1.0', 'ASCII');
$dom
  ->appendChild($dom->createElement('div'))
  ->appendChild($dom->createTextNode('Relucí'));
echo $dom->saveXml();

输出:

<?xml version="1.0" encoding="ASCII"?>
<div>Reluc&#237;</div>