start_time: 2023-12-09 00:36:28 +0800

XML 解析中,如何排除控制字符

96
dreamer_lk
IP属地: 河南
2018.12.27 17:11 字数 793

今天在解析一个中文的 XML时,始终报错 PCDATA invalid Char value 21 in Entity ,查询了一下这个 21 的ascii 值,
发现是:

| 0001 0101 | 21 | 15 | NAK | ␕ | 确认失败回应 |

怎么会有这样奇怪的字符,我也搞不清楚。google 一下这个错误,发现很多网站都报这样的错误,就是没有一篇文章
说明为什么出错了。折腾了半天,后来又看了Libxml的源代码,发现下面的字符要在字符串里面排除掉:

| 二进制 | 十进制 | 十六进制 | 缩写 | 可以显示的表示法 | 名称/意义 |
| 0000 0000 | 0 | 00 | NUL | ␀ | 空字符(Null) |
| 0000 0001 | 1 | 01 | SOH | ␁ | 标题开始 |
| 0000 0010 | 2 | 02 | STX | ␂ | 本文开始 |
| 0000 0011 | 3 | 03 | ETX | ␃ | 本文结束 |
| 0000 0100 | 4 | 04 | EOT | ␄ | 传输结束 |
| 0000 0101 | 5 | 05 | ENQ | ␅ | 请求 |
| 0000 0110 | 6 | 06 | ACK | ␆ | 确认回应 |
| 0000 0111 | 7 | 07 | BEL | ␇ | 响铃 |
| 0000 1000 | 8 | 08 | BS | ␈ | 退格 |
| | | | | | |
| | | | | | |
| 0000 1011 | 11 | 0B | VT | ␋ | 垂直定位符号 |
| 0000 1100 | 12 | 0C | FF | ␌ | 换页键 |
| | | | | | |
| 0000 1110 | 14 | 0E | SO | ␎ | 取消变换(Shift out) |
| 0000 1111 | 15 | 0F | SI | ␏ | 启用变换(Shift in) |
| 0001 0000 | 16 | 10 | DLE | ␐ | 跳出数据通讯 |
| 0001 0001 | 17 | 11 | DC1 | ␑ | 设备控制一(XON 启用软件速度控制) |
| 0001 0010 | 18 | 12 | DC2 | ␒ | 设备控制二 |
| 0001 0011 | 19 | 13 | DC3 | ␓ | 设备控制三(XOFF 停用软件速度控制) |
| 0001 0100 | 20 | 14 | DC4 | ␔ | 设备控制四 |
| 0001 0101 | 21 | 15 | NAK | ␕ | 确认失败回应 |
| 0001 0110 | 22 | 16 | SYN | ␖ | 同步用暂停 |
| 0001 0111 | 23 | 17 | ETB | ␗ | 区块传输结束 |
| 0001 1000 | 24 | 18 | CAN | ␘ | 取消 |
| 0001 1001 | 25 | 19 | EM | ␙ | 连接介质中断 |
| 0001 1010 | 26 | 1A | SUB | ␚ | 替换 |
| 0001 1011 | 27 | 1B | ESC | ␛ | 跳出 |
| 0001 1100 | 28 | 1C | FS | ␜ | 文件分割符 |
| 0001 1101 | 29 | 1D | GS | ␝ | 组群分隔符 |
| 0001 1110 | 30 | 1E | RS | ␞ | 记录分隔符 |
| 0001 1111 | 31 | 1F | US | ␟ | 单元分隔符 |
| 0111 1111 | 127 | 7F | DEL | ␡ | 删除 |

大多数都在 31 以前的几个字符,注意,还有个字符 127 要去掉。去掉的方法我是用正则,用下面的正则就可以
去掉了:

[//x00-//x08//x0b-//x0c//0e-//1f//7f]。
$val = preg_replace("/[//x00-//x08//x0b-//x0c//0e-//1f//7f]/", '', $val);
最后编辑于 :2018-12-27 17:11:25
©著作权归作者所有,转载或内容合作请联系作者
序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 120193 评论 1 赞 241
序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 52538 评论 1 赞 203
文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
8 开封第一讲书人 阅读 75483 评论 0 赞 168
文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
8 开封第一讲书人 阅读 36788 评论 0 赞 128
正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 43625 评论 1 赞 208
文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
8 开封第一讲书人 阅读 36172 评论 1 赞 127
那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 28139 评论 2 赞 209
文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
8 开封第一讲书人 阅读 27256 评论 0 赞 120
想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
D57447c1 36d6 4f0d ae1c 0a373fd91dfd 爱写小说的胖达 阅读 26207 评论 5 赞 173
序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 30340 评论 0 赞 179
正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 27518 评论 1 赞 170
正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 28775 评论 1 赞 179
白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
D57447c1 36d6 4f0d ae1c 0a373fd91dfd 爱写小说的胖达 阅读 23044 评论 0 赞 25
序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 25682 评论 2 赞 166
正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 29566 评论 3 赞 174
文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
8 开封第一讲书人 阅读 24541 评论 0 赞 4
文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
8 开封第一讲书人 阅读 24512 评论 0 赞 114
我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 30791 评论 2 赞 192
正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 31171 评论 2 赞 189
end_time: 2023-12-09 00:36:28 +0800 Completed in 171.594626ms