我目前正在爲我們的網站開發一個自定義URL路由腳本。我們希望將URL模式定義爲數組鍵,並檢查指定的URL是否與格式中的某個鍵匹配。檢查字符串是否匹配數組鍵格式
例如,我們有一個數組定義如下:
$rewrites = array(
'item[0-9].html' => array('target' => 'http://example.com')
);
我們想取回陣列$rewrites['item[0-9].html']
當URL是item1.html
,一樣的東西:
function get_info($url)
{
// $url = 'item1.html';
// return value for $rewrites['item[0-9].html']
}
我們如何能檢查數組鍵是否存在,並通過將item1.html
傳遞給函數來檢索它的值?我擔心循環遍歷整個數組(這將容納200個項目)並且執行一個preg_match()
上的密鑰將會很慢。有沒有更好的方法來實現這一目標?
有沒有辦法左右用於測試由一個與你的方法中,所有的表情之一。考慮將這個邏輯轉移到http服務器的級別,在那裏正則表達式引擎更高效。 – arkascha
此外,當你的鑰匙變得複雜時,你將*遇到未來的問題。請檢查htaccess重定向:) – Martijn
否則,請考慮將其分解爲多步驟方法:不要逐個應用每個完整模式,直到找到匹配(或不),請考慮使用「前綴模式」(「^ item」)這個例子,如果你有多個模式,例如以相同的前綴開始。只有在前綴匹配的情況下,才能繼續執行第二步,並進一步測試該前綴。根據模式集的結構,_might_ drastical會減少要測試的模式總數。 – arkascha