PHP substr_compare()
函数用于比较两个字符串从指定的开始位置到指定的结束位置。
语法
substr_compare()函数的语法如下:
substr_compare(String $main_str, String $str, int start_pos, int length, Boolean case-insensitivity = FALSE)
它由五个参数组成,其中三个是必填的,其余两个是可选的。下面是对这些参数的说明:
参数
参数 | 说明 | 必须/可选 |
---|---|---|
main_str | 要比较的第一个字符串 | 必须 |
str | 要比较的第二个字符串 | 必须 |
start_pos | 要比较的开始位置,如果为负值,则从字符串末尾开始比较。 | 必须 |
length | 要比较的长度 | 可选 |
case-insensitive | 此参数为布尔值,它指定是否进行区分大小写的比较。如果不区分大小写为 TRUE,区分大小写为FALSE FALSE - 区分大小写(默认值)TRUE - 不区分大小写 | 可选 |
返回值
此函数返回值如下:
- 返回值 = 0 - 字符串相等。
- 返回值 <0 - $main_str(从起始位置)小于 $str。
- 返回值 > 0 - $main_str(从起始位置)大于$str。
注意:如果$length参数值等于且大于长度主字符串 ($main_str),则此函数会显示警告并返回 FALSE。
注意
该函数是一个二进制安全函数,并且可以选择区分大小写。
PHP 5 及以上版本支持该函数。
更新日志
版本 | 说明 |
---|---|
PHP 5.1.0 | 可以使用负的 start_pos。 |
PHP 5.5.11 | $length 现在可以为 0。 |
PHP 7.2.18, 7.3.5 | $start_pos 可能是等于主字符串的长度 ($main_str)。 |
示例
下面给出几个示例来学习 substr_compare()
的使用方法。
示例1
在下面的示例中,我们在此函数中传递了 3 个必选参数。让我们看看 substr_compare() 的三个参数的工作原理。
<?php
$main_str = "Good health Good life.";
$string2 = "Good health Good life.";
// 两个字符串相等
echo substr_compare($main_str, $string2, 0). "</br>";
// main字符串比 "Good health" 大 11 个字符,包括空格。
echo substr_compare($main_str, "Good health", 0). "</br>";
// main字符串比 "Good health Good life. Good" 短 5 个字符,包括空格。
echo substr_compare($main_str, "Good health Good life. Good", 0). "</br>";
?>
输出:
0
11
-5
11
-5
示例2
<?php
// main字符串大于第二个字符串。
echo substr_compare("Hello yxjc123","Hello", 0). "</br>";
// 两个字符串相等,因为比较从第 6 位开始。
echo substr_compare("Hello yxjc123","yxjc123", 6). "</br>";
// 主字符串和下一个可比较字符串不相同,所以它会返回 -1
echo substr_compare("Hello yxjc123","hie", 0). "</br>";
?>
输出:
11
0
-1
0
-1
示例3
<?php
// 两个字符串从位置 0 到 4 相等。
echo substr_compare("Hello yxjc123","Hello", 0, 4). "</br>";
// 在 6 到 10 之间找不到第二个字符串,因为默认情况下它区分大小写
echo substr_compare("Hello yxjc123","YXJC123", 6, 10). "</br>";
//因为 Hello 存在于字符串中,但未在 5 到 14 范围内找到。
echo substr_compare("Hello yxjc123","Hello", 5, 14). "</br>";
?>
输出:
0
1
-1
1
-1
示例4
区分大小写和不区分大小写例子。
在下面的示例中,我们在此函数中传递了所有五个参数。让我们看看 substr_compare() 与所有参数的工作原理。
<?php
$main_str = "Good health Good life.";
$string2 = "Good health Good life.";
$case_insensitivity = FALSE;
// 在这里,此函数不区分大小写
echo substr_compare($main_str, $string2, 0, 9, TRUE). "</br>";
// 这里,这个函数区分大小写
echo substr_compare($main_str, "GOOD Health", 0, 11, $case_insensitivity). "</br>";
// 该函数不区分大小写
echo substr_compare($main_str, "GOOD health", 0, 11, TRUE). "</br>";
?>
输出:
0
1
0
1
0