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 分析器錯誤地解釋文檔結構,請使用實體,而不要鍵入字元。' 和 " 實體引用最常用在屬性值中。