2009-10-29 19 views
85

Quiero eliminar la coma del final de una cadena. Como ahora estoy usando¿cómo elimino una coma del final de una cadena?

$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?

Respuesta

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

Docs for rtrim here

+25

Esto eliminará las comas múltiples: "a, b ,,," se convertirá en "a, b".Si eso es lo que el OP quiere o no, no lo sé ... – Greg

+0

perfecto, ¡gracias! – zeckdude

+1

Gracias, estaba haciendo esto con substr, strlen, ... toda mi vida – Farhad

2

echar un vistazo a la función rtrim

rtrim ($string , ","); 

la línea anterior suprimirá un char si el último char es una coma

0

Una expresión regular sencilla funcionaría

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

Desarrollador usa expresión regular para resolver un problema y ahora tiene dos problemas. – Sigurd

1

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

9

supongo que tienes concatenando algo en el bucle, como

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

es mucho mejor para recoger objetos en una matriz y luego unirse con un delimitador que necesita

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

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

Esto resuelve problemas de delimitación doble y del final que generalmente ocurren con la concatenación

+0

Buena sugerencia. Sin embargo, no todas las concatenaciones pueden tener lugar en PHP. En mi caso, estoy enviando una cadena concatenada de JavaScript para desentrañar PHP. – Sablefoste

34

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

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

Si desea eliminar todas las comas desde el final de una línea de utilizar el más simple:

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

la función rtrim (y la correspondiente ltrim de ajuste izquierda) es muy útil ya que puede especificar un rango de caracteres para eliminar, es decir, para eliminar las comas y espacios en blanco que iba a escribir:

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

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

0

yo tenía un molestos Invisi" espacio ble" al final de mi cuerda y tuvo que hacer esto

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

embargo, una solución anterior es mejor

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

Si está concatenando algo en el bucle, puede hacerlo en este de la misma manera:

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