2011-07-21 14 views
0

私はGETで送信されたクエリワードをユーザーが入力する検索スクリプトを用意しています。ユーザ入力が特殊文字を含む場合。 äpple URLはsearch.php?q=äppleになり、すべて正常に動作します。しかし、ユーザーがこのURLを再度実行した場合、search.php?q=äppleブラウザアドレスフィールドにsearch.php?q=%E4ppleが表示され、クエリが失敗します。その文字列をどのようにデコードする必要がありますか? urldecodeが機能しませんでした。私はこれがまさにそうだと思ったので、何か間違っていますか?または、他のどの機能を試すことができますか?ユーザー入力を特殊文字でデコード

UPDATE 私はsearch.php?q=%E4ppleにはutf8_encodeを使用する場合には、右のä文字を生成しますが、URLの文字列がすでにä GETにより送信されたため、正しく(と作業)されている場合、はutf8_encodeはそれを台無しに。

私は何かをする前にエンコードをチェックしていたのですが、それは簡単な方法ではありませんか?

+1

phpがこれを行うので、これを解読してはいけません。 Btw、あなたのページエンコーディングは何ですか? – zerkms

+0

okありがとう、utf-8と通常のquestionmarkboxが表示されますが、それ以外はすべて動作します。つまり、ブラウザのURLに特別な文字列を含む特別な検索クエリを使用してスクリプトを実行している場合、ブラウザでURLがエンコードされた同じURLでページを再実行します(質問を参照) phpはデコードを処理する必要があるので動作するはずですか? – Joseph

+0

ブラウザ**常に**非ASCII文字をエスケープシーケンスとして送信します。したがって、たとえそれがクエリ文字列で 'ä 'であったとしても、ブラウザはそれを'%nnnn'として送信しました(あなたのウェブサーバアクセスログを見て確認できます) – zerkms

答えて

0

$ _GET ['q']のエンコーディングをチェックして解決し、エンコードチェックの結果に対して適切に処理します。チェックエンコード機能については、http://php.net/manual/en/function.utf8-encode.phpを参照してください。

関連する問題