我試圖創建一個腳本,顯示基於URL路徑的結果。顯示基於URL路徑的結果
例如,我可以有一個URL,如example.com/A/B/C/D/
,example.com/A/B/C/
一直到example.com/
。
- A =年
- B =月
- C =日
- d =標題
下面的腳本不打碎它的一個好工作。
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$array = explode('/', $path);
數據庫中的表有一個名爲'path'的列。路徑包含'/ A/B/C/D /'。難道還有比使用多個if/else語句來完成這個更簡單的方法:
空路徑(主頁,限5個結果:
SELECT * FROM table ORDER BY post_date DESC LIMIT 5;
逐年搜索:
SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/%';
通過搜索年和月
SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/%';
按年和月和日搜索
SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/' . $array[3] . '/%;
按年份和月份和日期和標題
SELECT * FROM table WHERE path LIKE '/' . $array[1] . '/' . $array[2] . '/' . $array[3] . '/' . $array[4] . '/';
顯然,如果有人試圖以不同的順序,結果不應該被發現的錯誤頁面,輸入值(字母)搜索顯示。
類似這樣:'Flight :: route('/ *',function(){ //這將匹配/ 2000/02/01/title });' – user1052448
我不推薦使用通配符。重新定義你的api在路徑中有一些關鍵字,這樣可以區分資源以避免這個問題並清楚地分離路由。 – user3307291
這麼堅持(@year(@month(@day(@title)))? – user1052448