PHP if оператор сравнения переменных не возвращает true? - PullRequest
0 голосов
/ 16 февраля 2012

Вот мой код - не уверен, почему он не работает:

<?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
if ($InnermostDir == $urlroot) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>

Если я сделаю echo на $InnermostDir и $urlroot, они оба показывают домен example.com,Так не уверен, почему это не вернет истину?

Ответы [ 3 ]

4 голосов
/ 16 февраля 2012

$DirPath содержит \n в конце, который не удаляется, поэтому строки не будут равны.

rtrim($DirPath, '/') удалит только / символов с конца, а не \n. Если вы хотите, чтобы он также удалил \n, вам нужно использовать rtrim($DirPath, "/\n") или просто не добавлять это \n при установке $DirPath.

0 голосов
/ 16 февраля 2012

Если я положу это в мой каталог / var / www:

 <?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
var_dump($InnermostDir);
var_dump($urlroot);
if ($InnermostDir == $urlroot) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>

И назовите его localhost / test.php, я получу

string (4) "www" string (9) "localhost"

, который потерпит неудачу if?

0 голосов
/ 16 февраля 2012

Окружите обе переменные с помощью trim (), поэтому:

<?php
$urlroot      = $_SERVER['HTTP_HOST'];
$urllink      = "http://" . $urlroot;
$DirPath      = getcwd() . "\n";
$InnermostDir = basename(rtrim($DirPath, '/'));
if ( trim($InnermostDir) == trim($urlroot) ) {
    $InnermostDir = 'home';
    echo $InnermostDir;
};
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...