У меня есть URL, хранящийся в базе данных. По заданному URL-адресу я должен получить данные из базы данных, но я не уверен, как определить фактический URL-адрес. Это сбивает с толку, когда URL-адрес пользователя является динамическим c, как текст или число. пример:
/user should match the url /user
/user/1 should match the url /user/{id}
/user/name/johndoe should match the url /user/name/{name}
/user/1/johndoe should match the url /user/{id}/{name}
Я пробовал это, он работает для / user / 1, то есть с целыми числами, но я не могу заставить его работать со строкой. Нет способа идентифицировать строковые параметры. Или в mysql есть обходной путь.
MOTO: Извлечение содержимого из базы данных, где заданная строка URL-адреса соответствует столбцу URL-адреса. Примечание: {id}, {name}, {type} являются динамическими c значениями.
Контроллер:
$sanitizedUrl = preg_replace('/\/*\d{1,}/','/{id}', '/user/name/1');
UrlContent::where('url', $sanitizedUrl)->first()->content;
Этот код может работать только с URL-адреса, которые имеют только цифры. Пример: / user / 12 / type / 12 заменяется на / user / {id} / type / {id}
База данных: url_contents
| url | content |
-----------------------------------------------------------
| /user/name/{id} | matches if url is /user/name/1 |
| /user/{id}/{name} | if url is /user/1/john |
| /user/{type}/{name} | if url i /user/{type}/{name} |