0

外国文字の問題を整理し、それらをデータベース値と照合しようとしています。

必要に応じてデータベースクエリから一致を取得することができましたが、別の問題が発生し、何が起こっているのかがわかりません。

サイト全体のすべてのページに、サイトを検索するための入力フィールドを持つヘッダーインクルードがあります。 <form action="/search.php" method="get"><input name="q" type="text" />etc...

私の問題のクエリ文字列はこのgrønhøjでした。ホームページの入力フォームにこの文字列を入力すると、次のようなURLで検索ページが表示されます。search.php?q = gr%F8nh%F8j現在は機能しません。ただし、検索ページでimを実行したときに、同じ検索クエリをヘッダー入力に再入力すると、URLが次のようになることを除いて、ページが再読み込みされます。search.php?q=grønhøjこれは機能します。

結果のURLが常に同じである場合、問題はありませんが、一貫性がないため、クエリ文字列の両方の可能なバージョンにソリューションを提供する方法がわかりません。

ですから、2つの質問があると思います。

1)文字列を送信するためにまったく同じフォームを使用しているのに、URLが同じままにならないのはなぜですか?2)URLの両方のバージョンを操作して(または異なるページを停止して異なるURLを生成する)、取得したURLのバージョンに関係なく結果の文字列が一貫するようにするにはどうすればよいですか?

更新:utf8エンコーディングを検出する関数を見つけました。これにより、取得したURLのバージョンに応じて、URL文字列の処理方法を切り替えることができたため、主な問題が修正されました。

ただし、フォームがサイト全体で一貫して含まれているにもかかわらず、異なるページから2つの異なるURL変数を取得する理由を理解したいと思います。何か案は?

4

1 に答える 1

1

この問題を解決する 1 つの方法は、常に を使用してクエリ文字列をデコードしurldecode()、強制的urlencode()に再度使用することです。このように、最初のクエリ文字列が URL エンコードまたはデコードされた場合、何があっても、デコードとエンコードのプロセスが再度実行され、同じ最終クエリ文字列が生成されます。

マニュアル - urlencode

マニュアル - URLデコード

于 2013-02-13T14:34:50.547 に答える