-1

我有这个功能:

 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.. 因为它永远不会达到 if 条件.. 为什么会这样?

4

3 回答 3

1

strrpos() 函数查找一个字符串在另一个字符串中最后一次出现的位置。此函数返回成功时的位置,否则返回 FALSE。从不返回 TRUE

所以

strrpos($host,"www.") 将为您的网址提供 0,因此 0 表示 false 将 1 添加到 strrpos($host,"www.")+1 就像这样它会起作用

其他明智的 strrpos($host,"www.") > -1 像这样检查

于 2012-04-23T11:46:39.567 回答
1

让我们逐行进行:

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

找到“www”的位置。(从相反的方向,嗯?)。

if(  $pos === false  )

如果我们没有找到它(嗯?),去掉前 5 个(嗯?)字符,返回其余的:

    $host= substr($host,5);

否则返回整个主机:

return $host;

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

于 2012-04-23T11:52:29.643 回答
0

为什么不简单地做:

function adjust_url_with_www_extract( $host ) {
     return preg_replace( '~^www\.~', '', $host );
}
于 2012-04-23T12:13:53.347 回答