substr_compare()

1. 定义

该函数从偏移位置比较指定长度的子字符串是否相同,通常用以检查字符串的开始或结束是否为指定字符串。

2. 语法

substr_compare ( string $main_str , string $str , int $offset [, int $length [, bool $case_insensitivity = FALSE ]] ) : int

3. 参数说明

参数 可选性 数据类型 描述
$main_str 必需 字符串 待比较的第一个字符串
$str 必需 字符串 待比较的第二个字符串
$offset 必需 整型 比较开始的位置
$length 可选 整型 比较的字符串长度,默认为 $str 与 (|$main_str - $offset|) 中较大的那个值
$case_insensitivity 可选 布尔值 是否开启大小写不敏感,默认为TRUE,大小写不敏感

其中,$offset的值可以为负数,但其绝对值不能大于$main_str的长度。

最后,该函数的返回值有以下几种可能:

  • 0:比较的子字符串相同,即substr($main_str, $offset, $length) == substr($str, 0, $length)的值为真
  • 正数:比较的子字符串不同,同时substr($main_str, $offset, $length) > substr($str, 0, $length)的值为真
  • 负数:比较的子字符串不同,同时substr($main_str, $offset, $length) < substr($str, 0, $length)的值为真

4. 示例

<?php

// substr_compare()
// 从偏移位置比较指定长度的子字符串是否相同,通常用以检查字符串的开始或结束是否为指定字符串

// 检查网址是否是 https 安全模式
$main_str = 'https://www.jisuapi.com';
// $main_str = 'http://www.jisuapi.com';
$start_str = 'https';
if(substr_compare($main_str, $start_str, 0, strlen($start_str)) === 0) {
    echo '该网址是HTTPS开头',"\n";
} else {
    echo '该网址不是HTTPS开头',"\n";
}
/* 输出:
该网址是HTTPS开头
*/

5. 延展阅读

  • strncmp():比较二进制字符串的大小。但该函数可以指定比较的长度