Я пытаюсь создать сценарий, который отображает результаты на основе 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);
В таблице в базе данных имеется столбец с названием «путь». Путь содержит '/ A/B/C/D /'. Есть более простой способ, чем использование нескольких, если/иначе для достижения этой цели:
Пустой путь (домашняя страница, ограничение 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] . '/';
Очевидно, что если человек пытается ввести значения (буквы) в другом порядке, результаты не должны быть найдены и страницу ошибки отображается ,
Что-то вроде этого: 'Полет :: Маршрут ('/ *', функция() {// Это будет соответствовать/2000/02/01/название });' – user1052448
я бы не рекомендовал использовать подстановочные. Переопределите свой api, чтобы иметь ключевое слово в пути, чтобы ресурс мог быть дифференцирован, чтобы избежать этой проблемы и четкой сегрегации маршрутов. – user3307291
так придерживайтесь (@year (@month (@day (@title)))? – user1052448