PHP, eliminar el último caracter de una cadena

17 Dic 2010

Este es uno de esos pequeños trucos o snippets en PHP que hacen más elegantes nuestros códigos.

Muchas veces nos encontramos con que estamos construyendo una cadena de forma dinámica en PHP mientras recorremos un bucle, un array o un objeto. Por ejemplo, cuando queremos componer una lista separando los elementos con comas u otro caracter. Pero claro, siempre nos termina sobrando el último:

$myString = '';
for( $x = 0; $x < 3; $x++ ){
  $myString .= 'number ' . $x . ',';
}
 
echo $myString; // 'number 1, number 2, number 3,'

Pese a que muchos lenguajes no dan importancia a esa última coma, llamada en programación trailing comma, en PHP debemos asegurarnos de suprimirla. Para ello,  muchas veces he encontrado códigos que hacen uso de la función substr() para ello:

$myString = substr($myString, 0, -1);
echo $myString;  // 'number 1, number 2, number 3'

Correcto funciona, pero hay otra forma, como indiqué más arriba, algo más elegante: usando trim().

Efectivamente, la función trim() que habitualmente se usa para eliminar espacios en blanco al principio o final de una cadena, acepta como parámetro el caracter que queremos filtrar o eliminar:

$myString = trim($myString, ',');
echo $myString;  // 'number 1, number 2, number 3'

Mismo resultado, pero más claro que el anterior.

Más:

{9} Comentarios.

  1. Marco Valsimm

    Yo soy una de las personas que dice que el Internet no nada mas sirve para chatear con el amigo(a) nada mas para relajarte.
    Precisamente revisando mi Bandeja de entrada me encontre con un mensaje de desarrolloweb.com que me manda un sin fin de noticias informaticas de ultimo momento. Y Ohh para mi sorpresa encuentro un apartado que dice: «OpenLibra: La Biblioteca Libre Online del Desarrollador» lo visito y con el simple hecho de ver de que trata ya forma parte de mi persona y en lo personal le doy un diezassso o su equivalente.

    Que bueno que existen este tipo de páginas tan importantes para la gente que desea seguir actualizando sus conocimientos. Enhorabuena y muchas felicidades y que siga creciendo esta página como cualquier otra. En lo personal yo lo recomendare a muchas personas, para empezar ya se lo recomende a mi hermano que estudia Ingeniería Mecatronica. Saludos y éxitoss.

  2. fcodiaz

    good.. buen truko….

  3. fcodiaz

    aportando, recordando algunos encuentro con la «,» de la muerte….

    $arr=array(«a»,»b,»c»,»d»,»f»);

    ahora eso lo quiero en una lista separada por comas, lo cumun o lo que alguna ves hise es

    $cad=»»;
    for($i=0;$i<count($arr);$i++){
    $cad+=$arr[$i];
    }

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

    echo "lo tengo $cad";

    un atajo para esos caso la funcion implode que hace lo cotrario que un explode, une un arreglo en un string separado por la cadena indicada en el caso una ","

    $cad = implode(",",$arr);
    echo " lo tengo $cad ";

  4. Jesús

    Muy bueno, me sirvió parte del código para algo que quería corregir, muchas gracias por su ayuda

  5. Benj4

    exelente, quien lo imaginaria 😀

  6. Ricardo

    Me ha gustado, yo me he encontrado varias veces con ese supuesto y solía usar un
    $cadena = substr($cadena,0,strripos($cadena,’,’));
    Pero me ha gustado más lo del trim 😉

  7. Miguel Sirna

    buen truquito ;D

  8. Oliver Leuyim Angel

    Es muy buen truco pero hay un problema en tu truco que se resuelve de manera tmb muy fácil, si en la cadena creada gustas mantener una «,» al inicio este trim te la borra, pues lo q hay q hacer es mas bn y mucho más correcto es utilizar la función rtrim().

    Saludos.

    P.D.: buen aporte.

  9. Karen González

    Muy útil y mucho mas sencillo de recordar, gracias 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *