- ベストアンサー
検索フォームに「道路」と書いて検索すると文字列が「\0\0」に変わります
PHPとMySQLで検索システムを構築中の初心者です。 検索フォームに「道路」と書くと「\0\0」と変化し、さらに懲りずにもう一回検索ボタンを押すと、「\\0\\0」と\が増えていきます。 ちなみに「道 路」と間にスペースを置いてand検索は出来ます。 どうすれば解消出来るのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もう解決されましたでしょうか。 こちらでも同じ状況になったので調べてみました。 応急的に直すなら、検索フォームに <input type="hidden" name="dummy" value="雀の往来"> と、確実にEUCコードの文字列をPOSTすることで直るようです。 根本的に直すなら、php.iniにて、mbstringの設定を見直した方がいいかもしれません。
その他の回答 (1)
- awazak
- ベストアンサー率36% (61/165)
もしかしたらこれで解決するかもしれません。 検索フォームに「表示」や「能力」、「ソース」などは正常に機能しますか? しないのであれば、 stripslashes ( string str ) の関数を、検索フォームに入力する値を使う前に、使ってみてください。 例えば、検索にこんな関数を使っていたとします。 function search($word){ mysqlの接続など return $result; } 実際に使用している。直前で、 $word=stripslashes ( $word ); $result=search($word); こんな感じです。
補足
awazak 様 回答頂きありがとうございました。 >「表示」や「能力」、「ソース」などは正常に機能しますか? はい、ちゃんと検索結果が表示されます。 また、 $word=stripslashes ( $word ); を検索フォームに入力する値を使う前に、使ってみました。 すると今度は、「道路」と入力して、検索ボタンを押すと、文字が消え、検索できませんでした。他の文字「表示」や「能力」、「ソース」などはちゃんと表示され検索も出来ます。 なお、検索フォームは $word=stripslashes ( $word ); //教えていただいた関数はここに入れてみました。 echo "<p>検索するキーワード(全角)の一部を入力して、</p>\n"; echo "<form action=\"tecris_kensaku200.php\" method=\"post\" >\n"; echo "<p>検索キーワード:<input type=text name=\"word\" value=\"$word\" size=45 ></p>\n"; echo "<input type=\"hidden\" name=\"sig\" value=\"kkb\">\n"; で検索は $result = mysql_query($sql); としています。
お礼
ありがとうございました。見事解決しました。 感謝、感謝です。 おまじないの言葉、本当にありがとうございました。 でも根本的には直ってない、訳ですね。 実は、社内でXOOPSを立ち上げて、ナレッジシステムを立ち上げているのですが、そこでも検索フォームに「道路」と検索すると、エラーが出てしまいます。 教えていただいたurlを参考に、mbstringの設定を見直してみます。