Como faço para remover a última vírgula de uma string usando PHP?


96

Estou usando um loop para obter valores do meu banco de dados e meu resultado é como:

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

E eu quero assim:

'name', 'name2', 'name3'

Quero remover a vírgula após o último valor do loop.


11
Você deve implodecolocar seus valores originais com vírgulas, não fazer um loop sobre eles e remover coisas no final.
moonwave99

Respostas:


217

Use a rtrimfunção:

rtrim($my_string, ',');

O segundo parâmetro indica o caractere a ser excluído.


26
Certifique-se também de que não há nenhum espaço à direita após a vírgula, caso contrário, isso irá falhar, ou faça rtrim (trim ($ my_string), ',').
Foxhoundn

Excelente resposta!
DiChrist de

@Foxhoundn Seu comentário é salvador. Obrigado mano
Jaydeep Goswami

1
Isso não funciona em um loop que adiciona uma vírgula no final, pois removerá todas as vírgulas.
LizardKG

25

Experimentar:

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

1
Já tentei, mas está mostrando assim: 'name''name2''name3' Isso não é o que eu preciso
JoJo

Por seu exemplo, você precisa aplicar esta função apenas no resultado final e não em cada valor separadamente.
Boaz

Estou usando o loop, então como posso saber o resultado final do loop?
JoJo

O resultado final do loop é armazenado em uma variável, certo? Portanto, aplique a rtrimchamada a essa variável. Se você ainda estiver tendo dificuldades, atualize sua pergunta com o código que produz o loop.
Boaz

Gosto dessa resposta em particular, porque um dos problemas com muitas funções integradas do PHP é que algumas delas são nulas e outras têm tipos de retorno. Nesse caso, eu estava tentando apenas escrever rtrim($string, ','), quando deveria estar escrevendo$string = rtrim($string, ',');
Alec

14

Experimente o código abaixo:

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

Use este código para remover o último caractere da string.


10

Você pode usar a substrfunção para remover isso.

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

7

rtrim função

rtrim($my_string,',');

O segundo parâmetro indica que a vírgula deve ser excluída do lado direito.



4

Isso afetará seu script se você trabalhar com texto multibyte do qual sua substring. Se for esse o caso, eu recomendo altamente habilitar as funções mb_ * em seu php.ini ou fazer issoini_set("mbstring.func_overload", 2);

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


2

é tão simples quanto:

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

2

É melhor usar implode para esse fim. Implode é fácil e incrível:

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

Resultado:

    name1, name2, name3

É desnecessário gerar primeiro um array a partir dos valores lidos do banco de dados. rtrim e substr são soluções válidas - e boas.
Steve Horvath

Bem, você está certo, mas se você tiver uma matriz, esta é uma solução útil
khandaniel

1

Você pode usar uma das seguintes técnicas para remover a última vírgula (,)

Solução 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.

Solução 2:

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

Solução 3:

 $string = "'name', 'name2', 'name3',";  // this is the full string or text.
 $string = substr($string , 0, -1);
 echo $string;  
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.