#php #.htaccess #url
#php #.htaccess #url
Вопрос:
Итак, ранее я использовал http://localhost/profile.php?username=joe
, но теперь я использую htaccess, чтобы сделать URL красивым, так что вот как это выглядит сейчас http://localhost/joe
. Теперь вот проблема, прежде чем я это сделал
$username = $_GET['username'];
А затем использовать ее для получения имени пользователя, но теперь, как бы я это сделал? Я видел другие сообщения, но они, похоже, используют более длинные и сложные URL-адреса.
Я могу сделать это
$url = 'http://localhost/joe';
echo parse_url($url, PHP_URL_PATH);
И, кажется, это работает нормально, но я получаю /
перед фактическим результатом, поэтому я получаю /joe
, и я хочу joe
. Я тоже пробовал stripslashes
, но, похоже, это не сработало. Итак, есть идеи?
Ответ №1:
Обрежьте результат на левом сайте, чтобы избежать удаления или замены косых черт, которые являются частью фактического значения.
$result = ltrim($path, '/');
Ответ №2:
Вы также можете использовать explode
и array_pop
.
$url = 'http://localhost/joe';
echo array_pop(explode("/", $url))
Ответ №3:
Используйте str_replace()
. Вот так
$url = 'http://localhost/joe';
$final = parse_url($url, PHP_URL_PATH);
$result = str_replace('/','',$final);
echo $result;
stripslashes()
работает для обратных косых черт, а не для прямых
Ответ №4:
Просто substr
вызов также должен работать:
$url = 'http://localhost/joe';
echo substr(parse_url($url, PHP_URL_PATH), 1); // joe
Ответ №5:
Вы можете узнать о заполнителях в маршрутах. Попробуйте эту статью
Параметры маршрута
Параметры маршрута можно использовать для вставки заполнителей в определение вашего маршрута. Это эффективно создаст шаблон, в котором сегменты URI могут быть собраны и переданы логическому обработчику приложения.
Это может показаться немного запутанным, но когда вы увидите это в действии, все встанет на свои места. Поехали…
<?php
// app/routes.php
// routes for the books section
Route::get('/books', function()
{
return 'Books index.';
});
Route::get('/books/{genre}', function($genre)
{
return "Books in the {$genre} category.";
});
Комментарии:
1. Это простой пример
2. Я думаю, что шаг между кодом, показанным в вопросе, и компонентами, ведущими к полнотекстовой платформе, уже не так прост.
Ответ №6:
Также есть basename()
echo basename('http://localhost/joe'); //joe
Ответ №7:
Лучше использовать это правило или mod proxy
переписать REQUEST_URI
:
RewriteCond %{REQUEST_URI}
Затем вы можете получить свой параметр и легко удалить его косые черты с помощью trim($_SERVER['REQUEST_URI'],'/')
.