PHP显示特殊字符

时间:2011-06-15 10:33:23

标签: php xml

我正在尝试通过html文件从xml输出文本.Xml文件是UTF-8格式。我在转换htmlentities($subcat->Name,ENT_QUOTES, "UTF-8")后保存了字符串。字符串在xml中保存为£1.89 - £3.99 per M²

显示我使用了htmlentities_decode($cat->Name,ENT_QUOTES)。但我收到此错误

  

实体'Acirc'未定义。   实体'磅'未定义

我想知道出了什么问题!

3 个答案:

答案 0 :(得分:4)

首先不要使用htmlentities() - XML中不支持大多数HTML实体。

请改用实际的字符数据。

要避免数据破坏XML中的<>,请将数据包装在CDATA块中。

示例:

<product>
 <price>
  <![CDATA[£1.89 - £3.99 per m2]]>
 </price>
</product>

答案 1 :(得分:0)

使用html_entity_decode http://it.php.net/manual/en/function.html-entity-decode.php

没有htmlentities_decode

这样的功能

答案 2 :(得分:0)

如果您使用UTF-8作为源,然后以html格式输出,请记住设置正确的标题和元组:

 <?php
 header ('Content-type: text/html; charset=utf-8');
 ?>
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 </head>

否则你在显示方面遇到问题。

无需解码/编码任何内容,因为Pekka建议您不应该首先对它们进行编码,而是使用CData块。 Ť 如果你正确设置标题和元数据,你只需输出它们。为您节省了大量的工作。

如果您的来源是编码,只需按原样将其输出到浏览器