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|falseLa 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 ètrueviene 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
strchr() individua la prima "o" in "Hello World" e restituisce il resto della stringa a partire da quel carattere:
o WorldRestituire 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;
?>HellQuesto è 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 foundUsa 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 distrstr(); si comportano in modo identico.strstr()è il nome più comunemente utilizzato.strpos()— restituisce la posizione intera della prima corrispondenza (oppurefalse), anziché la sottostringa corrispondente. Usala quando hai bisogno di un indice persubstr()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 distrstr()/strchr().
Riepilogo
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.