Php 请求URL if语句

Php 请求URL if语句,php,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['REQUE

我是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>'; 
}
if(strpos($\u SERVER['REQUEST\u URI'],'/')!=-1){
回显“Hello World”。$\u服务器[“请求URI]”;
}else if(strpos($\u SERVER['REQUEST\u URI'],'/blog')!=-1){
回显“博客世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u服务器['REQUEST\u URI'],'/videos')!=-1){
回显“视频世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/about')!=-1){
回显“关于世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/contact')!=-1){
回显“联系世界”。$\u服务器[“请求URI]”;
}

我的问题是,每当我去
http://website.com/
我仍然得到结果
Hello World
而不是其他结果。知道如何解决这个问题吗?

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>';   
}
if(strpos($\u SERVER['REQUEST\u URI'],'/blog')==0){
回显“博客世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u服务器['REQUEST\u URI'],'/videos')==0){
回显“视频世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/about')==0){
回显“关于世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/contact')==0){
回显“联系世界”。$\u服务器[“请求URI]”;
}else if(strpos($\u SERVER['REQUEST\u URI'],'/')==0){
回显“Hello World”。$\u服务器[“请求URI]”;
}else if($\u服务器['REQUEST\u URI'=='/')){
回显“Hello World”。$\u服务器[“请求URI]”;
}否则{
回显“URL不匹配”;
}

如果字符串与开头的URI匹配(应该匹配)然后返回的索引将完全为0,因此完全匹配将匹配所有发生的事件。我已将您的上一个匹配更改为完全匹配“/”,好像没有匹配,您可能希望返回错误,但您可以在最后的else中使用默认操作。

/blog
/videos
,…也有
//code> 。因此,您选择的url将始终与
/
匹配。您可以使用此

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>'; 
}
if($\u服务器['REQUEST\u URI']=='/')){
回显“Hello World”。$\u服务器[“请求URI]”;
}else if(strpos($\u SERVER['REQUEST\u URI'],'/blog')!=-1){
回显“博客世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u服务器['REQUEST\u URI'],'/videos')!=-1){
回显“视频世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/about')!=-1){
回显“关于世界”。$\u服务器['REQUEST\u URI'];
}else if(strpos($\u SERVER['REQUEST\u URI'],'/contact')!=-1){
回显“联系世界”。$\u服务器[“请求URI]”;
}

因为其他url模式也有
/
但如果
检查超过了
如果
检查,则不会运行
如果
检查?例如,当您转到..../videos时,它将匹配第一个检查。请参阅我的answer@user3352340请投票确认:)