REQUEST_URL if语句

时间:2014-03-24 12:03:57

标签: php

我是一名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而不是其他结果。任何想法如何解决这个问题?

2 个答案:

答案 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>'; 
}