$str1 = "test:http://google.com,http://hbaidu.com";$str2 = strrchr($str1,"http://");echo $str2;
輸出結果應該是:
http://hbaidu.com
但是為什麼輸出結果是:
baidu.com
如果把代碼中http://hbaidu.com的h去掉
$str1 = "test:http://google.com,http://baidu.com";$str2 = strrchr($str1,"http://");echo $str2;
結果輸出是:
http://baidu.com
請問各位大神這是為什嗎?謝謝
回複內容:
$str1 = "test:http://google.com,http://hbaidu.com";$str2 = strrchr($str1,"http://");echo $str2;
輸出結果應該是:
http://hbaidu.com
但是為什麼輸出結果是:
baidu.com
如果把代碼中http://hbaidu.com的h去掉
$str1 = "test:http://google.com,http://baidu.com";$str2 = strrchr($str1,"http://");echo $str2;
結果輸出是:
http://baidu.com
請問各位大神這是為什嗎?謝謝
建議先看看 strrchr 的文檔
http://php.net/manual/zh/function.strrchr.php
string strrchr ( string $haystack , mixed $needle )
該函數返回 haystack 字串中的一部分,這部分以 needle 的最後出現位置開始,直到 haystack 末尾。
haystack
在該字串中尋找。
needle
如果 needle 包含了不止一個字元,那麼僅使用第一個字元。該行為不同於 strstr()。
如果 needle 不是一個字串,那麼將被轉化為整型並被視為字元順序值。
也就是說,後面的參數只識別第一個字元, 也就是只識別你的 h
, h
之後的參數全部忽略。如果要使用字串,需要換用 strpos 等其他支援字串查詢的函數。
(註:樓上的說明也是不準確的,這個和 trim 也不一樣,strrchr 只識別第一個字元,其他的字元無效,而不是一個個嘗試)