Banear palabras con PHP.
Resumen.
Una de las cosas que más frustra a los administradores de sitios Web es el uso por parte de los usuarios de palabras malsonantes. Banear esas palabras es muy sencillo con el uso de la función que vamos a presentar en este nuevo artículo. Es ideal para la publicación de comentarios, en foros o cualquier otro sitio que se te ocurra.Artículo.
En ArtesaniaWeb.ES estamos encantados de ayudar a los programadores ha que su vida sea mas fácil, por eso tratamos de presentar los códigos que son casi imprescindibles en cualquier sitio Web. Y el que vamos a presentar ahora es inexcusable, uno de estos códigos que te ahorran muchas horas de revisiones.
La función es la siguiente:
Mediante el bucle foreach lo que hacemos es buscar cada una de esas palabras en el texto, lo que hacemos mediante la función stripos() que no diferencia entre mayúsculas y minúsculas.
En caso de alguna de esas palabras aparezca, mediante la función str_ireplace(), que tampoco diferencia entre mayúsculas y minúsculas, la sustituimos, en este caso por “***”.
Hasta aquí todo perfecto, ¿verdad? Pues no. Esta función tiene un problema, y es que precisa una constante actualización de las palabras a banear, lo que hacerlo sobre el mismo código, puede resultar un tanto trabajoso, además de peligroso.
Lo ideal seria guardar esta palabras en una base de datos, y extraer la columna donde se guardan introduciéndola en un array, con esto, gestionaremos de una manera muy fácil y cómoda las palabras malsonantes, ofensivas, direcciones de e-mail, etc…
La función es la siguiente:
La función es muy sencilla, tenemos un texto y un conjunto de palabras que no queremos se aparezcan en ese texto guardadas en un array.<?php // Eliminamos palabras prohibidas y las reemplazamos por *** function BaneaPalabra($texto, $baneadas, $bnd){ foreach($baneadas as $key => $new_texto){ if(stripos($texto,$baneadas[$key]) <> FALSE){ $texto = str_ireplace($baneadas[$key],$bnd,$texto); } } return $texto; } // Aplicamos la funcion $texto = 'Programar en PHP es muy divertido, aunque algunos lo consideren frustrante, deprimente y complicado. En fin, hay demasiadas opiniones tontas para escuchar cada día. mi-mail@Gmail.COM.'; $baneadas = array('Tontas','deprimente','frustrante', '@gmail.com'); $bnd = '***'; $texto_ok = BaneaPalabra($texto, $baneadas, $bnd); echo $texto_ok; ?>
Mediante el bucle foreach lo que hacemos es buscar cada una de esas palabras en el texto, lo que hacemos mediante la función stripos() que no diferencia entre mayúsculas y minúsculas.
En caso de alguna de esas palabras aparezca, mediante la función str_ireplace(), que tampoco diferencia entre mayúsculas y minúsculas, la sustituimos, en este caso por “***”.
Hasta aquí todo perfecto, ¿verdad? Pues no. Esta función tiene un problema, y es que precisa una constante actualización de las palabras a banear, lo que hacerlo sobre el mismo código, puede resultar un tanto trabajoso, además de peligroso.
Lo ideal seria guardar esta palabras en una base de datos, y extraer la columna donde se guardan introduciéndola en un array, con esto, gestionaremos de una manera muy fácil y cómoda las palabras malsonantes, ofensivas, direcciones de e-mail, etc…
Tags: Palabras || banea || malsonante || stripos || str_ireplace