strspn函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题187之实现strspn函数功能

C语言常用字符串操作函数大全详解(strstr,strtok,strrchr,strcat,strcmp,strcpy,strerror,strspn,strchr等)

C语言源码剖析与实现——strtok()系列函数实现

strspn&strcspn

C 标准库 - string.h之strspn使用

VSCode自定义代码片段——声明函数