La funzione substr_count()
Il linguaggio PHP consente facilmente di contare il numero delle ripetizioni di una parola all'interno di una stringa alfanumerica tramite la funzione SUBSTR_COUNT.
Come contare le occorrenze in una stringa
La funzione substr_count restitiuisce le occorrenze ossia il numero di volte che un vocabolo o una parola ( sottostringa ) compare in una stringa.
$conta_parole=substr_count($stringa, "Roma");
Faccio un esempio pratico. Prendo in input una stringa $text e gli assegno il valore "This is a test". Quante volte compare la sottostringa "is" nella stringa $text? La soluzione in php è la seguente:
$text = "This is a test";
$n = substr_count($text, "is");
La sottostringa "is" compare nella stringa "This is a test" due volte. La prima volta è dentro la parola "thIS", la seconda volta è il termine "is" che segue subito dopo.
Il comando substr_count mi consente di elaborare questa risposta senza creare appositi algoritmi di scansione del testo e registrare il risultato nella variabile $n.
Alla variabile $n viene assegnato il valore numerico 2.
La sintassi dell'istruzione SUBSTR_COUNT
La funzione ha la seguente sintassi:
int substr_count ( stringa , stringa da cercare [, offset [, lunghezza massima ]] )
Altri esempi pratici
Poniamo di voler conoscere quante volte è contenuta la parola "Roma" all'interno della seguente variabile di testo chiamata $stringa.
$stringa="La città di Roma è la capitale d'Italia. Roma è anche il capoluogo della Regione Lazio ....";
Per contare il numero di volte che appare la parola Roma nella stringa alfanumerica utilizzo l'istruzione seguente:
$conta_parole=substr_count($stringa, "Roma");
La funzione conta il numero di apparizioni della parola all'interno della stringa e registra il numero nella variabile $conta_parole.
A questo punto posso gestire il dato numerico nel resto del programma PHP. Ad esempio, nell'istruzione che segue stampo il risultato a video.
echo "Ho contato ".$conta_parole." la parola Roma nella stringa";
Come contare una parola in una sottostringa
La funzione SUBSTR_COUNT ha anche altri parametri facoltativi che aggiungono nuove funzionalità pratiche.
Il parametro OFFSET specifica la posizione iniziale della stringa da cui cominciare a cercare e contare la parola. Questo parametro è uguale a zero di default.
Nota. Se non viene documentato il parametro OFFSET, la funzione SUBSTR_COUNT inizia a contare il numero di apparizioni della parola fin dall'inizio della stringa.
Il parametro successivo definisce, invece, la lunghezza massima della stringa in cui cercare la parola. Di default questo parametro è uguale alla lunghezza della stringa.
Un primo esempio
La seguente funzione inizia la ricerca a partire dal 20° carattere della stringa. Pertanto, trova una sola ripetizione della parola "Roma" (la seconda) anziché due.
$conta_parole=substr_count($stringa, "Roma", 20);
Un secondo esempio
Se volessi cercare qualcosa soltanto nei primi venti caratteri della stringa, dovrei scrivere la funzione in questo modo:
$conta_parole=substr_count($stringa, "Roma", 0, 20);
La funzione inizia la ricerca dal primo carattere della stringa fino al 20°, trovando al suo interno una sola ripetizione della parola Roma (la prima).
L'uso combinato del parametro OFFSET e della lunghezza massima mi permette anche di focalizzare la ricerca all'interno di una sottostringa specifica.
Un terzo esempio
Ad esempio, scrivendo nel seguente modo:
$conta_parole=substr_count($stringa, "Roma", 9, 6);
la funzione SUBSTR_COUNT inizia la ricerca a partire dal 9° carattere della stringa fino al 15° carattere (10 carattere come posizione iniziale + 6 caratteri di lunghezza massima).
In questo caso la sottostringa estratta utilizzando questi parametri è "di Rom". Pertanto, la funzione non trova alcuna ripetizione della parola ricercata ( Roma ) e restituisce zero come risultato.