在PHP中,我們常常需要在字符串中查找某個子串的位置。通常使用的函數是strpos和stripos。但是,這兩個函數存在一定的局限性。其中stripos函數在查找時不區分大小寫。但是,它只能在PHP版本5.2.0及以上使用。如果你需要在低版本的PHP中使用這個函數,就需要用到newstripos這個自定義函數。
如果我們現在有一個字符串"Hello World",我們想查找其中的"world"。我們可以使用如下代碼:
$str = "Hello World"; $pos = strpos($str, "world"); echo $pos; //輸出-1,表示未找到
我們發現,strpos區分大小寫,因此沒有找到"world"。如果我們使用stripos函數,則可以找到它。
$str = "Hello World"; $pos = stripos($str, "world"); echo $pos; //輸出6,表示找到了"world",在第7個字符處出現
不過,如果我們現在使用一個較舊的PHP版本,則會出現如下問題:
$str = "Hello World"; $pos = stripos($str, "world"); echo $pos; // Fatal error: Call to undefined function stripos()
因為這個PHP版本中沒有定義stripos函數,所以我們需要使用newstripos函數。
function newstripos($string, $needle) { return strpos(strtolower($string), strtolower($needle)); } $str = "Hello World"; $pos = newstripos($str, "world"); echo $pos; //輸出6,表示找到了"world",在第7個字符處出現
這樣,我們就可以做到無論PHP版本如何,都可以使用stripos函數了。
需要注意的是,newstripos函數實際上是先將字符串和子串都轉為小寫再查找。因此,在某些情況下,這種查找方式可能并不準確。比如一個字符串中既包含"Hello World",又包含"hello world",可能會被誤認為只包含其中的一個。
總的來說,newstripos是一個相對簡單但十分實用的函數。它的使用也非常簡單,只需要將需要查找的字符串和子串傳入函數即可。如果你在低版本的PHP中使用過stripos函數,不妨試試這個函數,相信它會給你帶來不少便利。