博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>
阅读量:6850 次
发布时间:2019-06-26

本文共 2169 字,大约阅读时间需要 7 分钟。

处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>

// xml 转义特殊字符 如&'" <![CDATA["标记开始,以"]]>标记结束

不能直接把data进行for循环,否则里面的数组对象就变成一个对象字符了

// xml 转义特殊字符 如&'" <![CDATA["标记开始,以"]]>标记结束

$xml .= (is_array($val) || is_object($val)) ? data_to_xml($val, $item, $id) : '<![CDATA['.$val.']]>';
必须是最终文本值才能加上这个<![CDATA[xxx]]>
测试xml特殊字符&&&#@R<>>d?#dfasf*()@!~-=+_''"":;,./

ThinkPHP/Common/functions.php

1 /** 2  * XML编码 3  * @param mixed $data 数据 4  * @param string $root 根节点名 5  * @param string $item 数字索引的子节点名 6  * @param string $attr 根节点属性 7  * @param string $id   数字索引子节点key转换的属性名 8  * @param string $encoding 数据编码 9  * @return string10  */11 function xml_encode($data, $root='think', $item='item', $attr='', $id='id', $encoding='utf-8') {12     if(is_array($attr)){13         $_attr = array();14         foreach ($attr as $key => $value) {15             $_attr[] = "{
$key}=\"{
$value}\"";16 }17 $attr = implode(' ', $_attr);18 }19 $attr = trim($attr);20 $attr = empty($attr) ? '' : " {
$attr}";21 $xml = "
";22 $xml .= "<{
$root}{
$attr}>";23 $xml .= data_to_xml($data, $item, $id);24 $xml .= "
";25 return $xml;26 }27 28 /**29 * 数据XML编码30 * @param mixed $data 数据31 * @param string $item 数字索引时的节点名称32 * @param string $id 数字索引key转换为的属性名33 * @return string34 */35 function data_to_xml($data, $item='item', $id='id') {36 $xml = $attr = '';37 foreach ($data as $key => $val) {38 if(is_numeric($key)){39 $id && $attr = " {
$id}=\"{
$key}\"";40 $key = $item;41 }42 $xml .= "<{
$key}{
$attr}>";43 // xml 转义特殊字符 如& 以标记结束,必须是最终文本值才能加上这个44 $xml .= (is_array($val) || is_object($val)) ? data_to_xml($val, $item, $id) : '';45 $xml .= "
";46 }47 return $xml;48 }

 

---------------------------------

&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ' 单引号
&quot; " 双引号
实体必须以符号"&"开头,以符号";"结尾。 注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。
剩下的都是合法的,为了减少出错,使用实体是一个好习惯。

基本的html转义字符特殊字符

字符 十进制    转义字符
“      &#34;   &quot;
&     &#38;   &amp;
<     &#60;   &lt;
>     &#62;   &gt;
空格  &#160; &nbsp;

-----------------------------

转载地址:http://vmrul.baihongyu.com/

你可能感兴趣的文章
无法解析或打开软件包的列表或是状态文件
查看>>
Ubuntu 12.04搭建Ruby on Rails开发环境
查看>>
Linux原子操作
查看>>
C++ 使用STL string 实现的split,trim,replace-修订
查看>>
2011年7月10个非常棒的jQuery插件
查看>>
.NET简谈事务、分布式事务处理
查看>>
我是如何推理出王珞丹住址的zz
查看>>
C#泛型列表List<T>基本用法总结
查看>>
《UNIX环境高级编程》单个源码编译方法
查看>>
追涨必须具备的四个条件
查看>>
最大存款方式
查看>>
GridView删除时激发了未处理的事件“RowDeleting"
查看>>
ZOJ 3213 Beautiful Meadow
查看>>
什么是聚合根
查看>>
机器学习&数据挖掘笔记_17(PGM练习一:贝叶斯网络基本操作)
查看>>
图像旋转
查看>>
css两列等高布局
查看>>
PHP适合做大型网站吗?
查看>>
lua入门之二:c/c++ 调用lua及多个函数返回值的获取
查看>>
C使用FILE指针文件操作
查看>>