# Strings en PHP ## Formateo de Cadenas Para formatear cadenas tenemos dos funciones en PHP, estas son: **printf** y **sprintf**. La diferencia entre ambas es que **printf** muestra la cadena formateada y **sprintf** nos permite guardar dicho formateo en una variable. Cada especificador de conversión va precedido del carácter **%** y se compone de las siguientes partes: - **Signo** (opcional). Indica si se pone signo a los número negativos (por defecto) o también a los positivos (se indica con un signo + - **Relleno** (opcional). Indica que carácter se usará para ajustar el tamaño de una cadena. Las opciones son el carácter 0 o el carácter espacio (por defecto se usa el espacio). Si queremos utilizar un carácter de relleno alternativo se prefija con una comilla simple (') - **Alineación** (opcional). Indica que tipo de alineación se usará para generar la salida: justificación derecha (por defecto) o izquierda (se indica con el carácter -). - **Ancho** (opcional). Indica el mínimo número de caracteres de salida para un parámetro dado. - **Precisión** (opcional). Indica el número de dígitos decimales que se mostrarán para un número real. Se escribe como un dígito precedido por un punto. - **Tipo (obligatorio)**. Indica cómo se debe tratar el valor del parámetro correspondiente. ### Tipos En la siguiente tabla puedes ver una lista con todos los especificadores de tipo. | Especificador | Significado | | -------- | -------- | | b | Tratado como entero y representado como binario| | c | Tratado como entero y representado como código ASCII| | d | Tratado como entero y representado como decimal| | u | Tratado como entero y representado como decimal sin signo| | o | Tratado como entero y representado como octal| | x | Tratado como entero y representado en hex (minuscula)| | X | Tratado como entero y representado en hex (mayuscula)| | f | Tratado como doble y representado en coma flotante (sin tener en cuenta la localidad)| | F | Tratado como doble y representado en coma flotante (teniendo en cuenta la localidad)| | e | Representado en notación cientifíca (e en minuscula)| | E | Representado en notación cientifíca (e en mayuscula)| | g | Se usa la forma más corta entre %f y %e| | G | Se usa la forma más corta entre %FE| | s | Tratado como una cadena y representado como tal| | % | Se muestra el carácter % como tal| *Ejemplos de uso* ```php= <?php $number_int = 25; printf("El número %d en Binario es: %b \n", $number_int, $number_int); printf("El número %d en Octal es: %o \n", $number_int, $number_int); printf("El número %d en Hexadecimal es: %x \n", $number_int, $number_int); printf("El número %d en ASCII es: %c \n", $number_int, $number_int); setlocale(LC_ALL, "es", "esES, es.UTF8"); $number_float = 45.2345; printf("El número con signo y dos decimales: %+.2f \n", $number_float); printf("El número con cuatro decimales: %.4F\n", $number_float); printf("El número como digito y con 3 9 de relleno: %'95d\n", $number_float); printf("El número %f en notación cientfíca: %.2e \n", $number_float, $number_float); printf("El número usando g: %g\n", $number_float); /* OUTPUT El número 25 en Binario es: 11001 El número 25 en Octal es: 31 El número 25 en Hexadecimal es: 19 El número 25 en ASCII es: El número con signo y dos decimales: +45,23 El número con cuatro decimales: 45.2345 El número como digito y con 3 9 de relleno: 99945 El número 45,234500 en notación cientfíca: 4.52e+1 El número usando g: 45,2345 / ``` ## Algunas Funciones - **strrev**: Hace el reverso de una string - **str_repeat**: Repite la cadena que le pasemos como primer parámetro, el número de veces que le indiquemos como segundo parámetro. - **strtoupper**: Pasa una string a mayuscúlas - **strlen**: Nos indica la longitud de una string ```php= <?php echo strrev(" .dlrow olleH"); echo str_repeat("Hip ", 2); echo strtoupper("hooray!"); echo strlen("intro"); ``` ## Heredoc Permite asignar cadenas de texto extensos, sin usar comillas, a través de delimitadores. Funciona exactamente igual que las comillas dobles, podemos escapar carácteres y meter variables dentro. La estructura es la siguiente: ```php= <?php // La palabra DELIMITADOR puede ser cualquiera print <<< DELIMITADOR texto $var /n DELIMITADOR; ``` Esto es bastante útil sobre todo para generar bloques de contenido html reutilizables. ### Nowdoc Si quieres que no se sustituyan variables debemos poner el delimitador de apertura entre comillas simples. ```php= <?php // La palabra DELIMITADOR puede ser cualquiera print <<< 'DELIMITADOR' texto $var /n DELIMITADOR; ``` ###### tags: `DAW` DSW` `UT2` `PHP`