Ответ 1
используйте это:
echo substr_count("abca", "a"); // will echo 2
Каков наиболее эффективный способ подсчета всех вхождений конкретного символа в строку PHP?
используйте это:
echo substr_count("abca", "a"); // will echo 2
Не можете ли вы передать символ preg_match_all?
Не уверен, какой ответ вы ищете, но здесь функция, которая может это сделать:
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
)
или что-то...
Если вы собираетесь многократно проверять одну и ту же строку, было бы разумно иметь какой-то трюк или даже ассоциативный массив, иначе простой способ сделать это...
for($i = 0; $i < strlen($s); $i++)
if($s[i] == $c)
echo "{$s[i]} at position $i";
Это работало для меня. Пожалуйста, используйте код ниже:
$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;
}
что-то вроде этого также работает для этого:
$string = 'blabla';
$searchitem = 'a';
$pieces = explode("$searchitem",$string);
echo count($pieces).' times ' . $searchitem . ' character(s) is/are used ';