*「単語検索」をより便利に使うために -投稿者: [[reimy]] -優先順位: 普通 -状態: 提案 -カテゴリー: 本体新機能 -投稿日: 2002-06-27 (木) 14:12:58 **メッセージ 現在の「単語検索」はヒットしたページへのリンクが表示されるだけですが、そのリンクをクリックして該当ページを表示するときにヒットした文字列をマーキングして表示するようになれば便利。 <span style="background-color:yellow">検索文字列</span>という感じのマーキング。 「単語検索」の結果のリンクから飛ぶときに検索文字の受け渡しをして、そのときだけ表示ルーチンの中でマーキング処理するって形になるのかな。 ---- 本文をマーキングして表示するルーチンがあれば、プラグインでも使えそう。 ページ先頭に検索窓を表示して、そのページの中でヒットした文字列にマーキングして表示するというような。 実はこれってInternet Explorerであれば、JavaScriptで実現可能なんですが、IE限定になっちゃうので。 JavaScript (IEのみ)でのサンプル 関数定義 function markword(word) { tags = document.body.all.tags; var re = new RegExp("("+ word + ")", "gl"); for(i = 0; i < tags.length; i++){ text = tags[i].innerHTML; newtext = text.replace(re, <span style='background:yellow'>$1</span>"); tags[i].innerHTML = newtext; } } HTML内での関数呼出し <form> <div> <input type="text" name="text"> <input type="button" name="検索" onClick="markword(this.form.text1.value)"> </div> </form> 長文のページなどでは、けっこう便利に使えるので、PukiWikiでも実現してほしいです。 ---- -PukiWikiで実現するには''mbstringが使えるPHP限定''という制限が出来ちゃうんですよね。PHP4.2系からはmbstringは標準装備だからそろそろ解禁しちゃってもいいのかもしれないですけど。 -- [[kawara]] SIZE(1):2002-06-27 (木) 17:36:05 -PHP4.0.6からmb_jstring(mbstring)は付属してるので、レンタル系でも日本の業者なら組み込んでると思いますが。PukiWikiの動作環境もマルチバイト対応モジュールを組み込んだ4.0.6以降としているので問題ないでしょう。 -- [[reimy]] SIZE(1):2002-06-27 (木) 18:19:10 -mbstringだけで足りたかな。mbregexも使いたいところなんだけど、mbregexっていつからくっついてきてるんだろう。 -- [[kawara]] SIZE(1):2002-06-27 (木) 19:03:57 -mbregexもmbstringと同じく4.0.6から標準添付されています。4.0.7のリリース前にPHP4にマージしようという話がPHP-devで出てましたから、もうずいぶん経つはずです。[[参考:http://ns1.php.gr.jp/pipermail/php-dev/2001-August/000041.html]] -- [[reimy]] SIZE(1):2002-06-27 (木) 21:06:44 -毎日新聞の記事検索がこの機能があるのでなかなか便利なのだ。 -- [[reimy]] SIZE(1):2002-06-29 (土) 15:25:28 -暫定的に検索結果に本文を部分表示させてみました(添付func.php)。複数ワード時は表示方法をどうしようか思案中です。どんなもんでしょう?(まだ表示に難ありかな・・・) -- [[baniko]] SIZE(10){2002-11-20 (水) 17:37:54} --googleでキャッシュを開いたときみたいに色分けしてみるとか :) -- [[ぱんだ]] SIZE(10){2002-11-20 (水) 22:56:38} --あ。<ul><li></li><ul>のところは<ul><li><ul>...</ul></li>としたほうがいいと思いますよ。 -- [[ぱんだ]] SIZE(10){2002-11-20 (水) 22:57:45} ---<li>のネストは[[BugTrack/30]]でも上がっていますが、難しいところですね。おっしゃる通りにすると、ネストされた項目の前の行間が広くて・・・。あぁhtmlspecialchars()通すのを忘れてました。(添付し直し) -- [[baniko]] SIZE(10){2002-11-21 (木) 09:43:41} -$retval[$name2] = "<li>$link_tag</li><ul><li class=\"result\">$res_line</li></ul>"; +$retval[$name2] = "<li>$link_tag<ul><li class=\"result\">$res_line</li></ul></li>"; ---行間が広い…?なんででしょうか。スタイルが悪さをしているのかな? -- [[ぱんだ]] SIZE(10){2002-11-21 (木) 14:52:46} ---CSSでresultに変な設定していました・・・。僕のミスでした。ぱんださんのでOKです。なお、resultはdefault.ja.cssに勝手に書いてくださいませ。(僕はシンプルが好きなので以下のようにしました) -- [[baniko]] SIZE(10){2002-11-21 (木) 16:59:51} li.result { list-style-type:none; } #comment