phpxml特殊字符
A. php 如何解析xml格式字符串
//假设xml字符串
$postStr = '<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[p1]]></Content></xml>';
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
var_mp($postObj);
/**
object(SimpleXMLElement)[16] public 'ToUserName' => string 'toUser' (length=6) public 'FromUserName' => string 'FromUser' (length=8) public 'CreateTime' => string '123456789' (length=9) public 'MsgType' => string 'text' (length=4) public 'Content' => string 'p1' (length=2)
*/
//把xml字符串解析为对象
B. PHP 读取xml格式的字符串
$strXml='<?xml version="1.0" encoding="utf-8" ?><responses code="200" msg="time: 0ms 971us"><response>法国</response><response>德国</response><response>中国</response><response>英国</response><response>泰国</response><response>美国</response><response>韩国</response><response>西兰公国</response><response>中非共和国</response><response>韩国丽水-韩国</response></responses>';
$pos = strpos($strXml, 'xml');
if (!$pos) {
die("不是xml字符串!");
}
$obj=simplexml_load_string($strXml,'SimpleXMLElement', LIBXML_NOCDATA);
if(is_object($obj)){
$obj=get_object_vars($obj);
}
echo "<pre>";
print_r($obj);
另外记得文件一定要是utf-8编码,如果不是记得用iconv函数转一下。
C. php中如何过滤所有的特殊字符
用正则匹配替换
用函数str_replace一个一个替换
D. 如何转义xml中的特殊字符
XML实体中不允许出现"&","<",">"等特殊字符,否则XML语法检查时将出错,如果编写的XML文件必须包含这些字符,则必须分别写成"&","<",">"再写入文件中。例如,如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:
[html] view plain
<age> age < 30 </age>
为了避免出现这种情况,必须将字符"<" 转换成实体,像下面这样:
<age> age < 30 </age>
在读取的时候,解析器会自动将其转换回"&","<",">"等特殊字符,正常来说,只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。
需要注意的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以";"结束;
c. 单独的&不被认为是转义开始;
d. 区分大小写。
以下是XML中需要的转义字符:
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
E. php 如何过滤掉xml中的特殊字符
functionxmlentities($string,$quote_style=ENT_QUOTES)
{
static$trans;
//
//
$string=html_entity_decode($string,ENT_QUOTES);
//xmlencoding
if(!isset($trans))
{
$trans=get_html_translation_table(HTML_ENTITIES,$quote_style);
foreach(array_keys($trans)as$key)
{
$trans[$key]='&#'.ord($key).';';
}
//donttranslatethe'&'incaseitispartof&xxx;
$trans[chr(38)]='&';
}
//aftertheinitialtranslation,_do_mapstandalone'&'into'&'
$str_temp=preg_replace("/&(?![A-Za-z]{0,4}w{2,3};|#[0-9]{2,3};)/u"
,"&"
,strtr($string,$trans)
);
return$str_temp;
}
F. 反序列化失败,xml中有特殊字符,这种情况怎么处理
序列化和反序列化并不是C#独有的,包括java、php、js等都可以做到。序列化是将对象状态转换为可保持或传输的格式的过程,比如转化为二进制、xml、json等的过程。与序列化相对的是反序列化,它将流转换为对象,也就是将在序列化过程中所生成的二进制串、xml、json等转换成数据结构或者对象的过程这两个过程结合起来,可以轻松地存储、传输数据。
G. 再发,如何在XML文件中输入特殊字符
在XML中,有一些符号作为XML 的标记符号,一些特定情况下,属性值必须带有这些特殊符号。下面主要是讲解一些常用的特殊符号的处理
例一:双引号的使用。
双引号作为XML 属性值的开始结束符号,因此无法在值中直接使用"".处理方式可以分为两种。
a:属性值中没有'(单引号),那么可以用单引号'' 作为属性值的开始结束符号
<add key="IPhone" value="apple"/> ...属性值为("apple").
解决:<add key="IPhone" value=’"apple"‘/>
b:属性值中有'(单引号),也有双引号。如...属性值为("'apple").
<add key="IPhone" value=""'apple""/>
下表为 XML 标记使用的字符列出了五种内置实体。
如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。' 和 " 实体引用最常用在属性值中。
H. php 获取 xml节点信息 包含特殊字符怎么处理
attributes是解析出来的,不是别人传过来的,直接用attributes()就可以获取
I. php 特殊字符
输出前用函数进行文本过滤就好了。
$str=str_replace("]]> ", '', $str);
J. 如何处理XML中的特殊字符
在XML中,有一些符号作为XML 的标记符号,一些特定情况下,属性值必须带有这些特殊符号。下面主要是讲解一些常用的特殊符号的处理
例一:双引号的使用。
双引号作为XML 属性值的开始结束符号,因此无法在值中直接使用"".处理方式可以分为两种。
a:属性值中没有'(单引号),那么可以用单引号'' 作为属性值的开始结束符号
<add key="IPhone" value="apple"/> ...属性值为("apple").
解决:<add key="IPhone" value=’"apple"‘/>
b:属性值中有'(单引号),也有双引号。如...属性值为("'apple").
<add key="IPhone" value=""'apple""/>
下表为 XML 标记使用的字符列出了五种内置实体。
如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。' 和 " 实体引用最常用在属性值中。