-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.") は URL に 0 を与えるため、0 は false を意味します strrpos($host,"www.")+1 に 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 に答える