PHP判断是否包含某个字符

PHP判断是否包含某个字符

PHP项目中常常会遇到一个问题,如何判断字符串是否包含某个特殊字符或字符串。比如通过某个字符串前缀判断某个商品类型,比如通过某个字符串后缀判断用户等级等等。
author
Wonderhows July 12, 2021

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_containsstrpos 更加简洁,但缺点是只有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';
}
comments powered by Disqus