首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

唠叨老大还在么?XML解析出错,5555

2012-03-13 
唠叨老大还在么?XML解析出错求助,5555?xmlversion 1.0 encoding gb18030 ?xml 咔咓吚. /xml

唠叨老大还在么?XML解析出错求助,5555
<?xml   version= "1.0 "   encoding= "gb18030 "   ?>  
<xml> 咔咓吚. </xml>

怎么确保标签中的字符符合XML?要做什么处理?
真的很难确保XML文档准确性,让它能够让PHP的XML解析函数解析
有没有正则之类的XML解析器。
我只想解析这个文档,如何去掉/转意这些字符?这些字符都包括什么字符?

谢谢

[解决办法]
用UTF-8应该不会存在这个问题

1.改为
<?xml version= "1.0 " encoding= "utf-8 " ?>
<xml> 咔咓吚. </xml>

2.将xml文件用记录本另存为 utf-8格式

3.PHP文件本身也用记事本存为utf-8

4.在PHP文件头部加上
header( 'Content-type:text/html;charset=utf-8 ');


欢迎加入PHP爱好者QQ群:30169840
[解决办法]
呵呵,UTF-8 的编码格式应该没有什么问题。
但是,估计楼主不喜欢 UTF-8 这种格式吧。

[解决办法]
我帮你顶起来。期待答案。
[解决办法]
<xml> <![CDATA[咔咓吚.]]> </xml>
[解决办法]
不用utf-8编码也可以,我自己写的程序,只有php程序,编码都是gb2312的,刚开始也报编码错误那个,后来改成utf-8不行,结果都改成gb2312就好了!有人说,好像只要保证几个页面的编码一致就可以了,具体还有待验证!
[解决办法]
jom_ch 就回答到点上了.
只是CSDN自动把 " < " 转为 "&lt; " 了.

<?xml version= "1.0 " encoding= "gb18030 " ?>
<xml> <![CDATA[咔咓吚 </test> .]]> </xml>
[解决办法]
$str= " <xml> 咔咓吚. </xml> ";
//.....
$str= preg_replace( "/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/ ", ' ', $str);
$str= htmlspecialchars($str);
[解决办法]
上面弄错了
htmlspecialchars 应该先转码再放到 <xml> </xml> 里的
[解决办法]
呵呵,我一般这样:

function SBC_DBC($Str)
{
//---- 全角都转成半角 ----
$Queue = Array(
'0 ' => '0 ', '1 ' => '1 ', '2 ' => '2 ', '3 ' => '3 ', '4 ' => '4 ',
'5 ' => '5 ', '6 ' => '6 ', '7 ' => '7 ', '8 ' => '8 ', '9 ' => '9 ',
'A ' => 'A ', 'B ' => 'B ', 'C ' => 'C ', 'D ' => 'D ', 'E ' => 'E ',
'F ' => 'F ', 'G ' => 'G ', 'H ' => 'H ', 'I ' => 'I ', 'J ' => 'J ',
'K ' => 'K ', 'L ' => 'L ', 'M ' => 'M ', 'N ' => 'N ', 'O ' => 'O ',
'P ' => 'P ', 'Q ' => 'Q ', 'R ' => 'R ', 'S ' => 'S ', 'T ' => 'T ',
'U ' => 'U ', 'V ' => 'V ', 'W ' => 'W ', 'X ' => 'X ', 'Y ' => 'Y ',
'Z ' => 'Z ', 'a ' => 'a ', 'b ' => 'b ', 'c ' => 'c ', 'd ' => 'd ',
'e ' => 'e ', 'f ' => 'f ', 'g ' => 'g ', 'h ' => 'h ', 'i ' => 'i ',


'j ' => 'j ', 'k ' => 'k ', 'l ' => 'l ', 'm ' => 'm ', 'n ' => 'n ',
'o ' => 'o ', 'p ' => 'p ', 'q ' => 'q ', 'r ' => 'r ', 's ' => 's ',
't ' => 't ', 'u ' => 'u ', 'v ' => 'v ', 'w ' => 'w ', 'x ' => 'x ',
'y ' => 'y ', 'z ' => 'z ', '- ' => '- ', '! ' => '! ', '。 ' => '. ',
', ' => ', ', '% ' => '% ', '、 ' => ', ', '# ' => '# ', '¥ ' => '$ ',
'* ' => '* ', '( ' => '( ', ') ' => ') ', '| ' => '| ', '+ ' => '+ ',
'[ ' => '[ ', '] ' => '] ', '{ ' => '{ ', '} ' => '} ', '~ ' => '~ ',
': ' => ': ', '; ' => '; ', '/ ' => '/ ', '? ' => '? ', '— ' => '- ',
'“ ' => ' " ', '” ' => ' " ', '‘ ' => " ' ", '’ ' => " ' ", '· ' => '. '
);
$Str= preg_replace( "/([\xA3][\xA1-\xAF\xB0-\xBF\xC1-\xDA\xE1-\xFC])/e ", "\$Queue[\\1] ", $Str);
$Str= preg_replace( "/([\xA1][\xA1-\xAF\xB0-\xB9])/e ", "\$Queue[\\1] ", $Str);
return($Str);
}
function replace_xml($str)
{
//---- XML 非法字符过滤 ----
$str= SBC_DBC($str);
$str= preg_replace( "/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/ ", ' ', $str);
$str= preg_replace( "/[\r\n]+/ ", "\n ", $str);
$str= preg_replace( "/[ \t]+/ ", " ", $str);
$str= trim($str);
$str= htmlspecialchars($str);
return $str;
}


//... ...
$str= "... ... ";
$str= replace_xml($str);
//... ...
[解决办法]
那你就把
chr(7) 转成 &#07;
chr(8) 转成 &#08;
chr(9) 转成 &#09;
chr(10) 转成 &#10;
... ...
[解决办法]
php 的 xml 解析函数不能解析非utf-8编码的宽字符文档
需要自行编程解决,记得我发过一个的
[解决办法]
我都是gb2312

[解决办法]
记得以前我用GB2312的 。结果和其他做CS的同事搞了一天,最后放弃了。改了UTF-8
[解决办法]
学习学习!
[解决办法]
我靠 怎么发现这里最少的都是两个裤子 除了我

咔咓吚 LS啊 你怎么用日本语言呢 真是
[解决办法]
。。是LZ
[解决办法]
标记

热点排行