Filtro de palabras en PHP
Abril 29, 2008 – 3:05 pm | por oso96_2000
A raíz de un tema que vi en un foro, se me ocurrío hacer una pequeña función en PHP para censurar ciertas palabras en un texto. En realidad es bastante simple lo que hace, y gracias al poder de las expresiones regulares tiene muchas posibilidades. Aqui dejo la función y después paso a comentarla.
<?php
function filtrado($texto, $reemplazo = false) {
$filtradas = 'p?uta, mierda, pendej[ao]s?';
$f = explode(',', $filtradas);
$f = array_map('trim', $f);
$filtro = implode('|', $f);
return ($reemplazo) ? preg_replace("#$filtro#i", $reemplazo, $texto) : preg_match("#$filtro#i", $texto) ;
}
?>
Ahora la explicación:
- Línea 3: Aquí se definen las palabras a buscar separadas por coma. Se puede hacer uso de comodines. Por ejemplo, “p?uta” censura “puta” y “uta“; “pendej[ao]s?” censura “pendeja“, “pendejo“, “pendejos“, “pendejas“.
- Línea 5: Dividimos las palabras en un arreglo.
- Línea 6: Limpiamos los posibles espacios en blanco alrededor de la palabra.
- Línea 7: Las unimos con el caracter |.
- Línea 9: El segundo parametro es opcional. Si se pone, se retorna la cadena del primer parametro con las palabras prohibidas reemplazadas por el texto que se haya pasado como segundo parametro. Si no se especifica el segundo parametro, entonces la funcion retorna verdadero en caso de que se haya encontrado alguna palabra en el texto o falso en caso de que la cadena este limpia.



Un Comentario to “Filtro de palabras en PHP”
Muy bueno y sencillo, agregado al del.icio.us
Saludos