2009-06-25 4 views
0

웹 브라우저의 검색 도구가 전체 웹 페이지 (페이지의 거대한 콘텐츠로 가정)를 구문 분석하고 입력하는 동안 결과를 강조 표시하는 방법을 파악하려고합니다. 지도에로드하는 동안 페이지를 미리 캐시하거나 정규식을 사용하여 빠른 결과를 얻을 수 있습니까?브라우저 검색 도구는 웹 페이지에서 어떻게 작동합니까?

답변

1

문서가 이미 구문 분석 브라우저 :

예를 들어, 여기에 내가 파이어 폭스를 사용하여 검색을 시작하고 모든 강조 표시이 페이지에있는 문구 'eleme'에게 일어나는 것입니다. 해당 문서를 검색하면 DOM 트리를 탐색하고 검색 할 수있는 노드를 결정하고 문서 노드를 삽입하여 디스플레이를 변경합니다 (예 : 텍스트를 굵게 표시하는 등).

표준 문자열 매칭 알고리즘은 매우 큰 텍스트 청크를 초당 파싱 할 수 있습니다. (생각해 보면, 콜리 전 탐지, 장면 컬링, AI, 사운드, 화려한 효과, 통합 된 3D 멀티 플레이어 게임을 실행할 수 있습니다 음성 채팅, 표준 컴퓨터의 60fps에서 텍스트의 몇 메가 바이트를 검색하는 것은 아무 것도 아닙니다.)

0

나는 세부 사항을 모르지만 나는 그것이 this과 같은 것이라고 상상할 것이다.

Boyer-Moore 알고리즘은 텍스트 부분 문자열을 검색하는 매우 빠르고 효율적인 방법입니다.

0

일반 텍스트로 돔을 가로 지르는 것이 필요하다고 생각합니다. 나는 추측하고 있을지 모르지만 나는 그 요소 내용과 자식 요소를 검색 할 일반 텍스트를 포함 할 수있는 요소를 검색하고 dom을 검색 할 것입니다.

firefox에서 검색을 수행하고 firefbug를 통해 보면 firefox이 문서의 DOM을 수정하여 검색 항목이 강조 표시와 같은 스타일이 적용되는 요소 자체의 하위 항목임을 알 수 있습니다.

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

큰 텍스트로 부분 문자열을 찾는 것은 컴퓨터가하는 것처럼 어렵지 않습니다. 사실, 부분 문자열을 찾는 것보다 HTML 페이지를 렌더링하는 것이 훨씬 어렵다고 생각합니다. 언급했듯이이를위한 빠른 알고리즘이 있습니다.

사용하여 ... 유식

0

PHP는/기계가이 순간에 거의 완전히 전용 이것이다, 명심하십시오, 그래서이 (오히려 간단한) 작업에 전념 처리 용량이 많이있다 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"; 휴식; 대문자 "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

관련 문제