Каков наиболее эффективный способ подсчета всех вхождений определенного символа в строку PHP? - PullRequest
15 голосов
/ 01 июня 2009

Каков наиболее эффективный способ подсчета всех вхождений определенного символа в строку PHP?

Ответы [ 5 ]

37 голосов
/ 01 июня 2009

используйте это:

echo substr_count("abca", "a"); // will echo 2
0 голосов
/ 19 января 2017

Это работало на меня. Пожалуйста, попробуйте ниже код:

$strone = 'Sourabh Bhutani';
$strtwo = 'a';
echo parsestr($strone, $strtwo);

function parsestr ($strone, $strtwo) {
$len = 0;
while ($strtwo{$len} != '') {
    $len++;
}

$nr = 0;

while ($strone{$nr} != '')
{
    if($strone{$nr} != ' ')
    {
        $data[$nr] = $strone{$nr};
    }
    $nr++;
}

$newdata = $data;

if($len > 1)
{
    $newdata = array();
    $j = 0;
    foreach($data as $val)
    {
        $str .= $val;
        if($j == ($len -1))
        {
            $newdata[] = $str;
            $str = '';
            $j = 0;
        }
        else
            $j++;
    }
}
$i = 0;

foreach ($newdata as $val) {
    if($val == $strtwo)
    {
        $i++;
    }
}
return $i;
}
0 голосов
/ 01 июня 2009

Если вы собираетесь многократно проверять одну и ту же строку, было бы разумно иметь для нее какой-то три или даже ассоциированный массив, простой способ сделать это ...

for($i = 0; $i < strlen($s); $i++)
  if($s[i] == $c)
    echo "{$s[i]} at position $i";
0 голосов
/ 01 июня 2009

Не уверен, какой ответ вы ищете, но вот функция, которая может это сделать:

function findChar($c, $str) {
    indexes = array();
    for($i=0; $i<strlen($str); $i++) {
        if ($str{$i}==$c) $indexes[] = $i;
    }
    return $indexes;
}

Передайте ему искомый символ и строку, которую вы хотите посмотреть:

$mystring = "She shells out C# code on the sea shore";
$mychar = "s";
$myindexes = $findChar($mychar, $mystring);
print_r($myindexes);

Это должно дать вам что-то вроде

Array (
    [0] => 0
    [1] => 4
    [2] => 9
    [3] => 31
    [4] => 35
)

или что-то ...

0 голосов
/ 01 июня 2009

Разве вы не можете передать символ preg_match_all ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...