サイト内検索の機能があると非常に有利になります。フォームから入力されたフリーワードを使って、CSVから任意のデータだけ取り出す検索機能を作ってみましょう。
CSVファイルを配列として読み込み1行ずつ条件と一致するか調べます。基本的には「カテゴリー別ページ」を作るのとまったく同じ仕組みです。まずキーワードを入力するフォームを作ります。
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。
僕が使っているサーバーとドメイン管理のレジストラーです。
§フリーワード検索を作る
サイト内検索の機能があると非常に有利になります。
フォームから入力されたフリーワードを使って、CSVから任意のデータだけ取り出す検索機能を作ってみましょう。
基本はカテゴリー別ページと同じ
CSVファイルを配列として読み込み1行ずつ条件と一致するか調べます。
基本的には「カテゴリー別ページ」を作るのとまったく同じ仕組みです。
まずキーワードを入力するフォームを作ります。
<input type="text" name="key">
<input type="submit" name="submit" value="検索">
</form>
1行テキスト・フィールド「name」に入力されたキーワードを検索用のプログラム「search.php」にGETで送信します。
このフォームを貼り付けた他のページからでも検索できます。
プログラムが同一ディレクトリで無い場合は、action属性で指定するパスに気をつけてください。
次に検索プログラムのソースです。
seach.php
<?php
if($_GET["key"]!=""){ //解説(1)
$KeyWord=$_GET["key"];
$KeyWord=htmlspecialchars($KeyWord); //解説(2)
$Data=file("item.csv");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]); //解説(3)
if(mb_eregi($KeyWord‚ $lines)){ //解説(4)
$line=explode("‚ "‚ $Data[$i]);
?>
<li><?=$line[3]?> → <a href="item.php?id=<?=$line[0]?>">詳細を見る</a></li>
<?php
}
}
}
?>
</ul>
解説(1)
キーワード(key)が空でなければ以下の処理を実行します。
解説(2)
くどいようですが、セキュリティーのため不特定多数の他人が入力したデータを受け取る場合は必ずhtmlspecialcharsで処理しましょう。
解説(3)
HTMLタグを検索対象からはずすためstrip_tagsで処理します。
strip_tagsは文字列からHTMLタグだけを削除します。
解説(4)
文字列検索にはmb_eregi関数やpreg_match関数を使います。
mb_eregi関数は大文字、小文字を区別せずに検索できます。
一致する文字列があればtrueを無ければfalseを返します。
mb_eregi("検索する文字列"‚ "検索対象の文字列")
mb_eregi関数の返り値がtrueのときは行をカンマで分解し、必要なリンクを生成します。
falseのときは次の行の検索が始まります。
ココまでが検索の基本的な仕組みです。
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。