【问题标题】:Is it possible to search any word inside website without MySQL?是否可以在没有 MySQL 的情况下搜索网站内的任何单词?
【发布时间】:2012-02-05 19:16:57
【问题描述】:

我有不同的文件,例如 example.html、example2.html 等。我想在这些文件中搜索任何单词并在网站上显示信息。如果可以,是否可以没有 MySQL (file_get_contents) 以及如何?或者mysql有没有方便的方法?

【问题讨论】:

  • 要实现control+f的功能吗?

标签: php mysql file search


【解决方案1】:

好的,我想您想在网页中进行搜索,就像 cntrl+f 提供的一样。 所以这可以通过使用 java-script 来完成。对于演示,制作一个 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>

【讨论】:

  • 看到你的回答很棒..我可以知道如何使用 mysql 吗?谢谢
  • 您可以在要搜索的字段上使用like 运算符
【解决方案2】:

最快、最简单、最脏的方法是使用php EXEC 命令和GREP。虽然这不是一个好主意(安全性很差)。

使用预建的搜索缓存会更好。 Zend framework 有一个很容易使用的search module

【讨论】:

    【解决方案3】:

    您需要自己的索引 (MySQL)、自己的爬虫(可能仍应为结果编制索引),或者您可以从 Google 中受益:

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

    【讨论】:

    • 好的,我会提醒您重新考虑,因为您想在这里重新发明轮子,但您可以查看 unix grep 命令
    【解决方案4】:

    使用 cURL 下载网页,然后将其放入文本文件中。从那里使用本机函数来查找您要查找的内容:)

    【讨论】:

      【解决方案5】:

      如果文件实际存在于服务器上,您可以使用 file_get_contents 之类的函数(实际上与 mySQL 无关)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 2022-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多