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";echostrtolower($text);// Salida: php es un lenguaje// Transformar a mayúsculasechostrtoupper($text);// Salida: PHP ES UN LENGUAJE// Capitalizar solo la primera letraechoucfirst(strtolower($text));// Salida: Php es un lenguaje// Colocar la primera letra de cada palabra en mayúsculaechoucwords(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";echostr_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:
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>";echostrip_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";echomb_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!
#Alterar$text ="<h1>PHP es UN LENGUAJE</h1>";echo $text;//Hacer un texto en minusculaecho "<pre>";echo strtolower($text);//Hacer un texto en Mayusculaecho "<pre>";echo strtoupper($text);//Convierte el primer elemento en minusculaecho "<pre>";echo lcfirst($text);//Convierte el primer elemento en Mayusculaecho "<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ácteresecho "<br>";echo str_pad($code,8,'#');echo "<br>";//Ambos lados, izquierda y derechaecho 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 datoecho strip_tags($text);echo "<br><br>";#ELEMENTOSMONOBYTESYMULTIBYTES.$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);//monobyeecho "<br>";//Al colocar mb_nombrefuncion con esto formateamos correctamente.echo mb_strtoupper($text_dos);//multibyte
Gracias por los apuntes
Gracias Danny por el valioso apunte.
Estas y más funciones las pueden encontrar en el siguiente enlace
Esta página es la biblia del programador de PHP, cualquier función que necesiten buscar o cualquier cosa la encotnrarán ahí :D
gracias
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).
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 (@).
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";echostrtolower($text1);// Alterar a mayúscula$text2="PHP es UN LENGUAJE";echostrtoupper($text2);// Alterar a mayúscula solo el primer carácter$text3="PHP es UN LENGUAJE";$textLower=strtolower($text3);echoucfirst($textLower);// Alterar a minúscula solo el primer carácter$text4="PHP es UN LENGUAJE";$textUpper=strtoupper($text4);echolcfirst($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_RIGHTechostr_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()echostrip_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";echostrtolower($phrase);//monobyteechomb_strtolower($phrase);//multiobyte
Los mejores apuntes ;)
Como buenos desarrolladores debemos tener control absoluto del flujo de datos de la aplicacion
🐘 En PHP podemos convertir las cadena de caracteres en mayúsculas y minúsculas.
Nosotros podemos: Alterar, reemplazar o modificar el el texto para tratarlo como dato.
Algunas funciones revisadas en clase:
Con strtolower podemos convertir una cadena de texto a minúscula.
Con strtoupper podemos convertir una cadena de texto a mayúscula.
Con ucfirst haces que el primer caracter de una cadena sea mayúscula.
Con lcfirst haces que el primer caracter de una cadena sea minúscula.
Con str_replace(" ", "-", $text);podemos reemplazar uno o varios caracteres por uno o varios caracteres dentro de un string.
Con 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.
Con strip_tags($text); podemos quitar todos los tags html o de otro lenguaje que tengan <h2> (por ejemplo).
Podemos anpononer mb_ para decir que el texto a convertir es mutibyte, permitiendo que caracteres especiales como la ñ o tildes se puedan convertir de manera correcta con 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); //monobyteechomb_strtoupper($text);//multibyte
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
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);
Hasta ahora me ha gustado mucho este curso.
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 ?
Lo solucione con el siguiente enlace
Call to undefined function mb_strtoupper()
Haciendo uso de las clases anteriores, se me ocurrió imprimir un folio de la siguiente forma:
Si uso Ckeditor. Entonces como hago para guardar el formato, y no guardar las etiquetas en la base de datos?
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:
la funcion para revertir la ultima codificacion es:
htmlspecialchars_decode
Minuto 7:28 No entendí que es lo que se debe hacer para proteger el sistema de cualquier ataque,
¿Alguno pude explicarlo por favor?
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.
MUY IMPORTANTE evitar que llegue código a la DB por que nos exponemos a un ataque de SQL injection
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
La progamación es facíl más si sabes íngles, es aun más sencillo.