Comment supprimer la dernière virgule d'une chaîne en utilisant PHP?

96

J'utilise une boucle pour obtenir des valeurs de ma base de données et mon résultat est comme:

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

Et je le veux comme ça:

'name', 'name2', 'name3'

Je veux supprimer la virgule après la dernière valeur de la boucle.

JoJo
la source
11
Vous devriez implodevos valeurs d'origine avec des virgules, ne pas les parcourir en boucle et supprimer des éléments à la fin.
moonwave99

Réponses:

217

Utilisez la rtrimfonction:

rtrim($my_string, ',');

Le deuxième paramètre indique le caractère à supprimer.

Ander2
la source
26
Assurez-vous également que vous n'avez pas d'espace après la virgule, sinon cela échouera, ou faites rtrim (trim ($ my_string), ',').
Foxhoundn
Excellente réponse!
DiChrist
@Foxhoundn Votre commentaire est sauveur. Thanks bro
Jaydeep Goswami
1
Cela ne fonctionne pas dans une boucle qui ajoute une virgule à la fin car cela supprimera toutes les virgules.
LizardKG
25

Essayer:

$string = "'name', 'name2', 'name3',";
$string = rtrim($string,',');
Boaz
la source
1
Je l'ai déjà essayé mais il s'affiche comme ceci: 'nom''nom2''nom3' Ce n'est pas ce dont j'ai besoin
JoJo
Selon votre exemple, vous devez appliquer cette fonction uniquement sur le résultat final et non sur chaque valeur séparément.
Boaz
J'utilise loop alors comment puis-je connaître le résultat final de loop?
JoJo
Le résultat final de la boucle est stocké dans une variable, non? Appliquez donc l' rtrimappel à cette variable. Si vous rencontrez toujours des difficultés, mettez à jour votre question avec le code qui produit la boucle.
Boaz
J'aime cette réponse en particulier, car l'un des problèmes avec de nombreuses fonctions intégrées de PHP, c'est que certaines d'entre elles sont nulles, et certaines d'entre elles ont des types de retour. Dans ce cas, j'essayais d'écrire simplement rtrim($string, ','), quand je devrais écrire$string = rtrim($string, ',');
Alec
14

Essayez le code ci-dessous:

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

Utilisez ce code pour supprimer le dernier caractère de la chaîne.

VijayS91
la source
10

Vous pouvez utiliser la substrfonction pour supprimer cela.

$t_string = "'test1', 'test2', 'test3',";
echo substr($t_string, 0, -1);
Annie Chandel
la source
7

rtrim fonction

rtrim($my_string,',');

Le deuxième paramètre indique que la virgule doit être supprimée du côté droit.

Jitendra Tyagi
la source
5

utilisation rtrim()

rtrim($string,',');
Sankalp Mishra
la source
4

Cela aura un impact sur votre script si vous travaillez avec du texte multi-octets à partir duquel vous effectuez une sous-chaîne. Si tel est le cas, je recommande vivement d'activer les fonctions mb_ * dans votre php.ini ou de le faireini_set("mbstring.func_overload", 2);

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

Ashok Khot
la source
2

c'est aussi simple que:

$commaseparated_string = name,name2,name3,;
$result = rtrim($commaseparated_string,',');
Ketan Savaliya
la source
2

Il est préférable d'utiliser implode à cette fin. Imploser est facile et génial:

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

Production:

    name1, name2, name3
Khandaniel
la source
Il n'est pas nécessaire de générer d'abord un tableau à partir des valeurs lues dans la base de données. rtrim & substr sont à la fois des solutions valides - et bonnes.
Steve Horvath
Eh bien, vous avez raison, mais si vous avez un tableau, c'est une solution pratique
khandaniel
1

Vous pouvez utiliser l'une des techniques suivantes pour supprimer la dernière virgule (,)

Solution 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.

Solution 2:

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

Solution 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Majbah Habib
la source
0

Solutions à appliquer lors d'une boucle:

//1 - Using conditional:

$source = array (1,2,3);
$total = count($source);
    
$str = null;
    
for($i=0; $i <= $total; $i++){ 
        
    if($i < $total) {
        $str .= $i.',';
    }
    else {
        $str .= $i;
    }
}
    
echo $str; //0,1,2,3

//2 - Using rtrim:

$source = array (1,2,3);
$total = count($source);

$str = null;

for($i=0; $i <= $total; $i++){ 
    
        $str .= $i.',';
}

$str = substr($str,0,strlen($str)-1);
echo $str; //0,1,2,3
Fellipe Sanches
la source