当先锋百科网

首页 1 2 3 4 5 6 7

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