PHP项目中常常会遇到一个问题,如何判断字符串是否包含某个特殊字符或字符串。比如通过某个字符串前缀判断某个商品类型,比如通过某个字符串后缀判断用户等级等等。
什么是子字符串
在开始代码之前,需要明确几个术语的含义。什么是子字符串?子字符串以字符串的关系。顾名思义,子字符串就是字符串的一部分(或全部),是字符串的一个子集。当然子集也包含它本身。比如:
// 字符串
$str = "Hello World";
// 子字符串
$subStr1 = "H"
$subStr2 = "He"
$subStr3 = "Hel"
$subStr4 = "Hello"
PHP判断是否包含某个字符
PHP内置了几个常用的字符串函数,帮助我们日常项目中快速的处理字符串。
常见的字符串函数有:
str_pos()
str_contains()
preg_match()
str_pos
用法
strpos
— 查找字符串首次出现的位置
使用方法:
strpos(string $haystack, mixed $needle, int $offset = 0): int
// 返回 needle 在 haystack 中首次出现的数字位置。
比如,判断 Hello World
中是否包含 el
。
代码样例如下:
// 判断是否包含某个字符
if (strpos('Hello World', 'el') !== false) {
//字符串包含了子字符串
return true
}
str_contains
用法
str_contains
- 确定字符串是否包含给定的子字符串
使用方法:
str_contains(string $haystack, string $needle): bool
// 这是一个大小写敏感的搜索 haystack 中是否包含 needle 子字符串的函数
str_contains
比 strpos
更加简洁,但缺点是只有PHP 8 及以上版本才能够使用此函数。
代码样例如下:
if (str_contains('Hello World', 'el')) {
return 'true';
}
preg_match
用法
preg_match
— 执行匹配正则表达式
使用方法
preg_match(
string $pattern,
string $subject,
array &$matches = null,
int $flags = 0,
int $offset = 0
): int|false
// 搜索subject与pattern给定的正则表达式的一个匹配.
一切与字符相关的内容,都可以使用正则来处理。
代码样例如下:
if (preg_match('/el/i', 'Hello World')) {
echo 'true';
}