まずコードを使用して問題を再現します
一見すると、結果は不可解です:
コードをコピーします コードは次のとおりです:
$string = <<
helloバー>
<バー>
$data = simplexml_load_string($string);
print_r($data);
print_r($data->foo);
一見すると、結果は不可解です:
コードをコピー
コードは次のとおりです:SimpleXMLElement オブジェクト
(
[foo] => 配列
(
[0] => SimpleXMLElement オブジェクト
(
[bar] => hello)
)
[1] => SimpleXMLElement オブジェクト
(
[bar] => ワールド
)
)
)
SimpleXMLElement オブジェクト
(
[bar] => こんにちは
)
明らかに print_r は foo が 2 つの bar 要素を持つ配列であることを示していますが、最終的には 1 つの bar 要素だけが表示されます。
その理由は実際には非常に簡単です。上記の simplexml_load_string の結果では、foo は配列ではなく、反復可能なオブジェクトです。 次のように確認できます:
コードをコピー
コードは次のとおりです:foreach ($data->foo as $v) print_r($v);
foreach ($data->children() as $v) print_r($ v);
print_r や var_dump の出現は完全に信頼できるものではないようですので、より注意してください。
取得した XML データが次のとおりであるとします: (curl、fsockopen などを使用して取得できます)
コードをコピーします
コードは次のとおりです:
こんにちは Array;Array;Array;
< ; orig>久しぶりにお元気ですか?
お元気ですか?
こんにちは!お元気ですか?
こんにちは?
こんにちは、ブルックス!お元気ですか?
こんにちは、ブルックス!大丈夫ですか?
こんにちは、バーバラ、お元気ですか?
こんにちは、バーバラ、お元気ですか?
お元気ですか? - 元気です、ありがとうございます。
お元気ですか? -わかりました、ありがとう。
simplexml_load_string を通過します:
コードをコピーします コードは次のとおりです:
SimpleXMLElement オブジェクト
(
[@attributes] => Array
[name] => 219
)
[容認] = Array;
️
)
️こんにちは、ブルックスさん、お元気ですか?
| やあ、バーバラ、調子はどう?
gt; 調子はどうですか? - ありがとう。
)
)
次のメソッドを使用して、PHP 言語で必要な値を取得できます:
コードをコピーします
コードは次のとおりです:
$data = <<
こんにちは
Array;Array;Array;
久しぶりにお元気ですか?
お元気ですか?
こんにちは!お元気ですか?
こんにちは?
こんにちは、ブルックス!お元気ですか?
こんにちは、ブルックス!大丈夫ですか?
こんにちは、バーバラ、お元気ですか?
こんにちは、バーバラ、お元気ですか?
お元気ですか? - 元気です、ありがとうございます。
お元気ですか? -わかりました、ありがとう。
XML;
$xmldata = simplexml_load_string($data);
header("Content-Type: text/html; charset=UTF-8");
print_r($xmldata);
echo "
".trim($xmldata->sent[0]->orig); //久しぶりにお元気ですか。 ?
echo "
".trim($xmldata->key); //こんにちは
?>
http://www.bkjia.com/PHPjc/735236.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/735236.html技術記事まず、コードを使用して問題を再現します。一見すると、結果は非常に混乱します。次のようにコードをコピーします。 ?php $string = EOF data foobarhello/bar/foo foobarworld/bar/foo /data EOF; ...