strrpos PHP函数无法工作

问题描述:

我有这样的功能:strrpos PHP函数无法工作

function adjust_url_with_www_extract($host) 
    { 
     $pos =strrpos($host,"www."); 
     if( $pos === true ) 
     { 
      $host= substr($host,5); 
     } 

     return $host; 
    } 

我是从这个函数调用它:

private function _unitTest() 
    { 
     $url="www.php.net/manual/en/function.substr.php"; 
     $result= $this->UnitTest->adjust_url_with_www_extract($url); 
     return $result; 
    } 

但它绝不会取消了www ..澳洲英语就永远不会到达如果条件...为什么呢?

+0

有什么期望的输出?基于函数的名字几乎在代码中都是错误的。 – 2012-04-23 11:50:06

+0

我想提取www。并返回没有它的网址...不是最好的功能名称,我知道 – 2012-04-23 11:51:44

为什么不能简单地做:

function adjust_url_with_www_extract($host) { 
    return preg_replace('~^www\.~', '', $host); 
} 
+1

'str_replace'将会是我的选择。据我所知,使用资源非常匮乏的'preg_ *'功能,当一个更简单的功能工作以及 – cypherabe 2012-04-23 12:21:45

+0

@cypherabe我会同意你,虽然我可以想象你只想替换“www。“在一个URL的*开头*中,想象一下像www.yourwebsite.com/how-to-start-a-blogpost-on-the-www.html'这样的URL,str_replace会导致URL无效, preg_replace不会。此外,即使str_replace速度更快,preg_replace也不是*那*资源匮乏。 – 2012-04-23 12:28:46

+0

希望这可以工作..... – 2012-04-23 12:35:30

strrpos()函数查找另一个字符串内最后一次出现字符串的位置。该函数返回成功的位置,否则返回FALSE。永远不会返回TRUE

所以

strrpos($主机, “WWW”)会给0您提供的网址,以便0意味着假 加1 strrpos($主机, “WWW”)+ 1这样的它会工作

其他明智strrpos> -1检查这样

+1

大声笑...这是一个什么解决方案? – 2012-04-23 11:48:26

+0

使用此条件strrpos($ host,“www。”)> -1 in if – 2012-04-23 11:54:35

+0

它为什么有效? – 2012-04-23 11:56:21

让我们一行一行($主机, “WWW”): “www” 的

$pos =strrpos($host,"www."); 

找到的位置(从相反的方向来说吧?)。

if( $pos === false ) 

,如果我们没有发现它(啊?),舍去前5(啊?)字符,返回休息:

$host= substr($host,5); 

否则返回一大堆:

return $host; 

那么你为什么期望它应该工作?

+0

即使它是真的..它不去内:(strrpos($ url,“http://”)=== true – 2012-04-23 11:53:30

+1

strrpos永远不会返回'true'。 – 2012-04-23 11:55:01

+0

lol ..它虽然返回false ... – 2012-04-23 11:56:43