Eliminar html con php

#codigo{
background:#999;
border:solid 5px #DADADA;
border-radius:5px;
padding:10px;
color:#FFF;
}

Eliminar html con php

Hola amigos en la entrada anterior hablamos de eliminar html con php para poder enviar código html a la base de datos, En ese caso elimamos los html con php de una manera muy sencilla y sin complicaciones.

Ahora lo que vamos a ver aquí es como eliminar html con php para que todos lo podamos entender de una manera fácil y rápida, para ello nos vamos a centrar en la forma más utilizada en la programación de sitios web profesionales por su versatilidad y su seguridad.

Propiedades php para eliminar html

Para eliminar html con php vamos a utilizar básicamente 5 propiedades de php 2 para convertir el código en entidades, una para eliminar las etiquetas html y presentar solo el string y 2 para reemplazar dicho código para permitir determinadas etiquetas ya sean h1,h2 o cualquier otra etiqueta que queramos permitir.



  • Htmlentities
  • Htmlspecialchars
  • strinp_tags
  • str_replace
  • preg_replace

Filtrar etiquetas con htmlentities

para utilizar esta propiedad tenemos que pasarle la cadena a la cual queremos que convierta todos los caracteres de html, esta propiedad es muy parecida a htmlspecialchars se usa de la siguiente manera .

<?php
//conviertiendo html en caracteres
$cadena=”Aprendiendo cómo eliminar etiquetas html con php tales como <html><script> o <?php ?>”;
$convertida=htmlentities($cadena);
echo $convertida.'<br />’;
?>

El resultado seria la siguinte linea de texto

Aprendiendo cómo eliminar etiquetas html con php tales como <html><script> o <?php ?>

Lo que hace esta propiedad es que convierte todas las etiquetas html a caracteres o identidades html que no se pueden ejecutar si no imprimirse, seria algo asi.

Aprendiendo cómo eliminar etiquetas html con php tales como &lt;html&gt;&lt;script&gt; o &lt;?php ?&gt;  

Filtrar etiquetas html con htmlspecialchars

Como te decía antes esta propiedad es idéntica a htmlentities solo que combierte todos los caracteres raroz como acentos, comillas,la eñe (ñ) en fin esta propiedad es mucho mas segurira y tiene un potencial mas fuerte que htmlentities Asi como los caracteres html como la de arriba veamos un ejemplo con el mismo codigo de arriba pero cambiando la propiedad a htmlspecialchars

<?php

//conviertiendo html en caracteres
$cadena=”Aprendiendo cómo eliminar etiquetas html con php tales como <html><script> o <?php ?>”;
$convertida=htmlspecialchars($cadena);
echo $convertida.'<br />’;
?>

El resultado de este ejemplo seria el siguiente

Aprendiendo cómo eliminar etiquetas html con php tales como <html><script> o <?php ?>

Si te fija esta propiedad hace lo mismo que htmlentities solo que esta tambien convierte los caracteres raros en entidades html fijate en la parabra Cómo que imprimio unos signos raros. Por eso estan las 2 propiedades con una minima cosa de diferencias aunque las 2 con una gran potencialiad de seguridad para implementarla en nuestro sitio web.

Eliminar etiquetas con php

Para eliminar etiquetas html es necesario utilizar una propiedad distinta la cual nos permite eliminar definitivamente el código html que a puesto el usuario y solo presenta el string que esta dentro de dichas etiquetas. Esta opcion nos puede serbir mucho en caso que tengamos una web donde no queremos que el usuario envide ningun tipo de etiqueta HTML para que no altere el diseño del sitio web. Esta etiqueta funcina de la siguiente manera, vamos a tomar el mismo ejemplo de arriba y solo vamos a cambiarle la propidad a strip_tags();.

<?php
//conviertiendo html en caracteres
$cadena=”Aprendiendo cómo eliminar etiquetas html con php tales como <html><script> o <?php ?>”;
$convertida=strip_tags($cadena);
echo $convertida.'<br />’;
?>

Lo que imprimiria esta linea de codigo es lo siguiente.

Aprendiendo cómo eliminar etiquetas html con php tales como o

Como te podras dado cuenta en esta ocacion strip_tags(); ha eliminado las etiquetas html y solo presento el string.

