HOWTO · PHP
Come rimuovere l'ultimo carattere da una stringa in PHP
Questo articolo introduce come rimuovere l'ultimo carattere da una stringa in PHP. Include la funzione rtrim() e la funzione substr(). Scopri i migliori metodi per la manipolazione delle stringhe in PHP e migliora le tue competenze di programmazione con esempi pratici e spiegazioni chiare.
In questa pagina
Rimuovere contenuto dalla fine di una stringa PHP
Per rimuovere contenuto dalla fine di una stringa PHP, scegli la funzione in base a ciò che deve essere rimosso. Usa rtrim() per rimuovere un numero qualsiasi di byte finali che appartengono a un insieme di caratteri specificato. Usa substr() con una lunghezza di -1 per mantenere la stringa tranne il suo byte finale. Le stringhe PHP sono orientate ai byte, quindi usa una funzione compatibile con multibyte quando “carattere” significa un carattere Unicode completo.
Usa rtrim() per rimuovere un insieme di caratteri finali
rtrim() rimuove i caratteri dal lato destro di una stringa finché appartengono al suo secondo argomento, chiamato maschera di caratteri. La maschera è un insieme di caratteri ammissibili, non un suffisso che deve corrispondere come un’unica sequenza completa. La funzione continua a rimuovere byte da quell’insieme finché non raggiunge un byte che non è nella maschera. Di conseguenza, può rimuovere diversi caratteri finali differenti e copie ripetute di un carattere.
Per un valore che può terminare con uno di due segni di punteggiatura, questo esempio completo applica la maschera !?:
<?php
$value = "report!?!!";
$clean = rtrim($value, "!?");
echo $clean, PHP_EOL;
report
I punti esclamativi finali e il punto interrogativo appartengono tutti alla maschera, quindi ciascuno viene rimosso dalla fine finché non si raggiunge la t precedente.
Usa questo metodo quando la regola è “rimuovere la punteggiatura finale o il riempimento da questo insieme”. Specifica solo i caratteri che dovrebbero essere rimovibili. Ad esempio, la maschera !?. consente di rimuovere qualsiasi sequenza di quei tre caratteri alla fine; non significa “rimuovere il suffisso letterale !?.”. Se la stringa termina con un carattere al di fuori della maschera, quel carattere e tutto ciò che lo precede rimangono. Una stringa vuota rimane vuota.
Usa substr() per rimuovere il carattere finale
Per una stringa ASCII in cui l’obiettivo è rimuovere esattamente il suo ultimo carattere, substr($string, 0, -1) mantiene il prefisso e omette il byte finale. L’offset iniziale 0 inizia all’inizio della stringa. Una lunghezza negativa conta all’indietro dalla fine, quindi -1 fa sì che la parte restituita si fermi un byte prima della fine.
<?php
$string = "Hello World!";
$withoutLastByte = substr($string, 0, -1);
echo $withoutLastByte, PHP_EOL;
Hello World
Questo codice omette il byte finale indipendentemente dal fatto che sia una lettera, un segno di punteggiatura o uno spazio; a differenza di rtrim(), non controlla il valore del byte.
Le stringhe PHP e substr() sono orientati ai byte. In UTF-8, un carattere visualizzato può usare più byte, quindi rimuovere un byte da una stringa che termina con un carattere multibyte può lasciare una sequenza di byte incompleta invece di rimuovere un carattere completo. Per rimuovere un carattere Unicode, usa mb_substr($string, 0, -1, 'UTF-8') con l’estensione mbstring abilitata. Scegli la codifica che corrisponde ai dati quando non è UTF-8.
Scegli l’approccio giusto e gestisci i casi limite
Usa rtrim() quando la regola di rimozione indica un insieme di caratteri finali e può rimuoverne diversi. Usa substr() quando la regola è scartare un numero fisso di byte indipendentemente dai loro valori. Per un valore ASCII semplice e un carattere finale, substr($string, 0, -1) esprime direttamente tale intento. Per un riempimento composto da diversi caratteri possibili, fornisci a rtrim() la maschera esatta che desideri.
Entrambe le funzioni restituiscono una stringa; nessuna delle due modifica la variabile originale sul posto. Assegna il risultato se il codice successivo ha bisogno del valore ripulito. Prima di scegliere un metodo, considera se l’input può essere vuoto, se il carattere di destinazione è effettivamente presente alla fine e se i dati usano una codifica multibyte. La stringa vuota rimane vuota con entrambe le operazioni, mentre rtrim() lascia invariata una terminazione non corrispondente. substr() rimuove comunque un byte senza controllarne il significato.
Una regola pratica è usare rtrim() per un insieme di caratteri finali e substr() per un numero fisso di byte. Se “carattere” significa un punto di codice Unicode completo nella tua applicazione, usa la corrispondente funzione per stringhe multibyte e assicurati che la sua estensione e la sua codifica siano configurate. Queste distinzioni aiutano anche nell’adattare gli esempi: modifica la maschera per definire quali byte finali possono essere rimossi, oppure modifica la lunghezza di substr() per definire quanti byte devono essere omessi.