比较

strcmp — 二进制安全字符串比较
语法

int strcmp( string $str1, string $str2)

描述
  • 注意该比较区分大小写
  • strcmp是根据ACSII码的值来比较两个字符串的
参数
参数 描述
str1 第一个字符串
str2 第二个字符串
返回值
  • 如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0
举例
// 示例1-简单比较
$var1 = "Hello";
$var2 = "hello";
echo strcmp($var1,$var2);
// 结果
-1
// 示例2-复杂比较
$a = "foo"; // length 3
$b = ""; // empty string
$c = "barbar"; // length 6

echo strcmp($a, $a); // outputs 0
echo strcmp($a, $c); // outputs 1
echo strcmp($c, $a); // outputs -1
echo strcmp($a, $b); // outputs 3
echo strcmp($b, $a); // outputs -3
echo strcmp($c, $b); // outputs 6
echo strcmp($b, $c); // outputs -6

strcasecmp — strcmp的不区分大小写版本

strncmp — 二进制安全比较字符串开头的若干个字符
语法

int strncmp( string $str1, string $str2, int $len)

描述
  • 该函数与 strcmp() 类似,不同之处在于你可以指定两个字符串比较时使用的长度(即最大比较长度)
  • 注意该比较区分大小写
参数
参数 描述
str1 第一个字符串
str2 第二个字符串
len 最大比较长度
返回值
  • 如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0
举例
// 示例-可以看到,strcmp会每个字符都比较,strncmp指定最大比较字符n
$a = 'abcd';
$b = 'abcf';
echo strcmp($a,$b);
$a = 'abcd';
$b = 'abcf';
echo strncmp($a,$b,3);
// 结果
-1
0

strncasecmp — strncmp的不区分大小写版本

strnatcmp — 使用自然排序算法比较字符串
语法

int strnatcmp( string $str1, string $str2)

描述
  • 该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是"自然顺序"。
  • 注意该比较区分大小写。
参数
参数 描述
str1 第一个字符串
str2 第二个字符串
返回值
  • 与其他字符串比较函数类似,如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0
举例
// 示例
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo "标准字符串比较\n";
usort($arr1, "strcmp");
print_r($arr1);
echo "\n自然排序字符串比较\n";
usort($arr2, "strnatcmp");
print_r($arr2);
// 结果
标准字符串比较
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)
自然排序字符串比较
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)

strnatcasecmp — strnatcmp的不区分大小写版本

substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度)
语法

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

描述
  • substr_compare() 从偏移位置 offset 开始比较 main_str 与 str,比较长度为 length 个字符
参数
参数 描述
main_str 待比较的第一个字符串
str 待比较的第二个字符串
offset 比较开始的位置。如果为负数,则从字符串结尾处开始算起
length 比较的长度。默认值为 str 的长度与 main_str 的长度减去位置偏移量 offset 后二者中的较大者
case_insensitivity 如果 case_insensitivity 为 TRUE,比较将不区分大小写
返回值
  • 如果 main_str 从偏移位置 offset 起的子字符串小于 str,则返回小于 0 的数;如果大于 str,则返回大于 0 的数;如果二者相等,则返回 0。如果 offset 大于等于 main_str 的长度或 length 被设置为小于 1 的值( PHP 5.6 之前的版本),substr_compare() 将打印出一条警告信息并且返回 FALSE。
举例
// 示例
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // php5.6之前的版本warning,之后的为空
// 结果

preg_match — 执行一个正则表达式匹配
语法

int preg_match( string $pattern, string $subject[, array &$matches[, int $flags = 0[, int $offset = 0]]] )

描述
  • 搜索subject与pattern给定的正则表达式的一个匹配
参数
参数 描述
pattern 要搜索的模式,字符串类型
subject 输入字符串
matches 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推
flags flags可以被设置为以下标记值:PREG_OFFSET_CAPTURE 如果传递了这个标记,对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。注意:这会改变填充到matches参数的数组,使其每个元素成为一个由第0个元素是匹配到的字符串,第1个元素是该匹配字符串在目标字符串subject中的偏移量。
offset 通常,搜索从目标字符串的开始位置开始。可选参数 offset 用于指定从目标字符串的某个未知开始搜索(单位是字节)。
返回值
  • preg_match()返回 pattern 的匹配次数。它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后将会停止搜索。preg_match_all()不同于此,它会一直搜索subject 直到到达结尾。如果发生错误preg_match()返回 FALSE。
举例
// 示例1-一般使用,preg_match()返回 pattern 的匹配次数。它的值将是0次(不匹配)或1次
$result = preg_match("/php/i", "PHP is the web scripting language of choice.");
echo $result;
// 结果
1
// 示例2-指定第三个参数matches
$result = preg_match("/php/i", "PHP is the web scripting language of choice. php is very good",$matches);
echo $result;
print_r($matches);
// 结果
1
Array
(
    [0] => PHP
)
// 示例3-指定第三个参数matches,并且指定第四个参数PREG_OFFSET_CAPTURE,由下面结果可以看到,匹配php的第一个值的偏移量为0
$result = preg_match("/php/i", "PHP is the web scripting language of choice. php is very good",$matches,PREG_OFFSET_CAPTURE);
echo $result;
print_r($matches);
// 结果
1
Array
(
    [0] => Array
        (
            [0] => PHP
            [1] => 0
        )

)
// 示例4-指定offset偏移量
$result = preg_match("/php/i", "PHP is the web scripting language of choice. php is very good",$matches,PREG_OFFSET_CAPTURE,50);
echo $result;
print_r($matches);
// 结果
0
Array
(
)

results matching ""

    No results matching ""