在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函数,不妨试试这个函数,相信它会给你带来不少便利。