PHP 字符串函数

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 - 不区分大小写
可选

返回值

此函数返回值如下:

  1. 返回值  = 0 - 字符串相等。
  2. 返回值 <0 -  $main_str(从起始位置)小于 $str。
  3. 返回值 > 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

示例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

示例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

示例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