2009-06-25 16 views
0

私は、Webブラウザの検索ツールがWebページ全体(ページ上に巨大なコンテンツを想定している)を解析し、入力時に結果を強調表示する方法を理解しようとしています。地図にロード中にページをあらかじめキャッシュするか、正規表現を使って素早く結果を得るか?ブラウザ検索ツールはどのようにWebページ上で動作しますか?

答えて

1

文書がすでにブラウザによって、解析されます。その文書を検索することでDOMツリーを歩くことができ、検索できるノードを決定し、文書ノードを挿入して表示を変更することができます(テキストを太字にするなど)。

標準的な文字列一致アルゴリズムは、非常に大きな文字列を1秒間に解析することができます(それについて考えると、コリジョン検出、シーンカリング、AI、サウンド、派手なエフェクト、統合ボイスチャット、標準的なコンピュータの60fpsで数メガバイトのテキストを検索することは何もありません..)

0

詳細はわかりませんが、thisのようなものです。

Boyer-Mooreアルゴリズムは、テキスト部分文字列を高速かつ効率的に検索する方法です。

0

私はそれが平文のためにdomを横断することを含むと予想します。私は思っているだけかもしれませんが、私はdomをとり、その要素の内容と子要素の検索を行う、平文を含む可能性のある要素を検索します。

firefoxで検索してfirefbugで検索すると、firefoxはドキュメントのdomを変更して、検索項目が要素の子であり、強調表示などのスタイルが適用されることに気付くでしょう。

例えば、ここで私はFirefoxを使用して検索を開始し、すべてを強調表示する場合は、このページにあるフレーズ「eleme」に何が起こるかです:

<span style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;" class="__mozilla-findbar-search">eleme</span> 
1

大きな文字で部分文字列を検索することは、コンピュータにとっては難しいことではありません。実際には、部分文字列を見つけるよりもHTMLページをレンダリングする方が難しいとは思えません。前述のように、このための高速アルゴリズムがあります。

使って、仕事...

0

PHP/Smartyの

あなたのマシンはこの時点でほぼ完全に専用の本にあるので、この(かなり単純)専用の処理能力がたくさんだ、覚えておいてくださいあなたはそれを行うことができますエンコード?urlencodeファイルのpls serach?= "C-コンテンツ"

プレフィックス

サンプルコード:::: ますprint_r($ファイル); if(isset($ file)){ $ var = explode( " - "、$ file); print_r($ var); $ prefix = $ var [0]; $ script = $ var [1]; } else { $ file = "c-home1"; $ prefix = "c"; $ script = "home"; $ modid = 0; }

if($ script == "") $ script = "prod_list";

---------------------------------------------- --------------------------------------------

//次のコードはsufiixからモジュールを見つけ、スクリプト名を見つけます switch($ prefix) { case "c": $ module = "content"; 休憩。 case "m": $ module = "myaccount"; 休憩。 デフォルト: $ module = "content"; 休憩。 }

$ smarty-> assign( "module"、$ module);

//次のコードは、接尾辞からモジュールを見つけ出し、スクリプトの名前を見つける

の$ include_script = $モジュール "/" $スクリプト "phpの。"。。。。。

if(file_exists($ include_script)) include_once($ include_script); else include_once( "content/error.php"); if($ script!= 'home') { if($ script == 'termsandcondition'){ $ smarty-> display( "content/termsandcondition.tpl"); } else { $ smarty-> display( "template.tpl"); } } else { $ smarty-> display( "template_home.tpl"); $ smarty-> assign( "msg"、$ msg); $ smarty-> assign( "msglogin"、$ msglogin); } ?>

+1

無関係な回答です。 – GTM

関連する問題