我遇到了与HTML和XML相关的奇怪问题。请让我知道如何解决它。
示例文字:它“不显示”很好。
使用HTML或PHP直接在页面上打印时输出:它“不显示”正常。
这是取出时的输出&从生成的XML文件打印出来:它没有显示��很好。
XML文件包含此声明:<? xml version= 1.0 encoding= iso-8859-1 ?>
当我尝试在上面的XML文件声明中使用utf-8
而不是iso-8859-1
时,文本不会显示在网页上。
编辑#1:下面是用于显示XML文件数据的代码。
$result_test="";
$result_test=readXml($XML_FILE_PATH."test.xml",$XML_ROOT);
<?php
$arr_test=array_keys($result_test);
if($arr_test[0]!="XML_ROOT") { ?>
<?php
while(list($key, $val) = each($result_test)) {
if(is_array($val)) { ?>
<div><?php print($result_test[$key]["DESC"]);?>/div>
<?php } } ?>
编辑#2:下面是XML文件的数据。在.xml文件中显示方形垃圾字符而不是单引号和双引号,但是当我在此处放置该字符时,它将被删除,因此无法显示。
<?xml version="1.0" encoding="ISO-8859-1"?>
<XML_ROOT>
<P_1>
<DESC><![CDATA[its not displaying fine.]]</DESC>
</P_1>
</XML_ROOT>
答案 0 :(得分:1)
1)CDATA部分无效(缺少>
)
格式:<![CDATA[my data]]>
2)示例如何读取和转换ISO到UTF-8的值:
$source = '<?xml version="1.0" encoding="ISO-8859-1"?>
<XML_ROOT>
<P_1>
<DESC><![CDATA[its not displaying fine.]]></DESC>
</P_1>
</XML_ROOT>';
$dom = new DOMDocument('1.0', 'ISO-8859-1');
$dom->preserveWhiteSpace = false;
$dom->loadXML($source);
$xpath = new DOMXPath($dom);
$desc = $xpath->query('/XML_ROOT/P_1/DESC')->item(0)->nodeValue;
// encode iso to utf8
if (!mb_check_encoding($desc, 'UTF-8')) {
$desc = mb_convert_encoding($desc, 'UTF-8');
}
echo $desc;
答案 1 :(得分:0)
您需要使用转义字符,以便将引号视为文本。
Try using "'" for (') and """ for (")