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.

JoJo
fonte
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.

Ander2
fonte
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,',');
Boaz
fonte
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.

VijayS91
fonte
10

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

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

rtrim função

rtrim($my_string,',');

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

Jitendra Tyagi
fonte
5

usar rtrim()

rtrim($string,',');
Sankalp Mishra
fonte
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);

Ashok Khot
fonte
2

é tão simples quanto:

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

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

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

Resultado:

    name1, name2, name3
Khandaniel
fonte
É 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;  
Majbah Habib
fonte