W3docs

strchr()

Articolo sulla funzione PHP strchr(), usata per trovare la prima occorrenza di una stringa all'interno di un'altra stringa.

La funzione PHP strchr() trova la prima occorrenza di una sottostringa all'interno di una stringa e restituisce il resto della stringa a partire da quel punto. Nonostante il nome (che richiama il strchr del C), il "needle" da cercare può essere composto da più di un singolo carattere. Questa pagina illustra la sintassi, il flag opzionale $before_needle, il valore di ritorno false da gestire con attenzione e la relazione tra strchr() e le funzioni simili.

Sintassi

strchr(string $haystack, string $needle, bool $before_needle = false): string|false

La funzione accetta tre parametri:

  • $haystack — la stringa in cui eseguire la ricerca.
  • $needle — la sottostringa da cercare. Se contiene più di un carattere, strchr() cerca la corrispondenza dell'intera sottostringa.
  • $before_needle (opzionale) — quando è false (valore predefinito) viene restituita la parte della stringa a partire dalla corrispondenza; quando è true viene restituita la parte prima della corrispondenza. Aggiunto in PHP 5.3.

Restituisce la porzione corrispondente di $haystack come stringa, oppure false se $needle non viene trovato.

Esempio di base

php— editable, runs on the server

strchr() individua la prima "o" in "Hello World" e restituisce il resto della stringa a partire da quel carattere:

o World

Restituire la parte prima della corrispondenza

Passa true come terzo argomento per ottenere tutto ciò che si trova prima della prima occorrenza:

<?php
$string = "Hello World";
$result = strchr($string, "o", true);
echo $result;
?>
Hell

Questo è utile per dividere una stringa su un delimitatore — ad esempio, estrarre la parte locale di un indirizzo email prendendo tutto ciò che precede "@".

Gestione del caso "non trovato"

Quando il needle è assente, strchr() restituisce false, non una stringa vuota. Poiché false viene stampato come nulla, un risultato non verificato può produrre silenziosamente un output vuoto, quindi è necessario testarlo esplicitamente:

<?php
$result = strchr("Hello World", "z");
if ($result === false) {
    echo "Not found";
} else {
    echo $result;
}
?>
Not found

Usa il confronto rigoroso ===: una corrispondenza riuscita potrebbe essa stessa essere la stringa "0", che == tratterebbe come falsy.

strchr() rispetto alle funzioni correlate

  • strstr()strchr() è semplicemente un alias di strstr(); si comportano in modo identico. strstr() è il nome più comunemente utilizzato.
  • strpos() — restituisce la posizione intera della prima corrispondenza (oppure false), anziché la sottostringa corrispondente. Usala quando hai bisogno di un indice per substr() o per altra logica basata su offset.
  • substr() — estrae una porzione di stringa tramite offset numerico e lunghezza, senza alcuna ricerca.
  • stristr() — la controparte case-insensitive di strstr()/strchr().

strchr() trova la prima occorrenza di un needle in una stringa e restituisce il resto della stringa (oppure, con $before_needle impostato a true, la parte che la precede). Ricorda che è un alias di strstr(), che il needle può essere una sottostringa di più caratteri e che restituisce false — da verificare con === — quando non trova alcuna corrispondenza.

Pratica

Pratica
Cosa fa la funzione strchr() in PHP secondo il link sorgente fornito?
Cosa fa la funzione strchr() in PHP secondo il link sorgente fornito?
Was this page helpful?