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.



Per scrivere un commento

knowledge base

Il linguaggio Php

FAQ