人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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」です。

●質問者: edoman
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.htaccess CASE EUC-JP Google PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● llusall
●60ポイント ベストアンサー

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

◎質問者からの返答

ありがとうございます。

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

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

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

を足せば大丈夫でした。

助かりました!

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