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.


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.


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,',');

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.


10

Vous pouvez utiliser la substrfonction pour supprimer cela.

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

7

rtrim fonction

rtrim($my_string,',');

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



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);


2

c'est aussi simple que:

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

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

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;  

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.