PHPでのメタ検索作成について、教えて下さい。

http://search.web-sun.com/sch_tool/mix_sach.html
上記のようなメタ検索を、PHPで自作したいのですが、
文字化けの問題でつまづいています。

グーグル・ヤフーではできたのですが、ウィキペディア・テクノラティだと
日本語で検索した場合、文字化けしてしまうのです。
URLをデコードするのか、サイトの文字コード別に条件を付けなければ
ダメなのでしょうか?

「mb_convert_encoding」で試してみたり「.htaccess」の変更などを
行ってみたのですが、上手く作動できませんでした。
解決法が分かりませんので、どうか教えて頂ければ嬉しいです。

以下PHPスクリプトです。
------------------------------------------------------------
<?php
$strKey=urlencode($_POST['keywd']);

switch($_POST['eng']){
case "yahoo":
$url="http://search.yahoo.co.jp/bin/search?p=";
break;
case "google":
$url="http://www.google.com/search?hl=ja&ie=euc-jp&q=";
break;
}
header("Location: ".$url.$strKey);
?>
------------------------------------------------------------
これを「POST」形式でフォームの処理をしています。

PHPのバージョンは4.4.2です。
(レンタルサーバーなので バージョンを変える事は難しいです)
文字コードは「EUC-JP」です。

回答の条件
  • 1人5回まで
  • 登録:2006/05/23 14:25:30
  • 終了:2006/05/23 18:19:32

ベストアンサー

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/05/23 15:03:37

ポイント60pt

Googleは UTF-8 へのエンコードが必要なんですよね。

URLエンコードと検索エンジン

http://www.bousaid.que.jp/software/urlencode/index.php

[抜粋]

仕組みはいたってシンプルです。(カッコ内はPHP関数)

1.入力フォームから受け取った文字列の文字コードを変更する(mb_convert_encoding)

2.URLエンコード(URLデコード)する(urlencode,urldecode)


このような感じになるのではないでしょうか?

-------------------------------------------------------------------

$data = '検索文字';

$data = mb_convert_encoding($data,"UTF-8",mb_internal_encoding());

$data = urlencode($data);

または、

$data = rawurlencode($data);

-------------------------------------------------------------------


[その他参考]

PHPとJavaScriptのURIエンコードを比較

http://jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode...

Tip-25:PHPでエンコード/デコード

http://www.east.jdmia.or.jp/~tamotsu/tips/tip25.php

id:edoman

ありがとうございます。

ウィキペディア・テクノラティが検索できるようになりました!

UTF-8のサイトでの検索の場合、各caseごとに

$data = mb_convert_encoding($data,"UTF-8",mb_internal_encoding());

を足せば大丈夫でした。

助かりました!

ありがとうございました!!

2006/05/23 18:18:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません