Home > web Archive
web Archive
javascriptで検索語句をハイライト表示
- 2008-05-29 (木)
- web
Wordpressにおいて検索語句のハイライト表示は
プラグイン:Search Word Highlight for Multibyte
で可能らしいのですが、wp-cacheと相性が悪いのと、
phpで実現しているため直接ハイライトのタグがガシガシと書き込まれるのは少しいやですので、
私はjavascriptでの実装にすることにしました。
javascriptでの検索語句ハイライトの実装は、
JavaScriptで検索ワードをハイライトする - Open MagicVox.net
検索キーワードをハイライト表示化 | ふるぱ-しゃる
といった記事がとても参考になりますが、日本語対応が完全ではないようです。
ということで本家Scott Yangさんの
Search Engine Keyword Highlight with Javascript
のversion1.5を日本語に対応させました。(といっても後述の通り自分はほとんど何もしてませんが)
se_hilite_jp.js
2008.06.20 : 無限ループすることがあったので修正2008.08.28 : 検索エンジンリスト修正
js内に設定項目もありますが、基本的に設定しなくても動きます。
ハイライトのスタイルを変えたい場合はjsファイルのはじめの数行で設定してください。
文字コードはutf-8、改行コードはCRLFにしてありますので、windows付属メモ帳でも編集可能です。
■実装方法
1.アップロード
2.head内に
<script type="text/javascript" href="http://~~~/se_hilite_jp.js"></script>
■設定項目
●4-10行目ぐらい
ハイライトタグのclassに対するスタイルを設定。
●11-16行目ぐらい
/*ハイライトを指定id内に絞り込み。未設定の場合bodyタグ内*/
elementid:’container’,
/*ハイライト文字列の個数がこれ以上の値になったらいったん表示。*/
max_nodes:1000,
/*ハイライトタグのベース名。*/
style_name:’hilite’,
/*検索語句が複数のときそれぞれ別のスタイルにするか*/
style_name_suffix: true
●17-33行目ぐらい
検索エンジン等の設定。正規表現で、よくわかりませんがエスケープ文字は「\\」ぽいです。
例えばGoogle検索の場合、[".*google\\.","q"]ですが、
第一要素が検索エンジンを識別する正規表現
第二要素のqは、、、例えば、、、
「純白 Maria White 17」で検索すると
http://www.google.co.jp/search?hl=ja&q=%E7%B4%94%E7%99%BD+Maria+White+17
といったアドレスが表示されますが、赤部分が検索語句を表しています。q=のqを指定。
といった感じで新しい検索エンジンを設定できます。
■改点
●3種類のurlエンコード(UTF-8,EUC-JP,Shift_JIS)のデコードに対応。
ヌルコムアーカイブス・デジタル制作室さんのところで公開されているライブラリ、Escape Codec Libraryの一部をマージさせていただきました。
javascriptに実装されているurlデコード関数decodeURIComponentとかdecodeURIは、utf-8でエンコードされた文字列しか扱えないようです。日本語の検索エンジンは、utf-8の他に、EUC-JP、Shift_JISでurlエンコードを行っているものもあるので、その場合、標準実装されている関数ではデコードができません。そこで上記ライブラリを使用させていただきました。
●全角スペースでの語句の区切りに対応。
日本語検索では全角スペースで区切ることも多いので。
●検索エンジンの追加編集等。
日本語の主要検索エンジンはある程度網羅しているつもりです。
Google Yahoo! MSN Live Search Ask.jp goo ocn 百度 BIGLOBE @nifty JP.AOL.COM livedoor au one Excite Technorati
正規表現がちょっとだけわかれば、見よう見まねで追加できます。
わからなければコメント欄やメールフォーム等からお聞き下さい。
(スクリプトの内容はあまり理解してませんが><)
- Comments: 0
- Trackbacks: 0
テスト投稿
普通にテスト投稿してみます
<strong> - strong - 強調
<strong><strong>strongstrong - 強調×2
<em> - emphasize - 強調
<blockquote> - blockquote - 引用
blockquote2
<del> - delete - 打ち消し
<ins> - insert - 追加挿入
- ul list1
- ul list2
- ul list3
- ol list1
- ol list2
- ol list3
code - 等幅フォントが使用される。
$fp = fopen("$filename","w+");
flock($fp,LOCK_EX);
fwrite($fp,"追記");
fclose($fp);
- Comments: 5
- Trackbacks: 0
rsschecker(gzip圧縮)
- 2007-03-29 (木)
- web
さて、zlibの関数ライブラリを用いて、RSSCheckerのアーカイブファイルを圧縮するようにしました。ファイルサイズが大体1/3強ぐらいに圧縮されたようです。
ところで、まだあまり理解してないのかもしれませんが、gzwriteの時とかってファイルを排他制御(flockみたいに)しなくてもファイルは壊れないんでしょうか。
それにしても、データファイルがこんなにもディスクスペースを圧迫するようになるとは思っていませんでした。Mysqlとか使っていなくて(正確には、よく分からなくて使えないので)ファイルで保存しているのですが、初めに考えたファイルの仕様に無駄があります。それを修正すれば(大変そうですが)もう少しファイルサイズを減らせそうです。(例えば現在、記事の投稿日時をISO 8601形式[2007-03-29T00:57:15+9:00みたいな感じ]で保存しているのですが、UNIXのタイムスタンプ形式[1175088600]で保存するようにすると、1記事あたり、14バイトの節約になりますね(圧縮前ですが)。)一見大したことないように見えるかもしれませんが、日時が経てば経つほど、積み重なってきますので結構効果ありそうです。
- Comments: 0
- Trackbacks: 0
覚え書き2
- 2007-03-20 (火)
- web
さて、アンテナとRSSCheckerの覚書です。
★アンテナ
現在、ファイルサイズ変化により更新の有無をチェックしていますが、HTTPヘッダを利用して、チェックできるようにしたいと思います。サーバはphp4しか入っていないので、PEARを使用させていただくことになりそうです。あと、RDSエクスポートとか、カテゴリを分けられるようにするとか、RSS対応とか色々。。。できたらいいな。
関連参考リンク(感謝)
彼の野原 - ScriptLink:色々なアンテナの機能比較されてます。
QUEL Project :Labo:タグ分解&解析関数ライブラリ:現在、更新内容から、HTMLタグを除くために使用させていただいています。
★RSSChecker
・最近ようやく、関数とか引数とかの本当の意味合いが分かってまいりました(遅っ)。(だからPEARとかのライブラリのありがたさというか、すばらしさを実感するわけです。)それで、いままでごちゃごちゃと書いてきたスクリプトをここら辺で整理しようと思っています。
・記事番号の降順表示(これにより、記事数が増えてくると、どこまで閲覧したかがわかりやすくなります。)
・データベースの圧縮(zlibの使用)
とりあえず。
- Comments: 0
- Trackbacks: 0
アンテナっぽいものα
- 2007-02-25 (日)
- web
一応テスト版みたいなのができました。果たしてどんなものかな。すぐに消えると思いますがいったん公開。好きなサイトを自由に登録できます。多分消えますが(笑)
yasi-antenna-alpha別窓。
説明としては・・・
24時間以内に更新(ファイルサイズが変更)されていたらup!が表示されます。
まだフレームとかのことは全然考えられてませんのでフレームページはうまく更新取得できない可能性が高いです。
2重送信対策をしていませんので、情報を再送信してしまうと二重で登録されてしまいます。
1時間に一回しか更新確認されません。
テスト版なのですぐに消えます。多分
なんか重いです。
登録サイト数が増えると激しく重くなる予感がしますorz
追記:さて、更新する時に、とてつもなくレスポンスが悪くなるので、とりあえず、更新機能停止。スクリプトを見直さねば。
追記2:一応更新機能をIFRAMEで埋め込んで、バックグラウンドで働くようにしてみました。誰かバックグラウンド処理できるphp関数とか知りませんか?
- Comments: 0
- Trackbacks: 0
Home > web Archive