dirname ($ _ SERVER ["PHP_SELF"]) как правильно вернуть строку?

79
6

$path = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
$path .=$_SERVER["SERVER_NAME"]. dirname($_SERVER["PHP_SELF"]);

У меня есть это, и это то, что произойдет, если я сделаю эхо

echo $path
http:://localhost/folder

и без папки

http:://localhost/

если папка не возвращает мою панель, если я прикрепляю планку, а результат без папки, так что

$path .=$_SERVER["SERVER_NAME"]. dirname($_SERVER["PHP_SELF"])."/";
echo $path
http:://localhost/folder
http:://localhost//

любая идея лучше или более оптимальна, чтобы получить то, что я хочу? дать мне один бар в двух случаях

спросил(а) 2021-01-19T17:57:16+03:00 9 месяцев, 1 неделя назад
1
Решение
137

Если я правильно понял вопрос, по bar вы на самом деле означаете / или символ forward slash черты, а когда dirname() ничего не возвращает, вы в конечном итоге // но хотели бы только один /.

Если это так, то следующее должно удовлетворять то, что вы ищете.

$path = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://" . $_SERVER["SERVER_NAME"] . '/' . trim(dirname($_SERVER["PHP_SELF"]),'/');

ответил(а) 2021-01-19T17:57:16+03:00 9 месяцев, 1 неделя назад
46

Вы можете использовать rtrim($path, '/') чтобы обрезать любые / с обратной стороны URL-адреса.

ответил(а) 2021-01-19T17:57:16+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема