2012-04-23 43 views
-1

我有這樣的功能: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

回答

0

爲什麼不能簡單地做:

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

1

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

1

讓我們一行一行($主機, 「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