计算字符串开头的特定字符的主要字符数?

时间:2014-12-17 03:15:10

标签: php

给出如下字符串:

$a = '00023407283';
$b = 'f045602345';

是否有内置函数可以计算从开头开始并持续到找不到未指定的其他字符的特定字符的出现次数?

鉴于上述情况,并指定零(0)作为字符,预期结果将为:

$a = '00023407283'; // 3 (the other zeros don't count)
$b = 'f0045602345'; // 0 (It does not start with zero)

3 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

function count_leading($haystack,$value) {
    $i = 0;
    $mislead = false;
    while($i < strlen($haystack) && !$mislead) {
        if($haystack[$i] == $value) {
            $i += 1;
        } else {
            $mislead = true;
        }
    }
    return $i;
}

//examples
echo count_leading('aaldfkjlk','a'); //returns 2
echo count_leading('dskjheelk','c'); //returns 0

答案 1 :(得分:0)

我不认为有任何内置函数可以做到这一点(它太具体了)但你可以写一个方法来做到这一点

function repeatChar($string, $char) {
     $pos = 0;
     while($string{$pos} == $char) $pos++;
     return $pos;
}

答案 2 :(得分:0)

是的,你想要strspn,它计算第一个参数开头第二个参数的字符数:

echo strspn($a, '0'); // === 3
echo strspn($b, '0'); // === 0

3v4l.org直播。除了内置(读取“快速”),这也可以接受任意数量的单个字符来查看开头。但请注意,该函数是面向字节的,因此对多字节字符不起作用。