informaticaPC

Tutorial de PHP

Invertir y encriptar una cadena de texto, rellenar con caracteres...


Regístrate

Tus datos no serán compartidos, solo nosotros te enviaremos información y novedades

Repetir caracteres

La función de PHP str_repeat() es útil si necesitamos repetir caracteres un determinado número de veces:

<?php
    $nombres = "Cursos gratis";

    // Devuelve: "--------"
    echo str_repeat( "-", 8)."<br />";

    // Devuelve: "[Cursos gratis***************]"
    echo "[".$nombres.str_repeat( "***", 5)."]<br />";

    // Devuelve: "[*****Cursos gratis]"
    echo "[".$nombres.str_repeat( "*", 5)."]<br />";
?>

Descargar ejemplo

Más información

Vea también: [ str_repeat() ]

Rellenar una cadena

Usaremos la función de PHP str_pad() para rellenar una cadena con espacios u otros caracteres.

En el segundo parámetro especificamos la longitud de la cadena tras rellenarla, en el tercer parámetro los caracteres que deseamos usar (si no indicamos nada se rellenará con espacios) y el cuarto parámetro puede tomar uno de los siguientes valores:

  • STR_PAD_BOTH: rellena la cadena por la derecha. Si no se indica nada el cuarto parámetro se usará esta opción por defecto.
  • STR_PAD_LEFT: rellena la cadena por la izquierda.
  • STR_PAD_RIGHT: rellena la cadena a ambos lados.
<?php
    $nombres = "Cursos gratis";

    // Devuelve: "[Cursos gratis------------]"
    echo "[".str_pad($nombres, 25, "-")."]<br />";

    // Devuelve: "[------------Cursos gratis]"
    echo "[".str_pad($nombres, 25, "-", STR_PAD_LEFT)."]<br />";

    // Devuelve: "[------Cursos gratis------]"
    echo "[".str_pad($nombres, 25, "-", STR_PAD_BOTH)."]<br />";

    // Devuelve: "[-X--X-Cursos gratis-X--X-]"
    echo "[".str_pad($nombres, 25, "-X-", STR_PAD_BOTH)."]<br />";
?>

Descargar ejemplo

Más información

Vea también: [ str_pad() ]

Invertir una cadena

En caso de necesitar obtener una cadena de texto al revés, podemos usar la función de PHP strrev():

<?php
    echo strrev("Cursos de informática gratis");    // Devuelve: "sitarg acitámrofni ed sosruC"
?>

Descargar ejemplo

Más información

Vea también: [ strrev() ]

Definir el número de caracteres por línea

Cuando trabajamos con cadenas con mucho texto, es posible que necesitemos dividir el texto insertando saltos de línea, y para ello podemos usar la función de PHP wordwrap().

En el segundo parámetro indicaremos el número máximo de caracteres que puede haber en cada línea, en el tercer parámetro la etiqueta HTML o el carácter de salto de línea a usar para dividir las líneas, y en el cuarto parámetro en caso de indicar true se recortará la palabra si tiene más caracteres que los indicados en el segundo parámetro:

A continuación puedes ver un ejemplo:

<?php
    $cadena = "En www.aprender-informatica.com podrás encontrar los mejores cursos de informática gratis: Office 2010, Windows 7, OpenOffice, y mucho más";

    echo wordwrap( $cadena, 20, "<br/>" )."<p />";
    echo wordwrap( $cadena, 20, "<br/>", true )."<p />";

    echo "<pre>";
    echo wordwrap( $cadena, 20, "\n" );
    echo "</pre>";
?>

Descargar ejemplo

líneas de texto ajustar

Observa que hemos utilizado la etiqueta HTML <pre> cuando usamos el código de escape del salto de línea (\n), para que se mantenga el formato de texto.

Más información

Vea también: [ wordwrap() ]

Encriptar cadenas de texto

Para encriptar una cadena de texto no se recomienda utilizar las funciones de PHP md5() ni sha1() sino en su lugar hash() o crypt(), siendo esta última la más recomendada.

A la función crypt() se le indica como primer parámetro la cadena a encriptar y como segundo parámetro opcional una cadena de texto denominada salt en base a la que se realizará la encriptación, dependiendo de su formato y longitud el algoritmo de encriptación que será utilizado (algunos de ellos no están incluídos en PHP y deben estar disponibles en el sistema operativo), pudiendo ser:

  • CRYPT_STD_DES: basado en DES, con un salt de dos caracteres.
  • CRYPT_EXT_DES: basado en DES extendido, con un salt de 9 caracteres.
  • CRYPT_MD5: Hash MD5 con un salt de doce caracteres.
  • CRYPT_BLOWFISH: hash Blowfish con un salt como sigue: '$2a$', un parámetro de costo de dos dígitos, '$' y 22 dígitos del alfabeto (letras mayúsculas/mínúsculas y dígitos).
  • CRYPT_SHA256: hash SHA-256 con un salt de dieciséis caracteres prefijado con '$5$'.
  • CRYPT_SHA512: Hash SHA-512 con un salt de dieciséis caracteres prefijado con '$6$'.

Para más información sobre cómo construir las cadenas de texto utilizadas como salt consulta el enlace sobre la función crypt() facilitado al final de este apartado.

Veamos a continuación un ejemplo en el que se comprueba qué algoritmos de encriptación están disponibles, y se muestra una cadena de texto encriptada con los que soportados:

<?php
    if( CRYPT_STD_DES == 1 )
        echo "STANDARD DES (2 caracteres): ".crypt("rasmuslerdorf", "rl")."<p />";
    else
        echo "STANDARD DES no soportado<p />";

    if( CRYPT_EXT_DES == 1 )
        echo "Extended DES (9 caracteres): ".crypt("rasmuslerdorf", "_J9..rasm")."<p />";
    else
        echo "EXTENDED DES no soportado<p />";

    if ( CRYPT_MD5 == 1 )
        echo "MD5 (12 caracteres): ".crypt("rasmuslerdorf", '$1$rasmusle$')."<p />";
    else
        echo "MD5 no soportado<p />";

    if( CRYPT_BLOWFISH == 1 )
        echo "BLOWFISH: ".crypt("rasmuslerdorf", '$2a$07$usesomesillystringforsalt$')."<p />";
    else
        echo "BLOWFISH no soportado<p />";

    if( CRYPT_SHA256 == 1 )
        echo "SHA-256 (16 caracteres): ".crypt("rasmuslerdorf", '$5$rounds=5000$usesomesillystringforsalt$')."<p />";
    else
        echo "SHA-256 no soportado<p />";

    if( CRYPT_SHA512 == 1 )
        echo "SHA-512 (16 caracteres): ".crypt("rasmuslerdorf", '$6$rounds=5000$usesomesillystringforsalt$')."<p />";
    else
        echo "SHA-512 no soportado<p />";

    echo "Máxima longitud de la cadena 'salt' soportada en el sistema: [".CRYPT_SALT_LENGTH."]";
?>

Descargar ejemplo

Tal y como hemos comentado anteriormente, para utilizar un determinado algoritmo de encriptación (tras comprobar que está soportado en el sistema) basta con indicar en el segundo parámetro una cadena de texto en el formato especificado para el algoritmo de encriptación deseado.

Los métodos de encriptación más usados son los DES y MD5.

Por ejemplo, para comprobar si un usuario tiene acceso se le pediría que introdujese su contraseña para después obtener el hash con crypt() (indicando la misma cadena de texto salt con la que fue creada), y finalmente compararíamos si el hash obtenido es igual al que teníamos guardado para el usuario.

Más información

Vea también: [ ¿Qué es un hash? ] - [ Hash de contraseñas seguro ] - [ crypt() ] - [ hash() ] - [ md5() ] - [ sha1() ]

Información

Cuando se usan algoritmos de encriptación que utilizan el carácter $ para construir la cadena de texto salt, dado que es un carácter especial en PHP deberemos indicar dicha cadena entre comillas simples o bien entre comillas dobles escapando dicho carácter con barra inversa.

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso