Come faccio a rimuovere l'ultima virgola da una stringa utilizzando PHP?


96

Sto usando un ciclo per ottenere valori dal mio database e il mio risultato è come:

'name', 'name2', 'name3',

E lo voglio così:

'name', 'name2', 'name3'

Voglio rimuovere la virgola dopo l'ultimo valore del ciclo.


11
Dovresti implodeinserire i valori originali con virgole, non scorrere su di essi e rimuovere elementi alla fine.
moonwave99

Risposte:


217

Usa la rtrimfunzione:

rtrim($my_string, ',');

Il secondo parametro indica il carattere da eliminare.


26
Assicurati anche di non avere alcuno spazio finale dopo la virgola, altrimenti fallirà, o esegui rtrim (trim ($ my_string), ',').
Foxhoundn

Ottima risposta!
DiChrist

@Foxhoundn Il tuo commento è salvatore. Grazie fratello
Jaydeep Goswami

1
Questo non funziona in un ciclo che aggiunge una virgola alla fine in quanto rimuoverà tutte le virgole.
LizardKG

25

Provare:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');

1
L'ho già provato ma viene visualizzato in questo modo: 'name''name2''name3' Questo non è quello che mi serve
JoJo

Per il tuo esempio, devi applicare questa funzione solo sul risultato finale e non su ogni valore separatamente.
Boaz

Sto usando il ciclo, quindi come posso conoscere il risultato finale del ciclo?
JoJo

Il risultato finale del ciclo è memorizzato in una variabile, giusto? Quindi applica la rtrimchiamata a quella variabile. Se hai ancora difficoltà, aggiorna la tua domanda con il codice che produce il ciclo.
Boaz

Mi piace questa risposta in particolare, perché uno dei problemi con molte funzioni integrate in PHP è che alcune di esse sono nulle e alcune hanno tipi di ritorno. In questo caso, stavo cercando di scrivere rtrim($string, ','), quando avrei dovuto scrivere$string = rtrim($string, ',');
Alec

14

Prova il codice seguente:

$my_string = "'name', 'name2', 'name3',";
echo substr(trim($my_string), 0, -1);

Usa questo codice per rimuovere l'ultimo carattere della stringa.


10

È possibile utilizzare la substrfunzione per rimuoverlo.

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);

7

rtrim funzione

rtrim($my_string,',');

Il secondo parametro indica che la virgola deve essere eliminata dal lato destro.



4

Avrà un impatto sul tuo script se lavori con testo multibyte da cui sottostringi. Se questo è il caso, consiglio vivamente di abilitare le funzioni mb_ * nel tuo php.ini o falloini_set("mbstring.func_overload", 2);

$string = "'test1', 'test2', 'test3',";
echo mb_substr($string, 0, -1);


2

è semplice come:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');

2

È meglio usare implodere per quello scopo. Implode è facile e fantastico:

    $array = ['name1', 'name2', 'name3'];
    $str = implode(', ', $array);

Produzione:

    name1, name2, name3

Non è necessario generare prima un array dai valori letti dal database. rtrim e substr sono soluzioni valide e buone.
Steve Horvath

Bene, hai ragione, ma se hai un array questa è una soluzione pratica
khandaniel

1

È possibile utilizzare una delle seguenti tecniche per rimuovere l'ultima virgola (,)

Soluzione 1:

$string = "'name', 'name2', 'name3',";  // this is the full string or text.
$string = chop($string,",");            // remove the last character (,) and store the updated value in $string variable.
echo $string;                           // to print update string.

Soluzione 2:

$string = '10,20,30,';              // this is the full string or text.
$string = rtrim($string,',');
echo $string;                       // to print update string.

Soluzione 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.