Я использую PHP для создания URL текущей страницы. Иногда URL-адреса в виде
www.mydomian.com/myurl.html?unwantedthngs
запрашиваются. Я хочу удалить ?
и все, что следует за ним (querystring), так что результирующий URL становится:
www.mydomain.com/myurl.html
Мой текущий код такой:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"] . ":" .
$_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
php
query-string
Нави Гамаж
источник
источник
Ответы:
Вы можете использовать,
strtok
чтобы получить строку до первого появления?
strtok()
представляет собой наиболее краткую технику для непосредственного извлечения подстроки перед?
строкой запроса.explode()
менее прямой, потому что он должен создать потенциально двухэлементный массив, по которому должен быть получен доступ к первому элементу.Некоторые другие методы могут сломаться, если строка запроса отсутствует, или потенциально могут изменить другие / непреднамеренные подстроки в URL - этих методов следует избегать.
Демонстрация :
Вывод:
источник
array_shift(explode('?',$_SERVER["REQUEST_URI"]))
?
его нет.Использовать руководство по PHP - parse_url () чтобы получить нужные вам части.
Изменить (пример использования для @Navi Gamage)
Вы можете использовать это так:
Изменить (второй полный пример):
Обновленная функция, чтобы убедиться, что схема будет присоединена и никакие уведомления не появляются:
Вернется:
Это результат передачи примера URL через parse_url () без второго параметра (только для пояснения).
И это окончательный вывод после построения URL с использованием:
Вывод:
источник
лучшее решение:
Не нужно включать ваш http://domain.com в ваш, если вы отправляете форму на тот же домен.
источник
источник
code
<? Php function curPageURL () {$ pageURL = 'http'; if ($ _SERVER ["HTTPS"] == "on") {$ pageURL. = "s";} $ pageURL. = ": //"; if ($ _SERVER ["SERVER_PORT"]! = "80") {$ pageURL. = $ _SERVER ["SERVER_NAME"]. ":". $ _ SERVER ["SERVER_PORT"]. $ _ SERVER ["REQUEST_URI"]; } else {$ pageURL. = $ _SERVER ["SERVER_NAME"]. $ _ SERVER ["REQUEST_URI"]; $ pageURL = substr ($ pageURL, 0, strrpos ($ pageURL, "?")); } return $ pageURL; }?>code
Самый простой способ
источник
Вам понадобится по крайней мере PHP версии 5.4 для реализации этого решения, без разбивки на переменные в одной строке и конкатенации на следующей, но проще всего будет один вкладыш:
Переменные сервера: http://php.net/manual/en/reserved.variables.server.php
Разыменование массива: https://wiki.php.net/rfc/functionarraydereferencing
источник
Вы можете использовать встроенную функцию parse_url следующим образом:
источник
Можешь попробовать:
источник
Если вы хотите получить путь запроса ( подробнее ):
Если вы хотите удалить запрос и (и, возможно, фрагмент также):
источник
Чтобы удалить строку запроса из URI запроса, замените строку запроса пустой строкой:
источник
www.example.com/myurl.html?
.Поскольку я работаю как с относительными, так и с абсолютными URL-адресами, я обновил решение Veritas, как показано ниже.
Вы можете попробовать себя здесь: https://ideone.com/PvpZ4J
источник
может также использовать следующее согласно комментарию php вручную
Пожалуйста, обратите внимание, что это работает только для определенной среды PHP и следуйте ниже комментарию на этой странице для получения дополнительной информации;
источник
Попробуй это
источник
Предполагая, что вы все еще хотите получить URL без аргументов запроса (если они не заданы), просто используйте сокращение if для проверки
strpos
:источник
Вот простое решение, если вы используете Laravel:
источник
Попробуй это:
или
источник