我是一名PHP菜鸟,我有以下声明:
if(strpos($_SERVER['REQUEST_URI'],'/')!=-1) {
echo '<span>Hello World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/blog')!=-1) {
echo '<span>blog World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/videos')!=-1) {
echo '<span>videos World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/about')!=-1) {
echo '<span>about World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/contact')!=-1) {
echo '<span>contact World' .$_SERVER['REQUEST_URI']. '</span>';
}
我的问题是,每当我去http://website.com/
之外的其他地方,我仍然得到结果Hello World
而不是其他结果。任何想法如何解决这个问题?
答案 0 :(得分:0)
strpos
不返回-1,如果没有匹配则返回false
。因此,您的测试应该是:
if(strpos($_SERVER['REQUEST_URI'],'/') !== false)
等
(!==和===是更严格的比较运算符,意味着PHP在比较中不会将0等于false)
你还应该意识到第一次比较,反对'/'将匹配所有实例,因为所有字符串都将以'/'开头。因此,您应该将它作为最后一个条件,而不是第一个条件。
总的来说,如果你使用更多的正面比较会更清楚:
if ( strpos($_SERVER['REQUEST_URI'],'/blog') === 0 ) {
echo '<span>blog World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/videos') === 0) {
echo '<span>videos World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/about') === 0) {
echo '<span>about World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/contact') === 0 ) {
echo '<span>contact World' .$_SERVER['REQUEST_URI']. '</span>';
}else if(strpos($_SERVER['REQUEST_URI'],'/') === 0) {
echo '<span>Hello World' .$_SERVER['REQUEST_URI']. '</span>';
} else if( $_SERVER['REQUEST_URI' === '/') {
echo '<span>Hello World' .$_SERVER['REQUEST_URI']. '</span>';
} else {
echo '<span>URL Not matched</span>';
}
如果字符串在开头匹配该URI(它应该),则返回的索引将精确为0,因此完全匹配将匹配所有出现。我已经改变了你的最后一场比赛以完全匹配'/',好像没有匹配你可能想要返回错误,但你可能只是在最后的其他比赛中有一个默认动作。
答案 1 :(得分:0)
/blog
,/videos
,...也有/
。那么你去哪个网址,它总是与/
匹配。你可以使用它;
if($_SERVER['REQUEST_URI'] === '/') {
echo '<span>Hello World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/blog')!=-1) {
echo '<span>blog World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/videos')!=-1) {
echo '<span>videos World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/about')!=-1) {
echo '<span>about World' .$_SERVER['REQUEST_URI']. '</span>';
} else if(strpos($_SERVER['REQUEST_URI'],'/contact')!=-1) {
echo '<span>contact World' .$_SERVER['REQUEST_URI']. '</span>';
}