PHP函数之strpos()——查找字符串中的子串
PHP函数之strpos()是一个字符串函数,用来查找一个字符串中的子串。通过strpos()函数,我们可以在一个字符串中查找某个子串的位置并返回它在该字符串中的索引值。
基本用法
strpos()函数的基本语法如下所示:
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
参数说明:
$haystack:必选参数,要进行查找的字符串。
$needle:必选参数,要查找的子串。
$offset:可选参数,表示从哪个位置开始查找,默认值为0。
返回值:如果找到$needle,则返回它在$haystack中第一次出现的位置,如果没找到,则返回False。
示例代码:
$text = "Hello world!";
$pos = strpos($text, "world");
if ($pos === false) {
echo "没有找到。";
} else {
echo "world在$text中的位置为:$pos";
}
实际输出:
world在Hello world!中的位置为:6
解释:
在上述代码中,我们定义了一个字符串$text,然后利用strpos()函数查找其中的子串“world”。由于其出现在$text中的位置为第7个字符(从0开始计数),因此返回值为6。
注意:在strpos()返回的位置索引值中,如果没有找到该子串,则返回值为False。因此,除了要判断$pos是否为false外,还要使用全等符(===)来避免返回值为0而被误判为没找到子串。
查找多个子串
strpos()函数只能查找单个子串,如果需要查找多个子串,则可以利用循环来实现。下面是一个查找多个子串的示例代码:
$text = "I am a boy.";
$needles = array("I", "boy", "girl", "man");
foreach ($needles as $needle) {
$pos = strpos($text, $needle);
if ($pos === false) echo "$needle 未找到。";
else echo "$needle 在$text 中的位置为:$pos。";
}
实际输出:
I 在I am a boy.中的位置为:0。
boy 在I am a boy.中的位置为:7。
girl 未找到。
man 未找到。
解释:
在上述代码中,我们首先定义了一个包含多个子串的数组$needles,然后利用foreach循环遍历它。每次循环中,我们利用strpos()函数查找$text中的对应$needle,并将结果输出到页面上。
注意:在本例中,我们将$pos的判断语句放在了循环体内部,以便在查找多个子串时分别输出每一个子串的查找结果。
忽略大小写查找
有时候在查找字符串时,需要忽略字母的大小写。这时可以通过利用不区分大小写(i)修饰符来实现。具体实现方法是使用stripos函数,替代strpos函数。 如:
$text = "Hello world!";
$pos = stripos($text, "WORLD");
if ($pos === false) {
echo "没有找到。";
} else {
echo "WORLD在$text中的位置为:$pos";
}
与strpos()函数类似,stripos()函数也可以查找多个子串,并使用循环来在页面上输出查找结果。其基本的语法与strpos()一致,只是在函数名称中多了一个“i”。
总结
根据以上内容可得出以下结论:
1、strpos函数可以用于查找字符串中的子串。
2、可以通过循环实现查询多个子串。
3、可以通过使用 stripos 函数,实现不区分大小写地查找字符子串。
