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

phpで検索システムを作ろうと思っています。形としては、検索窓を使いサーバー内にあるファイル,例えば「my.db」というファイル内のテキスト文から文字で検索しそれをhtmlで表示させたいです。「my.db」内に”板野友美、2ndシングル発売決定のサプライズに放心状態http://dailynews.yahoo.co.jp/fc/entertainment/akb48/?1297592069.html”というワードがあるとします。これをホームページ上の検索窓から”板野友美”という文字で検索すると「板野友美、2ndシングル発売決定のサプライズに放心状態」という文を「http://dailynews.yahoo.co.jp/fc/entertainment/akb48/?1297592069.html」のリンクと合わせて(検索結果の文字をクリックするとリンクするように)表示させたいのです。(ちなみに「my.db」というファイルは文字コードがSHIFT-JISで中身を見ようとすると文字化けしています。)このようなシステムをphpで作ることは可能なのでしょうか?また、サンプル等があるサイトをご存じでしたら教えていただきたいです。

●質問者: numb08
●カテゴリ:インターネット ウェブ制作
✍キーワード:.DB HTML JIS PHP クリック
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● あすか
●60ポイント ベストアンサー

以下のような感じでどうでしょう。

このスクリプトは UTF-8 形式で保存して下さい。

<?php
mb_internal_encoding('utf-8');
$myself = $_SERVER['SCRIPT_NAME'];
$filename = 'my.db'; //検索対象のファイル名

$q = isset($_GET['q']) ? mb_convert_encoding($_GET['q'], 'utf-8', 'auto') : '';
$res = '';
//検索
if ($q != '') {
 $fp = fopen($filename, 'r');
 while (! feof($fp)) {
 $str = fgets($fp);
 $str = mb_convert_encoding($str, 'utf-8', 'SJIS');
 if (strstr($str, $q) != FALSE) {
 $res .= $str . '<br />';
 }
 }
 fclose($fp);
}
if ($res == '') $res = '(一致するデータがありません)';

//結果表示
echo <<< EOD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form action={$myself} method="GET">
検索キーワード 
<input type="text" name="q" /> 
<input type="submit" value="検索" />
</form>
<p>
検索結果:<br />
{$res}
</p>
</body>
</html>

EOD;
?>
◎質問者からの返答

ご回答ありがとうございます。質問なのですが、”$filename = 'my.db'; //検索対象のファイル名”の部分は相対パスで書けばいいのでしょうか?

関連質問


●質問をもっと探す●



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