談到網頁搜索引擎時,很多人都會想到雅虎。的確,雅虎開創了一個互聯網絡的搜索時代。然而,雅虎目前用于搜索網頁的技術卻并非該公司原先自己開發的。2000年8月,雅虎采用了Google這家由斯坦福大學學生創建的公司的技術。理由非常簡單,Google的搜索引擎比雅虎先前使用的技術能更快、更準確搜索到所需要的信息。
讓我們自己來設計、開發一個強勁、高效的搜索引擎和數據庫恐怕短時間內在技術、資金等方面是不可能的,不過,既然雅虎都在使用別人的技術,那么我們是不是也可以使用別人現成的搜索引擎網站呢?
剖析編程思路
我們可以這樣設想:模擬一個查詢,向某個搜索引擎網站發出相應格式的搜索命令,然后傳回搜索結果,對結果的HTML代碼進行分析,剝離多余的字符和代碼,最后按所需要的格式顯示在我們自己的網站頁面里。
這樣,問題的關鍵就在于,我們要選定一個搜索信息準確(這樣我們的搜索才會更有意義啊)、速度快(因為我們分析搜索結果并顯示需要額外的時間),搜索結果簡潔(便于進行HTML源代碼分析和剝離)的搜索網站,由于新一代搜索引擎Google的各種優良特性,這里我們選擇它為例,來看看用PHP怎樣實現后臺對Google搜索、前臺個性化顯示這一過程。
我們先來看看Google的查詢命令的構成。進入Google網站,在查詢欄中輸入“abcd”,點擊查詢按鈕,我們可以發現瀏覽器的地址欄變成:"
了解File( ) 函數 語法: array file(string filename); 返回值為數組,將文件全部讀入數組變量中。這里的文件可以是本地的,也可以是遠程的,遠程文件必須指明所使用的協議。例如:result=file(“http://www.google.com/search?q=a...mp;hl=zh-CN&lr=”),該語句將模擬我們在Google上查詢單詞“abcd”的過程,并將搜索結果以每行為元素,傳回到數組變量result中。因為這里讀取的文件是遠程的,所以協議名“http://”不能缺少。 如果要讓用戶輸入搜索字符進行任意搜索,我們可以做一個輸入文本框和提交按鈕,并將上文中的被搜索字符“abcd”用變量替換: echo " "; file://沒有參數的form,默認提交方式為get,提交到本身 echo "; file://構造一個文本輸入框 echo "; file://構造一個提交查詢按鈕 echo " "; if (isset( keywords))file://提交后PHP會生成變量kwywords,即要求下面的程序在提交后運行 urlencode( keywords); file://對用戶輸入內容進行URL編碼