2012-04-23 41 views
0

我有一個提供關鍵字搜索的網站。用戶可以通過從顯示爲超鏈接的一組預定義關鍵字中進行選擇或在同一頁面上使用搜索表單來執行搜索。

俄羅斯藍貓用戶搜索,下面是添加到頁面URL:

如果使用預先定義的超級鏈接搜索字詞,然後關鍵字=俄%20Blue%20Cat被添加到URL如下:

http://mydomain.com/index.php?keywords=Russian%20Blue%20Cat 

如果使用搜索表單,則關鍵字=俄語+藍+貓被添加到URL如下:

http://mydomain.com/index.php?keywords=russian+blue+cat 

以下$ _GET行代碼被放置在 PHP文件,同時包含預先定義的超級鏈接搜索詞原來的index.php文件以及搜索表單和另一個名爲process.php的PHP文件,該文件將關鍵字用於其他進程。

if(empty($_GET['keywords'])){$keywords = '';} else {$keywords = $_GET['keywords'];} 

其中所包含的的index.php文件正常工作,並檢索所有三個關鍵字上面的代碼$ _GET線。在這種情況下,檢索到俄羅斯藍貓

process.php文件中包含的上述$ _GET行代碼無法正常工作,只能檢索三個關鍵字中的第一個。在這種情況下,只檢索俄語

是否有一個簡單或正確的方法來解決這個問題,使所有的關鍵字檢索正確?

預先感謝您。

+0

不清楚我如何將搜索條件從index.php傳遞給process.php – 2012-04-23 19:51:21

+0

請在兩個文件中顯示'var_dump($ _ GET)'。這聽起來更像是對我的一個不好的要求,沒有非空間的空間。 – DaveRandom 2012-04-23 19:52:13

+0

對於通過的超鏈接russian blue cat 對於搜索表單,它們通過表單的「/> – Sammy 2012-04-23 19:56:44

回答

0

檢查字符串'%20',如果存在,則按'%20'進行爆炸。否則,請檢查是否存在加號,並用它來爆炸。

此方法不同於輸入相同腳本的兩個來源的輸入格式不同。

需要注意的是,字符串'%20'或字符'+'不能出現在其他格式的單詞內部,否則您會得到異常行爲。

$keyword = array(); 
if(stripos($keywords,"%20")) { 
    $keyword = explode("%20",$keywords); 
} 
else if(stripos($keywords,"+")) { 
    $keyword = explode("+",$keywords); 
} 

'$ keyword'然後將您的關鍵字包含在數組中。

+0

謝謝,但是你的意思是由'%20'爆炸或者由'+'爆炸? – Sammy 2012-04-23 20:08:53

+0

explode(「%20 「,$ _GET ['keywords']); – 2012-04-23 20:09:38

+0

if(empty($ _ GET ['keywords'])){$ keywords =''; else else {$ keywords = $ _GET ['keywords'];}? – Sammy 2012-04-23 20:17:56