データベースを使わないで簡単にサイト内検索の機能を実装する。
まず、サイト内検索の機能を実装したいページに、フォームを挿入する。
<form id="form" name="form" method="post" action="result.php"> <input class="newInput" type="text" id="text" name="text" size="50" value=""> <input type="submit" id="val" value="送信" /> </form>
次に検索結果ページ(ここではresult.php)を新規作成し、検索結果を出力したい部分に下記のPHPタグを挿入する。
初期設定欄は導入するサイトに応じて設定する。
【result.php】
<?php require_once('common.php'); //プログラムファイルパス // 初期設定 -------------------------------------------------------- $str = $_POST['text']; $pass = "http://www.ore-memo.com/"; //サイトURL $csvFileName = "search.csv"; //CSVファイル名 // ----------------------------------------------------------------- // サイト内検索でリンクを出力する関数 funcSiteLink($str, $pass, $csvFileName); ?>
プログラムファイル(ここではcommon.phpという名前)を新規作成し、下記のコードをコピぺ保存する。
検索結果ページと別階層に保存する場合は、検索結果ページに挿入したPHPタグ内の
require_once(‘common.php’);にrequire_once(‘filename/common.php’);と階層を追加する。
【common.php】
<?php //////////////////////////////////////////////////////////////////// // サイト内検索でリンクを出力する関数 // funcRepeated(検索文字列, URL名, csvファイル名); //////////////////////////////////////////////////////////////////// function funcSiteLink($str, $pass, $csvFileName){ if($str){ // 全角スペースを半角スペースに置換 $keyword = mb_convert_kana($str, "s","SJIS"); // キーワードを配列に入れる $arr_keyword = preg_split('/[\s]+/', $keyword, -1, PREG_SPLIT_NO_EMPTY); // csvファイルを開く $file = fopen($csvFileName,"r"); $i = 0; while(!feof($file)){ $csv = fgets($file); //csvファイルを配列に格納 $str = explode(",", $csv); $keywordPassArr[$i] = $str; $i++; } $judg = 0; foreach($arr_keyword as $val){ // 配列分処理 foreach($keywordPassArr as $kpa){ preg_match("/$val/", $kpa[0], $matches, PREG_OFFSET_CAPTURE); if($matches[0][1] === 0){ echo '<p><a href="'.$pass .$kpa[1] .'">' .$kpa[0] .'</a></p>'; $judg++; } } } // 該当がない場合の処理 if($judg === 0){ echo "<p>該当するキーワードがありませんでした</p>"; } fclose($file); }else{ echo "<p>キーワードを入力してください</p>"; } } ?>
最後にテキストエディタなどでcsvファイル(ここではsearch.csv)を新規作成し、
「検索文字,表示ファイル」という形式で検索キーワードを追加していく。
【search.csv】
東京,tokyo.html 神奈川,kanagawa.html 千葉,chiba.html 埼玉,saitama.html 横浜,kanagawa/yokohama.html
このファイルに記述したキーワードが検索されると、
検索結果ページにキーワードに指定したURLへのリンクが出力される。