2012-01-09 58 views
1

我有不同的文件,如example.html,example2.html等。我想搜索这些文件中的任何单词并在网站上显示信息。如果是的话,如果没有MySQL(file_get_contents),可能吗?或者有没有方便的方式与MySQL?有没有可能在没有MySQL的网站内搜索任何单词?

+0

是否要实现控制+ f功能? – 2012-01-09 07:58:42

回答

3

好吧,我想你想在网页内搜索非常像cntrl + f提供。 所以这可以通过使用java脚本完成。对于演示,生成一个html文件,粘贴下面的代码并检查它将如何工作。

<html> 
    <head> 
    </head> 
    <body> 
    my name is amit yadav, type amit to search 
    <script> 
     <!-- Hide from old browsers 
     var TRange = null; 
     var dupeRange = null; 
     var TestRange = null; 
     var win = null; 
     var nom = navigator.appName.toLowerCase(); 
     var agt = navigator.userAgent.toLowerCase(); 
     var is_major = parseInt(navigator.appVersion); 
     var is_minor = parseFloat(navigator.appVersion); 
     var is_ie  = (agt.indexOf("msie") != -1); 
     var is_ie4up = (is_ie && (is_major >= 4)); 
     var is_not_moz = (agt.indexOf('netscape')!=-1) 
     var is_nav  = (nom.indexOf('netscape')!=-1); 
     var is_nav4 = (is_nav && (is_major == 4)); 
     var is_mac  = (agt.indexOf("mac")!=-1); 
     var is_gecko = (agt.indexOf('gecko') != -1); 
     var is_opera = (agt.indexOf("opera") != -1); 


     // GECKO REVISION 

     var is_rev=0 
     if (is_gecko) { 
      temp = agt.split("rv:") 
      is_rev = parseFloat(temp[1]) 
     } 


     // USE THE FOLLOWING VARIABLE TO CONFIGURE FRAMES TO SEARCH 
     // (SELF OR CHILD FRAME) 

     // If you want to search another frame, change from "self" to 
     // the name of the target frame: 
     // e.g., var frametosearch = 'main' 

     //var frametosearch = 'main'; 
     var frametosearch = self; 


     function search(whichform, whichframe) { 

      // TEST FOR IE5 FOR MAC (NO DOCUMENTATION) 

      if (is_ie4up && is_mac) return; 

      // TEST FOR NAV 6 (NO DOCUMENTATION) 

      if (is_gecko && (is_rev <1)) return; 

      // TEST FOR Opera (NO DOCUMENTATION) 

      if (is_opera) return; 

      // INITIALIZATIONS FOR FIND-IN-PAGE SEARCHES 

      if(whichform.findthis.value!=null && whichform.findthis.value!='') { 

       str = whichform.findthis.value; 
       win = whichframe; 
       var frameval=false; 
       if(win!=self) 
       { 

        frameval=true; // this will enable Nav7 to search child frame 
        win = parent.frames[whichframe]; 

       } 


      } 

      else return; // i.e., no search string was entered 

      var strFound; 

      // NAVIGATOR 4 SPECIFIC CODE 

      if(is_nav4 && (is_minor < 5)) { 

       strFound=win.find(str); // case insensitive, forward search by default 

       // There are 3 arguments available: 
       // searchString: type string and it's the item to be searched 
       // caseSensitive: boolean -- is search case sensitive? 
       // backwards: boolean --should we also search backwards? 
       // strFound=win.find(str, false, false) is the explicit 
       // version of the above 
       // The Mac version of Nav4 has wrapAround, but 
       // cannot be specified in JS 


      } 

      // NAVIGATOR 7 and Mozilla rev 1+ SPECIFIC CODE (WILL NOT WORK WITH NAVIGATOR 6) 

      if (is_gecko && (is_rev >= 1)) { 

       if(frameval!=false) win.focus(); // force search in specified child frame 
       strFound=win.find(str, false, false, true, false, frameval, false); 

       // The following statement enables reversion of focus 
       // back to the search box after each search event 
       // allowing the user to press the ENTER key instead 
       // of clicking the search button to continue search. 
       // Note: tends to be buggy in Mozilla as of 1.3.1 
       // (see www.mozilla.org) so is excluded from users 
       // of that browser. 

       if (is_not_moz) whichform.findthis.focus(); 

       // There are 7 arguments available: 
       // searchString: type string and it's the item to be searched 
       // caseSensitive: boolean -- is search case sensitive? 
       // backwards: boolean --should we also search backwards? 
       // wrapAround: boolean -- should we wrap the search? 
       // wholeWord: boolean: should we search only for whole words 
       // searchInFrames: boolean -- should we search in frames? 
       // showDialog: boolean -- should we show the Find Dialog? 


      } 

      if (is_ie4up) { 

       // EXPLORER-SPECIFIC CODE revised 5/21/03 

       if (TRange!=null) { 

        TestRange=win.document.body.createTextRange(); 



        if (dupeRange.inRange(TestRange)) { 

         TRange.collapse(false); 
         strFound=TRange.findText(str); 
         if (strFound) { 
          //the following line added by Mike and Susan Keenan, 7 June 2003 
          win.document.body.scrollTop = win.document.body.scrollTop + TRange.offsetTop; 
          TRange.select(); 
         } 


        } 

        else { 

         TRange=win.document.body.createTextRange(); 
         TRange.collapse(false); 
         strFound=TRange.findText(str); 
         if (strFound) { 
          //the following line added by Mike and Susan Keenan, 7 June 2003 
          win.document.body.scrollTop = TRange.offsetTop; 
          TRange.select(); 
         } 



        } 
       } 

       if (TRange==null || strFound==0) { 
        TRange=win.document.body.createTextRange(); 
        dupeRange = TRange.duplicate(); 
        strFound=TRange.findText(str); 
        if (strFound) { 
         //the following line added by Mike and Susan Keenan, 7 June 2003 
         win.document.body.scrollTop = TRange.offsetTop; 
         TRange.select(); 
        } 


       } 

      } 

      if (!strFound) alert ("String '"+str+"' not found!") // string not found 


     } 
     // --> 
    </script> 

    <!-- EXAMPLE FORM OF FIND-IN-PAGE SEARCH USING SUBMIT (ALLOWING 'ENTER/RETURN' KEY PRESS EVENT) --> 
    <form name="form1" onSubmit="search(document.form1, frametosearch); return false"><input type="text" name="findthis" size="15" title="Press 'ALT s' after clicking submit to repeatedly search page"> <input type="submit" value="Find in Page" ACCESSKEY="s"></form> 
    </body> 
</html> 
+0

看到你的答案很好..我可以知道如何使用mysql吗?谢谢 – pcs 2015-05-20 10:11:35

+0

你可以在想要搜索的字段上使用'like'运算符 – 2015-06-11 07:51:33

1

您需要用自己的索引(MySQL的),你自己的爬虫(这也许应该还是指数的结果),或者你可以从谷歌受益:

http://www.google.com/sitesearch/

+0

不,我不想使用谷歌。 – Someone 2012-01-09 07:53:01

+0

好吧,我会提醒你重新考虑,因为你想在这里重新发明轮子,但是你可以看看unix grep命令 – landons 2012-01-09 07:55:45

3

最快,最简单,最脏的方法是使用php EXEC命令和GREP。它不是一个好主意,虽然(可怕的安全性)。

更好的方法是使用预先构建的搜索缓存。 Zend framework有一个search module,很容易使用。

0

使用cURL下载网页,然后将其放入一个文本文件。从那里使用本机功能找到你正在寻找的东西:)

0

如果文件是物理上存在于服务器上,你可以使用像file_get_contents(实际上与mySQL无关)的函数。

如果要抓取网站的内容,可以使用cURLHttpRequest

相关问题