サイトに検索フォームをつける方法。
ちょいと情報量の多いサイトに便利な、サイトに検索フォームをつける方法の紹介です。
こんな感じに検索フォームをつけることができます。
http://moeten.info/maidcafe/?m=sitesearch&word=tiara
Yahooの検索APIを使用すると簡単にサイト内検索が可能となります。
以下のようなURLで検索結果をXMLとして取得できます。
http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=APIキー&results=20&query=検索キーワード
また、ドメインの絞り込みはsite=yourdomainで絞り込みできるのでこちらを使用してサイト内のみの検索にします。
また、xmlの解析は便利なPEARライブラリのXML Unserializerを使うと作業効率がかなり上がります。
この辺を参考
PHPなソースはこちら
<?php //http://yoursite/?word=keyword $word = trim( urldecode( $_GET['word'] ) ); $word = mb_convert_encoding( $word , "UTF-8" , "SJIS"); $word = urlencode( $word ); $url = "http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=APIキー&results=20&query={$word}&site=moeten.info"; $file = file_get_contents( $url ); require_once 'XML/Unserializer.php'; $Unserializer =& new XML_Unserializer( array('parseAttributes' => true, 'targetEncoding' => 'utf-8' ) ); $status = $Unserializer->unserialize($file); if (PEAR::isError($status)) { die($status->getMessage()); } $xml = $Unserializer->getUnserializedData(); foreach( $xml["Result"] as $key => $val ){ $title = mb_convert_encoding( $val["Title"] , "SJIS" , "UTF-8" ); $summary = mb_convert_encoding( $val["Summary"] , "SJIS" , "UTF-8" ); $url = $val['Url']; $mdate = date("Y年m月d日更新", $val["ModificationDate"] ); echo <<<EOD <p> <a href="{$url}">{$title}</a><br/> <span style="color:green">{$url}</span><br/> {$summary} </p> <p>{$mdate}</p> <hr> EOD; } ?>