2009-06-01 13 views

Respuesta

0

¿No puedes alimentar al personaje al preg_match_all?

+1

No es eficiente usar una expresión regular solo para buscar un carácter estático. –

31

uso esto:

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

realmente me ayudó mucho. – ABorty

+2

para cadenas multibyte use mb_substr_count() – Murat

+0

Además, tenga en cuenta que la aguja es 'case-sensitive'! –

0
No

seguro de qué tipo de respuesta que estás buscando, pero aquí es una función que podría hacerlo:

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

pasarlo al personaje que está buscando y la cadena que desea buscar:

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

se le debe dar algo así como

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

o algo ...

0

Si va a ser comprobar repetidamente la misma cadena, que sería buena idea tener algún tipo de trie o gama aún Assoc porque de lo contrario, el camino directo de hacerlo es ...

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

¿qué tal si queremos una búsqueda insensible a mayúsculas y minúsculas? Prashant

-1

algo como esto también funciona para esto:

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

esto estaba trabajando para mí. Por favor intente abajo código:

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