3

parse_strという PHP 関数を使用して、URL エンコードされたデータ (「name=blah&number=123」など) を PHP 配列に変換しています。正しく動作しますが、「アンプ;」を置きます。最初のキーを除く、結果の連想配列の各キーの先頭。例えば:

response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION

次の配列に変換されます。

Array ( [ \"1.0\" 
encoding=\"utf-8\"?>
response=Fail 
[amp;responsecode] => 1 
[amp;description] => DUPLICATE_TRANSACTION)

次のコードを使用します。

parse_str($response, $response_array);
print_r($response_array);

これらの「amp;」を追加する理由がわかりません。ここで何が問題なのですか?

4

1 に答える 1

0

再現できません:

<?php

$response = 'response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION';
parse_str($response, $response_array);
print_r($response_array);
Array
(
    [response] => Fail
    [responsecode] => 1
    [description] => DUPLICATE_TRANSACTION
)

ただし、コメントの 1 つで役立つヒントを提供します。

string(614) " response=Fail&responsecode=1&description=DUPLICATE_TRANSACTION"

これは明らかに 614 バイトの文字列ではありません。あなたのデータは ではありませんresponse=Fail&responsecode=1&description=DUPLICATE_TRANSACTION

それ、そしてあなたがこれを得ているという事実:

[ \"1.0\" 
encoding=\"utf-8\"?>

... は、実際には XML または HTML ドキュメントを持っていることを示唆していますが、ブラウザにそれを HTML としてレンダリングさせているため、タグは非表示になっています。実際の入力を表示するには、ブラウザの「ソースの表示」機能 (通常はCtrl+ ) を使用してください。U

于 2013-07-25T06:46:37.830 に答える