Ahora bien cuando lo que queremos es controlar el código para que se imprima tal cual el usuario lo envie y permitirle al usuario usar solo etiquetas casuales es necesario recuerir a otras propiedades mucho más avanzada y que nos brinden una mayor seguirdad.

Y para que nos puede servir esto de controlar el código? Simple si un usuario curioso quiere enviar un script a tu base de datos y en el script re direcciona tu web a otra, esto podría ser un problema grabe, por ejemplo imagina que no tengas controlada las entradas de código html a tu base de datos y que te envíen el siguiente escript.

<script>location=’http://www.comocrearmiweb.com’; </script>

Con esa simple linea de codigo redireccionarian a tus usuarios a otro sitio web sin que se dieran cuenta, eso es en el mejor de los casos por eso es preciso controlar todos estos puntos.

Ahora bien si aplica las propiedades antes mencionada en cada una de las cadenas que contendrán los datos que va a enviar el usuario este problema estaría resuelto.

Si pero y si quiero publicar algo con algunas etiquetas html?

Pues sencillo para eso son las otras 2 propiedades str_replace y preg_replace, con estas 2 propiedades podemos filtrar cualquier etiqueta o cualquier string y cambiarlo por el que queramos.

Estas 2 propiedades son muy parecida y por lo tanto se ejecutan de la misma manera para ello creamos una matriz y en la primera metriz le indicamos los términos que queremos que busque, Luego en la segunda matriz le indicamos por cual etiqueta o palabra queremos que reemplace la que buscamos arriba en caso de que la encuentre.

La diferencia al momento de declararla es que preg_replace necesita que le pongamos la / a todas las propiedades a buscar y str_replace no la necesita pero después es el mismo funcionamiento.

Para aplicar el remplazo primero tenemos que crear la variable donde queremos que se guarde la nueva cadena con los datos filtrados, luego le indicamos que palabras o etiquetas tiene que buscar , después le indicamos por cual la va a reemplazar y por último es que le vamos a indicar en qué cadena es que va hacer todo eso.

Ahora veamos un ejemplo de cada caso supongamos que tenemos una variable llamada $cadena que almacena un texto y vamos a reemplazar o sustituir una palabra de este texto por otra veamos.

str_replace

<?php
//conviertiendo html en caracteres
$cadena=”Filtrando etiquetas html usando php”;
$busqueda=array(
   “etiquetas”,
   “html”,
   );
$reemplazar=array(
   “codigo”,
   “php”
   );
$convertida=str_replace($busqueda,$reemplazar,$cadena);
echo $cadena.'<br />’;
echo $convertida.'<br />’;
?>

Si te fijas en la cadena origintal del texto y en la que hemos imprimido despues vera que las propiedades que le indicamos a la matriz que busque es etiquetasy html y en la segunda linea sustituimos esos resultados por lo que le indicamos en la segunda matriz que son codigo y php.

El resultado en pantalla seria el siguiente.

Filtrando etiquetas html usando php
Filtrando codigo php usando php

Lo mismo se hace con preg_replace solo que en este caso vamos a tener que escapar los caracteres que queremos buscar, seria de la siguiente manera.

<?php
//conviertiendo html en caracteres
$cadena=”Filtrando etiquetas html usando php”;
$busqueda=array(
   “/etiquetas/”,
   “/html/”,
   );
$reemplazar=array(
   “codigo”,
   “php”
   );
$convertida=preg_replace($busqueda,$reemplazar,$cadena);
echo $cadena.'<br />’;
echo $convertida.'<br />’;
?>

Y el resultado seria exacamente el mismo

Filtrando etiquetas html usando php
Filtrando codigo php usando php

Ahora bien la fortaleza de la seguridad está en ajuntar tanto las propiedades para convertir el código HTML en caracteres como en la que nos permite sustituir parte de dicho texto o cadena, para eso solo hay que convertir primero los caracteres y después sustituirlo con cualquiera de las propiedades de remplazar.

Bueno espero y les haya servido de algo este mini-tutorial sobre todos para lo que quieren implementar más seguridad en su sitios web ya que es una de las cosas que tenemos que pensar antes de todo al momento de crear un sitio web.

Espero sus comentarios y hasta un próximo mini-tutorial…

Comments

  1. By Daniel

Deja un comentario

Tu dirección de correo electrónico no será publicada.