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

countstars 2007-06-25 02:41:51
<?xml version="1.0" encoding="gb18030" ?>
<xml>咔咓吚.</xml>

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

谢谢
...全文
544 点赞 收藏 27
写回复
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
1024*1024 2011-11-24
[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f] 我就是想知道这些都是什么特殊字符
回复
hejunbin 2007-09-21
标记
回复
bcc1o 2007-09-21
。。是LZ
回复
bcc1o 2007-09-21
我靠 怎么发现这里最少的都是两个裤子 除了我

咔咓吚 LS啊 你怎么用日本语言呢 真是
回复
fxs_2008 2007-09-21
学习学习!
回复
countstars 2007-09-20
php 的 xml 解析函数不能解析非utf-8编码的宽字符文档
需要自行编程解决,记得我发过一个的

------------
就是想看你那个,再拿出来晒晒吧-___-!!!
回复
懒得去死 2007-09-19
记得以前我用GB2312的 。结果和其他做CS的同事搞了一天,最后放弃了。改了UTF-8
回复
bcc1o 2007-09-19
我都是gb2312
回复
xuzuning 2007-09-19
php 的 xml 解析函数不能解析非utf-8编码的宽字符文档
需要自行编程解决,记得我发过一个的
回复
countstars 2007-09-19
XML实在是恶心,真不知道怎么办才好
回复
Mistruster 2007-07-02
那你就把
chr(7) 转成
chr(8) 转成
chr(9) 转成
chr(10) 转成
... ...
回复
countstars 2007-07-01
嗯,你这样处理或许不错,不过把非法字符过滤掉了,那就不能保证原样显示,就像CSDN一样,有时候还是很不方便的,很难提供原始数据。
回复
Mistruster 2007-07-01
呵呵,我一般这样:

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);
//... ...
回复
Mistruster 2007-07-01
上面弄错了
htmlspecialchars 应该先转码再放到 <xml></xml> 里的
回复
Mistruster 2007-07-01
$str = "<xml>咔咓吚.</xml>";
//.....
$str = preg_replace("/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/", '', $str);
$str = htmlspecialchars($str);
回复
countstars 2007-07-01
我不知道CSDN贴子显示里,是如何找到那个字符并把它去掉的
回复
countstars 2007-07-01
其中一个字符ord后是7,所以没办法直接发,只能先编码,所以你们一定要用那段。。。
回复
countstars 2007-07-01
先把我哪段代码,转意后,存为XML文档,用IE打开,看看错误信息,再讨论,CDATA没用的
回复
mrshelly 2007-07-01
jom_ch 就回答到点上了.
只是CSDN自动把 "<" 转为 "<" 了.

<?xml version="1.0" encoding="gb18030" ?>
<xml><![CDATA[咔咓吚</test>.]]></xml>
回复
countstars 2007-07-01
你们先把那段encode后的编码decode后用PHP解析函数解析看看,再说问题吧
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告