¿Cómo elimino una coma del final de una cadena?


119

Quiero quitar la coma del final de una cadena. Como es ahora estoy usando

$string = substr($string,0,-1);

pero eso solo elimina el último carácter de la cadena. Estoy agregando la cadena de forma dinámica, por lo que a veces no hay una coma al final de la cadena. ¿Cómo puedo hacer que PHP elimine la coma del final de la cadena si hay una al final?

Respuestas:


303
$string = rtrim($string, ',');

Documentos para rtrimaquí


27
Esto eliminará varias comas: "a, b ,,," se convertirá en "a, b". Si eso es lo que quiere el OP o no, no lo sé ...
Greg

1
Gracias, estuve haciendo esto con substr, strlen, ... toda mi vida
Farhad

38

Esta es una pregunta clásica, con dos soluciones. Si desea eliminar exactamente una coma, que puede o no estar allí, use:

if (substr($string, -1, 1) == ',')
{
  $string = substr($string, 0, -1);
}

Si desea eliminar todas las comas del final de una línea, use el más simple:

$string = rtrim($string, ',');

La función rtrim (y el ltrim correspondiente para el recorte izquierdo) es muy útil ya que puede especificar un rango de caracteres para eliminar, es decir, para eliminar las comas y los espacios en blanco finales, escribiría:

$string = rtrim($string, ", \t\n");

Gracias por esa explicación detallada. ¡Eso aclara las cosas!
zeckdude

12

supongo que estás concatenando algo en el bucle, como

foreach($a as $b)
  $string .= $b . ',';

mucho mejor es recopilar elementos en una matriz y luego unirlos con un delimitador que necesita

foreach($a as $b)
  $result[] = $b;

$result = implode(',', $result);

esto resuelve problemas de delimitadores dobles y finales que suelen ocurrir con la concatenación


Buena sugerencia. Sin embargo, no todas las concatenaciones pueden tener lugar en PHP. En mi caso, estoy enviando una cadena concatenada de Javascript para que PHP la deshaga.
Sablefoste

4

Si está concatenando algo en el bucle, también puede hacerlo de esta manera:

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}

2

echa un vistazo a la función rtrim

rtrim ($string , ",");

la línea anterior eliminará un carácter si el último carácter es una coma



1

Una simple expresión regular funcionaría

$string = preg_replace("/,$/", "", $string)

2
El desarrollador usa expresiones regulares para resolver un problema y ahora tiene dos problemas.
Sigurd

1

rtrim ($ cadena, ","); es la forma más sencilla.


1

Tenía un molesto espacio "invisible" al final de mi cadena y tenía que hacer esto

 $update_sql=rtrim(trim($update_sql),',');

Pero una solución anterior es mejor

 $update_sql=rtrim($update_sql,', ');

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.