Danny Velásquez
Jimmy Buriticá Londoño
Gracias por los apuntes
Danilo Hernandez
Gracias Danny por el valioso apunte.
¿Cómo dar formato a los datos con PHP?
En el mundo de la programación, el tratamiento adecuado de los datos es crucial para garantizar la integridad y consistencia de la información. Ya sea que desees cambiar el aspecto del texto o prepararlo para su almacenamiento, PHP ofrece herramientas poderosas para manipular cadenas de texto eficientemente. Descubramos cómo puedes formatear textos de manera efectiva usando PHP, aprovechando funciones clave que te permitirán alterar mayúsculas y minúsculas, reemplazar fragmentos, y mucho más.
¿Cómo modificar el caso de las cadenas de texto?
Manipular el caso de los textos es una de las tareas más comunes al formatear datos. En PHP, puedes transformar fácilmente un texto en minúsculas, mayúsculas o capitalizar la primera letra. A continuación, se presentan ejemplos prácticos de cómo lograr esto:
// Transformar a minúsculas $text = "PHP es un LENGUAJE"; echo strtolower($text); // Salida: php es un lenguaje // Transformar a mayúsculas echo strtoupper($text); // Salida: PHP ES UN LENGUAJE // Capitalizar solo la primera letra echo ucfirst(strtolower($text)); // Salida: Php es un lenguaje // Colocar la primera letra de cada palabra en mayúscula echo ucwords(strtolower($text)); // Salida: Php Es Un Lenguaje
Estas funciones te permiten un control total sobre cómo quieres presentar o almacenar tus textos.
¿Cómo reemplazar partes de un texto?
Reemplazar fragmentos específicos del texto es ideal para modificar cadenas sin alterar su estructura general. Por ejemplo, si quieres transformar un texto en un slug para URLs:
$text = "PHP es un lenguaje popular"; $slug = str_replace(' ', '-', strtolower($text)); echo $slug; // Salida: php-es-un-lenguaje-popular
También puedes optar por cambiar ciertas palabras dentro de la cadena:
$text = "PHP es un lenguaje"; echo str_replace('PHP', 'JavaScript', $text); // Salida: JavaScript es un lenguaje
Estas técnicas son vitales para manipular dinamicamente textos en tus aplicaciones.
¿Cómo ajustar la longitud de las cadenas?
Cuando trabajas con códigos o secuencias que requieren un tamaño específico, rellenar cadenas puede ser necesario. PHP te ofrece la función str_pad para este propósito:
$codigo = 39; $codigo_formateado = str_pad($codigo, 8, "0", STR_PAD_LEFT); echo $codigo_formateado; // Salida: 00000039
Esta función resulta extremadamente útil para formatear números de factura u otros identificadores.
¿Cómo eliminar etiquetas HTML?
Al procesar entradas de usuarios, es crucial eliminar cualquier etiqueta HTML maliciosa o indeseada para proteger tu aplicación. PHP proporciona strip_tags para tal cometido:
$text = "<h1>PHP</h1> en un lenguaje <strong>dinámico</strong>"; echo strip_tags($text); // Salida: PHP en un lenguaje dinámico
Esta función asegura que tu sistema esté a salvo de ataques de inyección de código.
¿Cómo manejar caracteres especiales con multibyte?
PHP también permite trabajar con caracteres especiales mediante funciones mb_ que soportan multibyte, indispensables para idiomas con acentos o caracteres únicos:
$text = "Año 2020, programación"; echo mb_strtoupper($text); // Salida: AÑO 2020, PROGRAMACIÓN
Usar estas funciones garantiza que los textos con caracteres especiales se procesen y almacenen correctamente.
El control total sobre los datos en PHP te empodera como programador para asegurar que la información que manejes sea exacta y consistente. Con estas herramientas, puedes convertir, reemplazar y formatear datos fácilmente, sentando las bases para aplicaciones robustas y seguras. ¡Sigue adelante en tu viaje de aprendizaje y explora otras técnicas para perfeccionar tus habilidades de programación!
Danny Velásquez
Jimmy Buriticá Londoño
Gracias por los apuntes
Danilo Hernandez
Gracias Danny por el valioso apunte.
Juan Pintos
José Alberto Ortiz Vargas
Esto es oro puro, gracias caballero.
Juan Pablo Campuzano Monsalve
Excelente Aporte! 10/10
Daniel Martín
Para profundizar más en el significado de los bytes es indispensable el curso de Fundamentos de Ingeniería de Software
María Sierra
Cristhian Betancourt
Los mejores apuntes ;)
Sixto Ortega
Como buenos desarrolladores debemos tener control absoluto del flujo de datos de la aplicacion
Usuario anónimo
User🐘 En PHP podemos convertir las cadena de caracteres en mayúsculas y minúsculas.
$text = "ForMato"; echo strtolower($text); echo strtoupper($text);
Aldo Miguel Ortiz Parodi
4. Formato de Datos:
Nosotros podemos: Alterar, reemplazar o modificar el el texto para tratarlo como dato.
Algunas funciones revisadas en clase:
strtolower podemos convertir una cadena de texto a minúscula.strtoupper podemos convertir una cadena de texto a mayúscula.ucfirst haces que el primer caracter de una cadena sea mayúscula.lcfirst haces que el primer caracter de una cadena sea minúscula.str_replace(" ", "-", $text);podemos reemplazar uno o varios caracteres por uno o varios caracteres dentro de un string.str_pad($code, 8, "#", STR_PAD_LEFT); lo que hacemos es que al contenido de esa variable, hasta que lleguemos a 8 caracteres, llenar el espacio que le falte para llegar con un cierto caracter, y tiene un modificador para poner ese relleno comenzando a la izquierda.strip_tags($text); podemos quitar todos los tags html o de otro lenguaje que tengan <h2> (por ejemplo).mb_strtoupper($text);Comparto el código de la clase:
<?php //Alterar $text = "PHP es UN LENGUAJE, año 2020, programación"; //echo strtolower($text); //echo strtoupper($text); //echo ucfirst($text); //echo lcfirst($text); //Reemplazar $slug = str_replace(" ", "-", $text); //echo strtolower($slug); //Modificación $code = 39; //echo str_pad($code, 8, "#", STR_PAD_LEFT); //echo strip_tags($text); //echo strtoupper($text); //monobyte echo mb_strtoupper($text); //multibyte
Joalin Pineda
Formato de Datos
Podemos darle formato a los datos para que tengan una mejor presentación, hay diferentes operaciones que podemos realizar con los datos.
Alterar
$text = "PHP es un LENGUAje";
Podemos cambiar el texto a mayúsculas con: strtoupper($text);
o a minúscula con: strtoupper($text);
Ademas, también podemos cambiar solo la primera letra (capitalizar)
a Mayúscula con : ucfirst($text);
y a minúscula con : lcfirst($text);
Reemplazar
Podemos reemplazar caractéres por otros, un ejemplo muy común son los slugs, reemplazamos por ejemplo los ' '(espacios), por '-' (un guion), con la función str_replace().
$slug = str_replace(' ', '-', $text);
recibe tres parámetros: (caracter-a-reemplazar, caracter-por-el-que-reemplazaremos, variable)
Tambien nos permite reemplazar palabras completas, por ejemplo PHP por JavaScript
$replacejs = str_replace('PHP', 'JavaScript', $text);
Modificación
Podemos modificar los datos agregando algunos caractéres para que tenga un tamaño especifico (muy util en facturas), esto a travez de la función str_pad(). Recibe 3 argumentos: (variavle, tamano-que-queremos, 'caracter-de-relleno');.
$code = 39;
echo str_pad($code, 8, '#', STR_PAD_BOTH);
39######
Por defecto el caracter lo muestra del lado derecho, pero podemos agregar un cuarto argumento para indicarle donde mostrar los caracteres, puede ser: STR_PAD_BOTH, STR_PAD_LEFT.
echo str_pad($code, 8, '#', STR_PAD_BOTH);
Otra función es poder quitar las etiquetas de HTML, esto es muy util para cuando requerimos almacenar los datos en una base de datos, los cuales no deberian llevar etiquetas, esto lo logramos con strip_tag().
$tags = "<h2>Podemos quitar las etiquetas de html con strip_tags</h2>";
echo $tags;
echo strip_tags($tags);
Podemos quitar las etiquetas de html con strip_tags
Podemos quitar las etiquetas de html con strip_tag
Una ultima función es la de convertir datos de monobyte a multibyte.
elementos monobyte = no muestra caractéres como acentos o virguililla
multibyte = si muestra caracteres especiales
echo strtoupper($year_data);
AñO 2020, PROGRAMACIóN
para convertir a multibyte basta con colocar mb_antes-de-la-funcion
echo mb_strtoupper($year_data);
Jimmy Buriticá Londoño
Hasta ahora me ha gustado mucho este curso.
José Alberto Ramírez Quiroz
2022 en php 8.1 creo mb_strtoupper ya no funciona :(
<?php $text_dos = "PHP es UN LENGUAJE, año 2020, programación"; //Al colocar mb_nombrefuncion con esto formateamos correctamente. echo mb_strtoupper($text_dos);//multibyte
#Alguien mas ?
Jesús René Fernández Serrano
Lo solucione con el siguiente enlace
Call to undefined function mb_strtoupper()
José Roberto Arroyo García
Company_adminHaciendo uso de las clases anteriores, se me ocurrió imprimir un folio de la siguiente forma:
function getNewId() { return 'ticket'; } $num = 1; $ticket = str_pad($num, 8, '0', STR_PAD_LEFT); echo "TI-{${getNewId()}}"; #Resultado: TI-00000001
Abraham José Alvarenga
les funciona el metodo mb_strtoupper($text);?
Heidenber Palacio Garzón
Enséñanos tu código...
José Alberto Ramírez Quiroz
Lograste resoverlo a mi tampo me funciono :(
Sergio Atanacio
Si uso Ckeditor. Entonces como hago para guardar el formato, y no guardar las etiquetas en la base de datos?
Kenneth Angulo L
Puedes usar la combinacion de varias funciones:
strip_tags($ckeditorOutput, '<p><a>');
Con la anterior retiras caracteres de html que no quieres, y pasas un array de los que quieres pasar, ejemplo p y a. Esta lista puede ser larga y tediosa de armar, pero sirve.
Y ya cuando tengas depurado, pasas el resultado por htmlspecialchars(). asi:
htmlspecialchars(strip_tags($ckeditorOutput, '<p><a>'));
y eso seria lo que almacenas en DB.
la funcion para revertir la ultima codificacion es:
htmlspecialchars_decode
Rodrigo Harriague
Minuto 7:28 No entendí que es lo que se debe hacer para proteger el sistema de cualquier ataque, ¿Alguno pude explicarlo por favor?
Miguel Angel Vera Ramos
Cuando desarrollas es normal que tengas un input donde el usuario pueda ingresar datos al sistema, entonces para evitar que el usuario vaya a ingresar algún tag de HTML ( <h1>Hola Soy hacker y ya eche a perder tu sistema</h1>) con la función strip_tags() eliminarias los tags de HTML y solo dejaria el mensaje, porque si no los eliminas despues si intentas devolver lo que el usuario ingreso vas a tener algunos conflictos por los tags que tienes de HTML.
Alexander Reyes
Reinaldo Mendoza
MUY IMPORTANTE evitar que llegue código a la DB por que nos exponemos a un ataque de SQL injection
AVILA MEZA JUAN CARLOS
strtolower — Convierte un string a minúsculas strtoupper — Convierte un string a mayúsculas ucfirst — Convierte el primer caracter de una cadena a mayúsculas ucwords — Convierte a mayúsculas el primer caracter de cada palabra de una cadena lcfirst — Pasa a minúscula el primer caracter de un string str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo str_pad — Rellena un string hasta una longitud determinada con otro string strip_tags — Retira las etiquetas HTML y PHP de un string
Cristobal Nyram
La progamación es facíl más si sabes íngles, es aun más sencillo.
strip---------tira o quita
pad---------almuadilla
Mis apuntes
#Alterar $text = "<h1>PHP es UN LENGUAJE</h1>"; echo $text; //Hacer un texto en minuscula echo "<pre>"; echo strtolower($text); //Hacer un texto en Mayuscula echo "<pre>"; echo strtoupper($text); //Convierte el primer elemento en minuscula echo "<pre>"; echo lcfirst($text); //Convierte el primer elemento en Mayuscula echo "<pre>"; echo ucfirst($text); echo "<br><br>"; #Reemplazar //reemplazamos cada espacio vacio por un guión(-) $slug = str_replace(' ', '-', $text); echo $slug; echo strtolower($slug); echo "<br><br>"; #Modificación //Si tenemos una factura se imprima de la siguiente forma. $code = 39; //Vamos a tener 8 espacio con 8 carácteres echo "<br>"; echo str_pad($code, 8, '#'); echo "<br>"; //Ambos lados, izquierda y derecha echo str_pad($code, 8, '#', STR_PAD_BOTH); echo "<br>"; echo str_pad($code, 8, '#', STR_PAD_LEFT); echo "<br>"; echo str_pad($code, 8, '#', STR_PAD_RIGHT); echo "<br><br>"; //En nuestra base de datos no se deben de guardar etiquetas. //Con strip_tags eliminamos cualquier etiqueta html que contega el dato echo strip_tags($text); echo "<br><br>"; #ELEMENTOS MONOBYTES Y MULTIBYTES. $text_uno = "PHP es UN LENGUAJE, año 2020, programación"; $text_dos = "PHP es UN LENGUAJE, año 2020, programación"; echo strtoupper($text_uno);//monobye echo "<br>"; //Al colocar mb_nombrefuncion con esto formateamos correctamente. echo mb_strtoupper($text_dos);//multibyte
Dejo algunas funciones adicionales referidas al formateo de datos que me parecen importantes:
preg-match
La función preg-match busca un carácter o cadena de caracteres en otra cadena. Por ejemplo, para validar que en un campo donde el usuario debía escribir una dirección de email, haya una arroba.
ARGUMENTOS OBLIGATORIOS: carácter o cadena que deseamos buscar (@), objeto donde se quiere buscar ese carácter ($email).
<?php /* Suponemos que venimos de un formulario donde el usuario ya completó su dirección en la variable $email */ if (preg_match ("/@/", $email)){ print ("Email correcto"); } else { print ("A su email le falta la arroba!"); } ?>
Si en cambio, queremos buscar en vez de un símbolo una letra o cadena de texto, podemos agregar un parámetro extra para que realice la misma tarea, pero ignorando la diferencia entre mayúsculas y minúsculas (por ejemplo, para que considere que "a" y "A" son iguales): i
<?php /* Suponemos que el usuario escribió un Comentario en la página anterior, y se almacenó en la variable $comentario */ $insulto = "tonto"; if (preg_match ("/$insulto/i", $comentario)){ print ("No se permite esa palabra. Escriba su comentario con mayor cortesía"); } else { print ("Gracias por su comentario"); } ?>
Convertir saltos de linea a breaks html
nl2br
La función nl2br convierte los “Enters”( \n) que un usuario realiza en un campo multilínea (textarea), por ejemplo en tags <br> de HTML con el objetivo de respetar los “puntos aparte” tal cual los ingreso el usuario.
ARGUMENTOS OBLIGATORIOS: cadena a convertir ($comentario).
<?php $formateado = nl2br($comentario); print ($formateado); ?>
Contar la cantidad de letras de un string
strlen
La función strlen cuenta la cantidad de caracteres que contiene una cadena.
ARGUMENTOS OBLIGATORIOS: cadena a contar ($texto).
<?php $cuantas_letras = strlen($texto); ?>
Otras funciones
htmlspecialchars
convierte los tags html de una cadena en sus entidades.
ARGUMENTO OBLIGATORIO: Cadena a la cual se le quieren convertir los tags html en entidades ($texto)
htmlspecialchars ($texto);
parse_str
baja automáticamente las variables enviadas a través del método GET a variables locales.
ARGUMENTOS OBLIGATORIOS: Cadena a la cual se le quieren bajar automáticamente las variables GET ($url).
SERVER[‘QUERY_STRING’] extrae todo lo que venga después del signo “?” en el comando GET.
$url = SERVER[‘QUERY_STRING’]; parce_str($url);
number_format
Formatear un número con los millares agrupados.
ARGUMENTOS OBLIGATORIOS: Numero a formatear ($dato1):
Si se agrega este solo parámetro el numero será formateado sin decimales, pero con una coma (",") entre cada grupo de millares.
$conpuntos = number_format($dato1);
ARGUMENTOS OPCIONALES:
Cantidad de decimales : $dato sera formateado con tantos decimales como se hayan definido en decimals colocando un punto (".") delante, y una coma (",") entre cada grupo de millares.
$conpuntos = number_format($dato1, 0, '', '.');
Separador de decimales y separador de millares: $datos sera formateado con tantos decimales como hayamos definido en decimals, dec_point sustituirá al punto (".") como seperador de los decimales y el separador por defecto de los millares, la coma (","), será sustituida por thousands_sep.
$conpuntos = number_format($dato1, 0, '', '.');
Encontrar la posición de algo
strpos
La función strpos nos indica la posición de un determinado carácter o cadena dentro de otra cadena.
ARGUMENTOS OBLIGATORIOS: la cadena donde buscar, y el carácter o caracteres de los que se quiere saber la posición.
ARGUMENTOS OPCIONALES: a partir de cuál carácter de la cadena empezar la búsqueda; de todos modos, el resultado lo dará contando desde la primera posición (cero) de la cadena.
<?php $cadena = "América Latina unida"; $abuscar = "unida"; $posicion = strpos($cadena,$abuscar); print($posicion); // Imprimirá 15 -comienza desde cero-. ?>
USO PRÁCTICO: Buscador de caracteres especiales
<?php $texto = ”Hoy es un día soleado”; $existe = strpos(”ì”); if ($existe===false) { echo “No existe”; } else { echo “Existe”; } ?>
strrpos
Nos indica la última posición de un determinado carácter o cadena dentro de otra cadena.
stripos
Nos indica la posición de un determinado carácter o cadena dentro de otra cadena pero con la propiedad insensecase (sin importar mayúsculas o minúsculas).
strstr
Devuelve como resultado toda la cadena de texto hasta su final a partir del carácter especificado.
ARGUMENTOS OBLIGATORIOS: cadena original ($email), carácter a partir del cual se quiere inicializar la cadena (@).
<?php $email = "hernan@saberweb.com.ar"; $caracter = "@"; $dominio = strstr($email,$caracter); print($dominio); // Imprimirá "@saberweb.com.ar" ?>
strtr
realiza reemplazos en una cadena a partir del especificado en una tabla de reemplazos.
ARGUMENTOS OBLIGATORIOS: Cadena a la cual se le quieren realizar reemplazos ($texto), tabla con los datos de los reemplazos ($tablareemplazo).
$tablareemplazo = array(“<b>”=>”<strong>”,”</b>”=>”</strong>”); strtr($texto,$tablareemplazo);
ucwords
Convierte en mayúscula la primera letra de cada palabra de una cadena.
ARGUMENTO OBLIGATORIO: Cadena a la cual se le quiere modificar la primera letra de cada palabra ($texto).
$text = "php es un lenguaje"; echo ucwords($text); // Php Es Un Lenguaje
Cómo dar formato a los datos
Posiblemente nos encontremos en situaciones dónde queremos guardar los datos en la DB con un formato, pero a la hora de presentarlos necesitaremos que se vean diferentes, para esto vamos a alterar, reemplazar o modificar los datos.
<?php // Alterar a minúscula $text1 = "PHP es UN LENGUAJE"; echo strtolower($text1); // Alterar a mayúscula $text2 = "PHP es UN LENGUAJE"; echo strtoupper($text2); // Alterar a mayúscula solo el primer carácter $text3 = "PHP es UN LENGUAJE"; $textLower = strtolower($text3); echo ucfirst($textLower); // Alterar a minúscula solo el primer carácter $text4 = "PHP es UN LENGUAJE"; $textUpper = strtoupper($text4); echo lcfirst($textUpper); // Reemplazar $textLower2 = strtolower($text1); $slug = str_replace(' ','-', $textLower2); echo $slug; $slug2 = str_replace('php','ruby', $textLower2); echo $slug2; // Modificación $code = 39; // colocar hacia STR_PAD_BOTH, STR_PAD_LEFT & STR_PAD_RIGHT echo str_pad($code, 8, '#', STR_PAD_BOTH); // Es una mala práctiva guardar código html en nuestra DB $textHTML = "<h3>PHP es UN LENGUAJE</h3>"; echo $textHTML; // Para quitarlas utilizamos strip_tags() echo strip_tags($textHTML);
Existen elementos monobyte y multibyte. Para utilizar la alternativa multibyte ponemos mb separado por un underscore y seguido el nombre la función.
$phrase = "Php es un lenguaje bueno para comunicarse con las maquínas"; echo strtolower($phrase); //monobyte echo mb_strtolower($phrase); //multiobyte