Удалите косую черту из конечной строки и ПОЛУЧИТЕ

#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'],'/') .