小金井にあるWEB制作会社の備忘録

MEMORANDUM

PHPを使ってTwitter風のハッシュタグでの自動リンク機能を実装

テキストエリアを使ったテキスト入力時にツイッター(Twitter)のように#(ハッシュタグ)を使って自動リンク(検索機能)を実装した時の方法をメモ。

funciton.php(PHP:独自関数の作成)

独自関数「CreateKeywordLink」を作成し、こちらを使用して、ページに自動リンクを生成。
#(ハッシュマーク)で対象となる本文を区切り、配列に挿入。
この時#(ハッシュマーク)のついていなかった文字列も配列に挿入されるため、こちらは除外する。
また、スペースや改行を含むものも、スペース以降、改行以降の文字は除外する。

function CreateKeywordLink($str) {
	$keywordary = str_replace(array("\r\n", "\r", "\n"), "\n", $str);  //改行コードを1つに統一
	$keywordary = explode('#', $str); //文字列をハッシュタグで分割
	foreach($keywordary as $key => $value) {
		//配列の最初の項目(#のつかない項目)以外を使用
		if($key !=0 ){
			//スペース(半角・全角)が入っている場合は更に分割
			if(strpos($keywordary[$key],' ') !== false) {
				$moreexplode = explode(" ", $keywordary[$key]);
				$keywordary[$key] = $moreexplode[0];
			}else if(strpos($keywordary[$key],' ') !== false) {
				$moreexplode = explode(" ", $keywordary[$key]);
				$keywordary[$key] = $moreexplode[0];
			}
			//改行が入っている場合は更に分割
			if(strpos($keywordary[$key], "\n") !== false) {
				$moreexplode = explode("\n", $keywordary[$key]);
				$keywordary[$key] = $moreexplode[0];
			}
			$keyword[$key] = $keywordary[$key];
			$href[$key] = '<a href="URL?keyword='.$keyword[$key].'">#'.$keyword[$key].'</a>';
		}
	}
	$search = array_values($keyword);
	$replace = array_values($href);
	$str = str_replace($search, $replace, $str);
	return $str;
}

PHP(使用ページ)

include('./function.php');

$txt ='Zoomを使ったオンラインでの海外・国内のツアーのサービスサイト。
受注管理システムはaishipの機能を使用。
各ツアーの詳細ページに設置された予約日のカレンダーはjQuery用プラグイン「datepicker」を使用し、商品登録ページからツアーごとに設定できるよう対応。
サイトを訪れた方に、少しでも旅行気分を味わってもらえるようにと設置したトップページの飛行機は、CSSアニメーションを3パターン用意し、指定するクラスを一定時間ごとに切り替えることで実装しています。

#旅行
#ECサイト
#ショッピングサイト
#aiship';

echo(CreateKeywordLink($txt));

今回は#(ハッシュマーク)をベースにキーワードを作成しているが、キーワードの区切りに使う文字は、文章を作成するのに支障のないものであれば、何でも構わない。