ホームページ >バックエンド開発 >PHPチュートリアル >simplexml を使用してこの XML を解析する方法を教えてください。vardump は常に false です。

simplexml を使用してこの XML を解析する方法を教えてください。vardump は常に false です。

WBOY
WBOYオリジナル
2016-06-23 13:52:13897ブラウズ

モデレーター、また助けが必要です。 。 。これは、Web ページによって返された XML データです。simplexml で読み取れない理由はわかりません。var_dump は false を示します

	echo '#########################'.'</br></br>';	var_dump($xml); 	echo '#########################';	echo '<br>'.'<br>'.'<br>'.$xml->xsm->nickname;

上記の段落を使用して直接印刷すると、次のようになります。

	echo '#########################'.'</br></br>';	var_dump(simplexml_load_string($xml); 	echo '#########################';	echo '<br>'.'<br>'.'<br>'.$xml->xsm->nickname;

このコードを使用して表示します bool (false)
解決策を求める


ディスカッションに返信 (解決策)

$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));

$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));

	//$xml='<!--?xml version="1.0" encoding="gbk"?-->';	$xml = preg_replace('/!--\?|--/','', $xml);	var_dump($xml);

これを試してみましたが、一行でできます正しく一致しますが、このコードでは無効です。 Web 要素ビューアでは、戻り値にまだコメント文字が含まれていることがわかります

なぜ賢くする必要があるのですか?分かりましたので、別の方法を考えたのですが、やはり失敗しました、理由を教えていただけますか?
$xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml));

XML ファイル タグの行を追加するために文字列演算子を使用しましたが、simplexml_load_string を使用しても失敗しました

では、なぜ賢くなろうとしているのですか



渡してください コードを貼り付けてもロードできません...
それは、あなたが私にデータを渡さないからです

それから、なぜあなたはそんなに賢くなければなりません


これは私の後ですコードを直接コピーして貼り付けて実行すると、結果は...

ダンプするには、simplexml の読み込みステートメントを削除する必要があります

スクリーンショットを撮るだけでは役に立ちません。

印刷できない文字が含まれていないことをどのようにして確認できますか?



それはあなたが私にデータを渡さないからです

	$xml = '<xml version="1.0" encoding="gbk"?>'.$xml;	var_dump(simplexml_load_string($xml));
これは fwrite を使用して書いた $xml の値です


コメントアウトされたファイルマークはありませんが、なぜロードできないのかわかりません

スクリーンショットを撮るだけでは意味がありません!

印刷できない文字が含まれていないことをどのようにして確認できますか?

IE で表示すると、
終了タグ 'xsm' が開始タグ 'comShort' と一致しません。

<?xml version="1.0" encoding="gbk"?><xsm code="0000" msg="验证成功abc" trans_time="20140808162708"><userId>114</userId><nickName>wedc</nickName><userType>2</userType><comId>116</comId><saledptId>11601</saledptId><refId>1062014</refId><comName></comName><domainUrl>v=2014080600</domainUrl><comType>02</comType><comShort></comShort><parentComId>11620001</parentComId><expirationTime>1407488228735</expirationTime><planText>10116226011162288228735</planText><signatureValue>c6959b4eacf7b2f</signatureValue></xsm>
これでいいんじゃないの?

スクリーンショットに表示されている文字列の長さは 984 バイトですが、投稿した文字列の長さはわずか 509 バイトです。
400 バイト以上はどこへ行ったのでしょうか?


スクリーンショットを撮るだけではダメです!

印刷できない文字が含まれていないことをどのようにして確認できますか?

モデレーターさん、原因は中国語が含まれているため読み込めないことですが、どうすれば解決できますか?自分のデータではないので変更できません

SimpleXMLElement Object(    [@attributes] => Array        (            [code] => 0000            [msg] => 验证成功abc            [trans_time] => 20140808162708        )    [userId] => 114    [nickName] => wedc    [userType] => 2    [comId] => 116    [saledptId] => 11601    [refId] => 1062014    [comName] => SimpleXMLElement Object        (        )    [domainUrl] => v=2014080600    [comType] => 02    [comShort] => SimpleXMLElement Object        (        )    [parentComId] => 11620001    [expirationTime] => 1407488228735    [planText] => 10116226011162288228735    [signatureValue] => c6959b4eacf7b2f)
これでいいんじゃないでしょうか?

スクリーンショットに表示されている文字列の長さは 984 バイトですが、投稿した文字列の長さはわずか 509 バイトです。
400 バイト以上はどこへ行ったのでしょうか?


残りの400バイトは長い文字列だったので半分削除しました ありがとうございます、原因が分かりました、PHPがutf8でエンコードされていて、取得したxmlデータがgbkなので、Changing gbkをutf8に入れてください問題は解決します


SimpleXMLElement Object(    [@attributes] => Array        (            [code] => 0000            [msg] => 验证成功abc            [trans_time] => 20140808162708        )    [userId] => 114    [nickName] => wedc    [userType] => 2    [comId] => 116    [saledptId] => 11601    [refId] => 1062014    [comName] => SimpleXMLElement Object        (        )    [domainUrl] => v=2014080600    [comType] => 02    [comShort] => SimpleXMLElement Object        (        )    [parentComId] => 11620001    [expirationTime] => 1407488228735    [planText] => 10116226011162288228735    [signatureValue] => c6959b4eacf7b2f)
これは不可能ですか?

スクリーンショットに表示されている文字列の長さは 984 バイトですが、投稿した文字列の長さはわずか 509 バイトです。

400 バイト以上はどこへ行ったのでしょうか?
成功 ~~~~~~[]
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。