ホームページ >バックエンド開発 >PHPチュートリアル >XML解析
array(2) {
["header"]=>
string(267) "HTTP/1.1 200 OK
サーバー: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=BDED717E8585DDA55A47EA1822C00E80; Path=/sdkproxy/; Ht tpのみ
Content-Type: text/html;charset=UTF-8
Content-Language: en-GB
Content-Length: 103
Date: Sat, 24 Aug 2013 02:38:00 GMT
接続: close"
[" body"]=>
string(103) "
52b189f45abba88b2989c5c1f30b7a3428fd9563ce99120143e7b3cb584755f8bbbcc7d749ec7f3e0fb2ba5af34b74a704c8d80f29f204b22c4490983d39ebac7761b5f615852937c78510c6ee32be47a- 1100.0dc97c94abba54b3574a1f2a9fcb1679b5926afb69347ced47e61d1fa57648b84"
}
は Web サーバーの戻り値です
simplexml_load_string を使用して解析し、false を返します。驚きました
['body'] の内容がどのように変換されるか配列形式に変換します
$xml_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><response><error>0</error><message>-1100.0</message></response>"; $xml = simplexml_load_string($xml_string); //对象转换成数组,方便引用 $arr = (array)$xml; var_dump($arr);
$ar = simplexml_load_string($data['body'])
;私はまだそれほど上手ではありません この低レベルの間違いをしてください
あなたがどのような高レベルの間違いを犯すかわかりません
$s = '<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>';$xml = simplexml_load_string($s);print_r($xml);SimpleXMLElement オブジェクト (
[エラー] => 0
[メッセージ] => - 1100.0
)
どのような高レベルの間違いを犯すかわかりません 高度なエラー
$s = '<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>';$xml = simplexml_load_string($s);print_r($xml);SimpleXMLElement オブジェクト (
[エラー] => 0
[メッセージ] => -1100.0
)
問題ここで bool(false) を返すということです
受け取ったデータのシリアル化された値を投稿します
echo Serialize($data);
結果を投稿します
を投稿します受信したデータのシリアル化された値
echoserialize($data)
結果を投稿します
a:2:{s:6:"header";s :267:"HTTP/1.1 200 OK
サーバー: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnly
Content-Type: text/html;charset=UTF-8
コンテンツ-言語: en-GB
Content-Length: 103
日付: Sat, 24 Aug 2013 03:22 :14 GMT
接続: close";s:4:"body";s:103:"
d1b723b1d56d15ff64eac07f2c39278728fd9563ce99120143e7b3cb584755f8bbbcc7d749ec7f3e0fb2ba5af34b74a7 04c8d80f29f204b22c4490983d39ebac7761b5f615852937c78510c6ee32be47a-1100.0dc97c94abba54b3574a1f2a9fcb1679b5926afb69347ced47e61d1fa57648b84";}
データの問題です
$s = 'a:2:{s:6:"header";s:267:"HTTP/1.1 200 OKServer: Apache-Coyote/1.1Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnlyContent-Type: text/html;charset=UTF-8Content-Language: en-GBContent-Length: 103Date: Sat, 24 Aug 2013 03:22:14 GMTConnection: close";s:4:"body";s:103:"<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>";}';$d = unserialize($s);$xml = simplexml_load_string(trim($d['body']));print_r($xml);SimpleXMLElement Object (
[error] => 0
[message] => -1100.0
)
データを取得したときに、きれいに切り取られていませんでした。
http データヘッダーとデータ本体の間に「rnrn」があり、それを「rn」でカットします
したがって、データ本体の前に「rn」が残っていると、分析が失敗します
$s = 'a:2:{s:6:"header";s:267:"HTTP/1.1 200 OKServer: Apache-Coyote/1.1Set-Cookie: JSESSIONID=96B4D5E802AEBBE6A1F92824C576690B; Path=/sdkproxy/; HttpOnlyContent-Type: text/html;charset=UTF-8Content-Language: en-GBContent-Length: 103Date: Sat, 24 Aug 2013 03:22:14 GMTConnection: close";s:4:"body";s:103:"<?xml version="1.0" encoding="UTF-8"?><response><error>0</error><message>-1100.0</message></response>";}';$d = unserialize($s);$xml = simplexml_load_string(trim($d['body']));print_r($xml);SimpleXMLElement オブジェクト (
[エラー] => 0
[メッセージ] => -1100.0 )
データを取得したときに、きれいにカットされませんでした。
http データヘッダーとデータ本体の間に "rnrn" があり、それを "rn" で切り取っています
つまり、データ本体の前にある "rn" が原因で分析が失敗します
これがまさに理由です、丁寧なご回答ありがとうございます