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.