【PHP】簡易型サイト内検索のサンプルコード

データベースを使わないで簡単にサイト内検索の機能を実装する。

サイト内検索

まず、サイト内検索の機能を実装したいページに、フォームを挿入する。

<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へのリンクが出力される。

【PHP】簡易型サイト内検索のサンプルコード” への2件のコメント

  1. データベースを使わないものを探していたところ、こちらを見つけました。
    データベースを使わない点と、編集が容易にできるところが良さそうなので、自サイトで使用したいと思います!

    * * *

    本サンプルを使用した旨をブログ内で「俺メモ」様HPのリンクつきで
    紹介しようと思うのですが、
    もし問題ありましたら、その旨ご連絡頂けましたら幸いです。

    * * *

    • サンプルコードとして公開しているものなので、自由に使ってもらって大丈夫です(^-^)ご連絡ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>