欢迎访问宙启技术站
智能推送

PHP字符串学习之检测子串是不是存在(大小写敏感)

发布时间:2023-05-17 23:11:20

在PHP字符串学习中,检测子串是否存在是一个常见的操作,尤其是在字符串处理和搜索中。在这篇文章中,我们将介绍如何使用PHP内置函数来检测子串是否存在,并且会详细说明大小写敏感和大小写不敏感的区别。

使用PHP内置函数检测子串存在

PHP提供了多个函数来检测子串是否存在,其中最常用的是strpos()函数和strstr()函数。两个函数的用法都很简单,我们来看一下他们的语法:

strpos(string $haystack , mixed $needle [, int $offset = 0 ] ) : int|false

//在 $haystack 字符串中查找 次出现 $needle 字符串的位置(从左向右查找),如果没有找到 $needle 则返回false。

strstr(string $haystack , mixed $needle [, bool $before_needle = false ] ) : string|false

//在 $haystack 字符串中查找 $needle 字符串的 次出现,如果 $before_needle为 true,则返回 $needle 之前的部分,否则返回 $needle 之后的部分。如果没有找到 $needle 则返回false。

两个函数的返回值都是位置或者字符串,如果没有找到子串则返回false。示例代码如下:

$string = "Hello world, learning PHP is fun!"; 

$needle = "PHP"; 

$pos = strpos($string, $needle); 

if ($pos === false) { 

  echo "The string '$needle' was not found in the string '$string'"; 

} else { 

  echo "The string '$needle' was found at position $pos in the string '$string'"; 

$string = "Hello, learning PHP is fun!"; 

$needle = "PHP"; 

$part = strstr($string, $needle); 

if ($part === false) { 

  echo "The string '$needle' was not found in the string '$string'"; 

} else { 

  echo "The string '$needle' was found in the string '$string', and the part before it is '$part'"; 

上面的代码中,$string是目标字符串,$needle是要查找的子串,分别使用了strpos()和strstr()函数来查找。需要注意的是,在使用strpos()函数时要使用“全等”(===)比较,这是因为$pos有可能是0,如果使用“相等”(==)比较,就会被误判为不存在。

大小写敏感和大小写不敏感的区别

在PHP字符串学习中,大小写敏感和大小写不敏感是一个很重要的概念,它们之间的区别在于是否区分字母的大小写。

如何检测大小写敏感

当我们使用strpos()和strstr()函数时,默认情况下是大小写敏感的,也就是说,如果子串中有一个字母大小写不对,就无法找到子串。例如:

$string = "Hello World!"; 

$needle = "world"; 

$pos = strpos($string, $needle); 

if ($pos === false) { 

  echo "The string '$needle' was not found in the string '$string'"; 

} else { 

  echo "The string '$needle' was found at position $pos in the string '$string'"; 

在这个例子中,$pos的值将是false,因为子串中的“w”应该是小写的。

如何检测大小写不敏感

如果我们想进行大小写不敏感的子串查找,就需要使用stristr()和stripos()函数,这两个函数与strstr()和strpos()的使用方法相同,只是多了一个“i”。示例代码如下:

$string = "Hello World!"; 

$needle = "world"; 

$pos = stripos($string, $needle); 

if ($pos === false) { 

  echo "The string '$needle' was not found in the string '$string'"; 

} else { 

  echo "The string '$needle' was found at position $pos in the string '$string'"; 

在这个例子中,$pos的值将是6,因为使用了stripos()函数,即使子串中的“w”是小写的,也能找到子串的位置。

总结

在PHP字符串学习中,检测子串是否存在是一个常见的操作,比较常用的函数有strpos()、strstr()、stripos()和stristr()。其中,strpos()和strstr()是大小写敏感的,而stripos()和stristr()是大小写不敏感的。在使用strpos()函数时要注意使用“全等”比较,避免误判。在实际应用中,我们需要根据具体的情况来选择大小写敏感和大小写不敏感的函数。