http_build_query は URL リクエスト文字列を生成するために使用される関数です。これは非常に単純ですが、このマシンに会社のコミュニティをインストールするときにちょっとした事故が発生しました。しかし、テスト サーバーは正常でした。カーペットのトラブルシューティングの後、問題のコードが見つかりました (デモのみ、機密コンテンツはブロックされています):
[coolcode lang="php"]
$Args = array(
"usr" => "touchboy",
"pwd" = > "123456" ,
"ip" => "127.0.0.1",
"src" => "account"
);
$query= http_build_query( $Args );
[/coolcode]
で得られた結果テストサーバーは次のとおりです:
usr=touchboy&pwd=123456&ip=127.0.0.1&src=account
そして私のローカル結果は次のとおりです:
usr=touchboy &pwd=123456 &ip=127.0.0.1 &src=account
のコネクタに違いがあります。中央、サーバーは正常です。「&」ですが、私のローカルマシンではエスケープされた「&」で、最終的にローカルに送信されたデータでエラーが発生しました。
手元にある PHP マニュアルを確認すると、http_build_query セクションにはこの問題について記載されていませんでした。したがって、思いついた唯一の解決策は、htmlspecialchars_decode( $query) を使用してコネクタを復元することでした。しかし、なぜ 2 つのマシンで結果が異なるのか、それが違いではないかと私は常に疑問を感じていました。 Linux (サーバー) と Windows (ローカルマシン) でしたが、別の Windows マシンでテストしたところ、結果は正常でした。後で、環境設定に問題があるのではないかと考えました。その後、真実が判明しました。 php.ini 設定の行:
[coolcode lang="php"]arg_separator.output = "&"[/coolcode]
arg_separator.output は "&" として定義されます。Apache を再起動すると、問題は解決します。ところで、PHPマニュアルの問題についてお話します。なぜなら、私が使用したマニュアルは、2年半前のDongdongの古典的な「PHP5中国語マニュアルドキュメント版」(2006-11-05作成)であるからです。多くのコンテンツは PHP 5.1.0 段階に留まっているはずです。そこで、Chen Hao (Haohappy) の「PHP 中国語マニュアル」(2009 年 2 月 15 日に作成) をダウンロードして、あるセクションで http_build_query を見つけました。関連するプロンプトの行:
[coolcode lang="php"]
注: パラメーターを区切るには、arg_separator.output を使用します。 [/coolcode]
公式マニュアルにアクセスして最新のマニュアルを確認すると、より詳細な説明があり、この問題を解決するためにバージョン 5.1.2 で $arg_separator パラメータが追加されたことがわかります。マニュアルはまだ非常に遅れており、5.1.2 にする必要があります。何年も前にリリースされ、2009 年 2 月 15 日に編集された最新の中国語マニュアルにはまだ関連する内容が含まれていません
つまり、問題に遭遇したときに時間を節約するための最良の解決策です。 PHP 関数のエラー:
1. できるだけ早く PHP にアクセスして、公式の答えを見つけてください。
手持ちの PHP マニュアルが最新であることを確認してください。
以上、http_build_query関数によるトラブルをその側面も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。