2012-02-11 44 views
-1

,我一直在這麼多的帖子在網上試圖解決這....搜索在陣列中的字符串的一部分

我正在整合一個小的搜索功能,爲PHP腳本....

我已經嘗試了許多劇本,包括in_array(僅適用於全場比賽)和array_search

和似乎沒有任何工作....

我有格式創建了文件名稱的數組(所有的腳本「 Random-Name-1.ext「) 但腳本刪除文件擴展,只留下文件名....

所有文件名由單詞分隔單詞以-

所有詞都的第一個字母大寫....

該陣列被稱爲$files1;

搜索字符串被稱爲$search_string;

什麼即時尋找將沿着foreach循環的線路檢查,如果搜索字符串包含在每個數組值的任何部分,如果是,把全陣列值到另一個數組稱爲$search_results

因爲我的劇本的下一個部分進行分頁需要陣列$search_results相互呼應的文件名,並顯示他們10每頁....

希望這是足夠的信息,我一直都在幹活它的年齡和貨架我的大腦試圖找到正確的代碼....

感謝adva NCE

.......... ...........

編輯.....

....... 。 .......

了腳本preg_grep工作.....但我現在有一個小問題....

腳本之前的搜索代碼的目的是要獲取的網址q = {搜索字符串}的搜索頁面

再修剪一下,這樣我纔有檢索算法字符串作爲變量.....

我使用str_replace函數從

/games-search?q={search-string} 

更改頁面網址爲{搜索字符串}

這是完全正常的,但腳本將結果分頁爲每頁10個?page = 2到網址....

所以當我點擊第二頁時,str_replace函數更改URL搜索字符串不工作現在,作爲新頁面的URL 2頁

/games-search?page=2&q={search-string} 

我一直在努力做的是另str_replace函數來改變連續的頁面網址只是搜索字符串,但我有問題與正則表達式來定義頁碼.....

頁碼從1 - 約50(不會超過99,所以2位數會足以匹配....

我有t今天裏德一遍又一遍,以得到這個正則表達式正確的,但我不知道如果我繞了正確的方法.....

這裏是我的最新努力....

/games-search?page=(^[0-9][0-9]+)& 

這就是我試圖用「取代」(例如,無)

,因爲我只需要在URL中的字符&後的數據... ...和多數民衆如果URL中甚至包含此(用於exapmple第一網頁時,不包含&字符 - 如果URL不包含&字符,我不希望它修改荷蘭國際集團,因爲我已經有我需要的數據)

再次感謝如果有人能幫助

決定不進行分頁每個搜索的結果療法決不會比15的結果更多... ..這是好的,但我要執行4個字符的miminum搜索長度,所以它不會爲字母A帶來500個結果:)

+2

您已收到16個針對您之前的10個問題(我計算)的答案。你需要重新回顧你以前的問題,並在適當的時候接受答案,否則人們會停止回答你的問題。 – rdlowrey 2012-02-11 04:19:49

回答

3

搜索數組以查找子字符串匹配嗎? preg_grep

然後像做

$search_results = ...; 
$paginated = array(); 
for ($i = 0; $i < count($search_results); $i++) 
{ 
    if ($i % 10 == 0) $paginated[$i + 1] = array(); 
    $paginated[$i][] = $search_results[$i + 1]; 
} 

然後print_r該數組,你會看到你已經得到的東西死容易的工作。

+0

也許只需訪問從$ search_results [$ page * PAGE_SIZE]到$ search_results [($ page + 1)* PAGE_SIZE - 1]的條目就足以顯示頁碼$頁面。 – 2012-02-11 04:22:25

+0

絕對,兩者都有效。我之所以這樣做,僅僅是因爲頁面內的所有元素都可以通過任何類型的循環(特別是foreach)輕鬆循環,但是無論哪種方法 – Joe 2012-02-11 04:24:14

+0

好點。只是想分享我的解決方案,而不添加完整的答案;) – 2012-02-11 04:34:11

相關問題