E' possibile in qualche modo contare quante volte una determinata parola è presente in una stringa di testo?
Vorrei limitare il numero di smile presenti in un form, qualcuno magari ha qualche soluzione?
![]()
E' possibile in qualche modo contare quante volte una determinata parola è presente in una stringa di testo?
Vorrei limitare il numero di smile presenti in un form, qualcuno magari ha qualche soluzione?
![]()
un piccolo copia/incolla dalla doc PHP:
Count the number of substring occurrences (PHP 4, PHP 5)
int substr_count ( string haystack, string needle [, int offset [, int length]] )
substr_count() returns the number of times the needle substring occurs in the haystack string. Please note that needle is case sensitive.
Grazie spoon25 ho dato un'occhiata al tuo suggerimento ma mi sono trovato in difficoltà, così ho provato ad approfondire la ricerca e ho trovato questo tipo di soluzione... caso mai può essere utile a qualcuno in futuro.
Questo ovviamente è un esempio, potete adattarlo al vostro utilizzo, sono comunque ben accetti suggerimenti e migliorie![]()
codice:// Variabile in cui è contunuto il testo $testo // Array contenente gli smiles $smiles = array(':-)',':-D',':-(',':-P',':-s',':-n'); // Setto il contatore a 0 $smiley_count = 0; // Effettuo il conteggio per ogni smile dell'array foreach ($smiles as $v) { $p = 0; while (($p = strpos($testo, $v, $p)) !== false) { ++$p; ++$smiley_count; } } // Se $smiley_count è superiore a 5 stampo l'errore if ($smiley_count >5) { echo "Sono stati inseriti troppi smile nel testo."; }
che per finire fa la stessa che questo qui
PS: se le funzioni PHP ci sono perché andar a reinventarle?Codice PHP:
<?php
$testo = "";
$smiles = array(':-)',':-D',':-(',':-P',':-s',':-n');
$smiley_count = 0;
foreach($smiles as $s){
$smiley_count += substr_count($testo, $s);
}
if($smiley_count > 5){
print "Sono stati inseriti troppi smile nel testo.";
}
?>
Altrimenti una cosa coì:
(Però dipende dal formato della tua frase...)Codice PHP:
$str = "Pipppo :-) Franco :-) :( ciao ;)";
/*Esplodo per lo spazio creando un array in cui ogni cella è una parola*/
$arrWords = explode(" ",$str);
echo "<pre>";
print_r(array_count_values($arrWords));
echo "</pre>";
ciao