如果(大小写敏感($ _SERVER [& # 39; REQUEST_URI& # 39;], & # 39; / &


if( strpos($_SERVER['REQUEST_URI'], '/') === TRUE) doesn't work

if( strpos($_SERVER['REQUEST_URI'], '/') === TRUE)不工作。

我想要实现的是,当在主页上,例如http://www.amazon.co.uk/,它会触发什么是内部的声明。

这可能会因为这是从另一个页面重定向而变得复杂

var_dump ($ _SERVER [' REQUEST_URI ']);=/字符串(1)echo $ _SERVER [' REQUEST_URI '];= "/"

php version 5.4

谢谢你的帮助,我的问题已经解决了

这是因为,就像文档告诉你的那样,strpos()永远不会返回true。

返回一个正整数(已找到)或布尔值false(未找到)。

检查!== false

strpos()函数返回一个数字值,表示第二个字符串在第一个字符串中的位置。因此,它永远不会等于TRUE。

如果没有找到字符串,

strpos()可以返回FALSE,因此您应该写

if( strpos($_SERVER['REQUEST_URI'], '/') !== FALSE)

strpos() from manual:

strpos -查找子字符串在a中第一次出现的位置字符串

所以你在检查返回值是否为TRUE,它永远不会为TRUE。您需要使用!== FALSE进行检查。为什么?因为===检查变量的值和类型。当您使用==时,它将只检查value,当value为0时,PHP将其强制转换为FALSE,因为PHP是松散类型的。