首页 > 代码库 > strspn函数

strspn函数

int strspn ( string $subject , string $mask [, int $start [, int $length ]] ) (PHP 4, PHP 5, PHP 7)

1、计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。

2、返回 subject 中全部字符仅存在于 mask 中的第一组连续字符(子字符串)的长度。

以上是PHP手册里面关于strspn的函数介绍。刚开始未能明白,仔细思考了下,关键字应该是第一段和第一组以及start的起始位置。上例子。运行环境为PHP5.6

1、结果是 1 。$subjec变量第一个字符是n可以在$mask里匹配到,第二个字符是o,无法匹配到,只有一个匹配,所以结果是 1. 另外,该函数是区分大小写的。可以将$subject n更改为N进行测试,结果为0

1 <?php
2 $subject = "nothing is impossible to a willing heart";
3 $mask = "tdefnadefiset";
4 echo strspn($subject,$mask);
5 ?>

2.$mask 里面包含了 $subject从第一个字符开始的nothin6个字符,所以结果为 6

<?php
$subject = "nothing is impossible to a willing heart";
$mask = "tdefnhadoefiset";
echo strspn($subject,$mask);
?>

3、因为$subject 匹配$mask的时候,如果函数不指定start开始值,是从$subject的第一字符开始的,而$mask 里面不包含n,所以结果为0

<?php
$subject = "nothing is impossible to a willing heart";
$mask = "tdefhadoefiset";
echo strspn($subject,$mask);
?>

4、同上个例子比较,这次是从$subject的o字符开始[第0个位置是n,第一个位置是o],在$mask能匹配到 othi,所以结果为4.

<?php
$subject = "nothing is impossible to a willing heart";
$mask = "tdefhadoefiset";
echo strspn($subject,$mask,1);
?>

5、同上个例子,如果start是负值,表示从倒数第start个开始比较,例子是-3,也就是从a开始比较,art在$mask里面都存在,所以结果为3

<?php
$subject = "nothing is impossible to a willing heart";
$mask = "trdefhadoefiset";
echo strspn($subject,$mask,-3);
?>

 

strspn函数