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

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

Ответы

Ответ 1

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

echo substr_count("abca", "a"); // will echo 2

Ответ 2

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

Ответ 3

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

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
)

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

Ответ 4

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

for($i = 0; $i < strlen($s); $i++)
  if($s[i] == $c)
    echo "{$s[i]} at position $i";

Ответ 5

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

$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;
}

Ответ 6

что-то вроде этого также работает для этого:

$string = 'blabla';
$searchitem = 'a';
$pieces = explode("$searchitem",$string);
echo count($pieces).' times ' . $searchitem . ' character(s) is/are used ';