php查找子字符串
在php里面,判断某个字符串里面是否存在某个子串,可以用strpos
,官方手册在这里
strpos
如果strpos没找到子串,则会返回FALSE,需要用===
来判断是否未找到子串。若找到子串,则会返回该子串第一次出现的位置。
看如下示例代码
$str = 'abcdefg';
$result = strpos($str, 'a');
var_dump($result);
if (false == $result) {
echo "find failed\n";
} else {
echo "find success\n";
}
if (false === $result) {
echo "find failed\n";
} else {
echo "find success\n";
}
打印结果是:
int(0)
find failed
find success
从上方代码可见,==
与===
的打印结果不一样,因为0被转换为布尔类型时,被认为是false。
mb_strpos
我在之前一篇笔记计算字符串长度里面,已经写到过mbstring
的mb_strlen
一些用法
$str = 'abc中文defg';
$result = strpos($str, '文');
var_dump($result);
看下打印结果是:
int(6)
我的php环境默认的编码是ISO-8559-1
,在这个编码里面,中文占2个字节,而strpos是按字节查找的,结果是6与我想要的4不符,需要使用mb_strpos来查找。
$str = 'abc中文defg';
$result = mb_strpos($str, '文', 0, "UTF8");
var_dump($result);
看下打印结果是:
int(4)