Filtro de palabras en PHP

A raíz de un tema que vi en un foro, se me ocurrió 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.

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 parámetro es opcional. Si se pone, se retorna la cadena del primer parámetro con las palabras prohibidas reemplazadas por el texto que se haya pasado como segundo parámetro. Si no se especifica el segundo parámetro, entonces la función retorna verdadero en caso de que se haya encontrado alguna palabra en el texto o falso en caso de que la cadena este limpia.

Cosas del mIRC Scripting

Mas que nada como recordatorio:

  1. Acciones a relizar cuando escribimos algo.
  2. Si el texto que escribimos comienza con + o -, seguido de una letra que sea ‘qaohvmb’, le damos el status correspondiente al nick. Ej: +o oso96_2000
  3. Realiza un kick al azar de entre los usuarios del canal (uno mismo incluido).

Simplificar código

Me encanta programar, es algo que me divierte, pero ayer me di cuenta que me gusta mas cuando aprendo algo nuevo y cuando es una especie de reto lo que debo hacer. Ayer estaba como siempre en el mIRC, probando unas cosas en Scripting, tenia esto:

Lo que hace es que al escribir yo mismo +o nick, le daría status de operador al nick mencionado. Pero entonces, despues de una pequeña charla, resulto que un amigo tenia en una sola linea lo necesario para hacer lo que yo hacia.. y la linea tenia 100 caracteres aproximadamente.. y como no quiso decirme como lo tenia, fue mi turno de ponerme a investigar y tratar de realizarla en menos caracteres.

Después de un rato pensando e intentando cosas, deje mi función en aproximadamente 120 caracteres, lo que aun hacia que perdiera el pequeño reto, ya que la de el tenia aun menos.. como parte de eso, habíamos quedado que el que tuviera mas caracteres mostraría su código, así que me toco hacerlo.. cuando lo vio, dijo que podía hacer su código aun mas corto.. y después de un rato dijo que ahora eran solo alrededor de 85 caracteres.. entonces yo seguí pensando como hacerlo, pero en lo mas que pude dejarlo fueron 90 caracteres u_u..

Al fin, me mostró como tenia su código, eran ya como 70-80 caracteres.. y de ahí, discutiendo sobre algunas cosas fuimos reduciendo el código hasta que quedo en esto:

¡61 caracteres! Cumple exactamente la misma función (y hasta mejor) que el código que tenia al principio, requiere un poco mas de comprensión, pero se simplifica mucho lo que se hace. Francamente, me encanto hacer eso.. me distraje de un ensayo que tenia que hacer (que termine ya muy noche, por lo que tengo sueño u-u) pero valió la pena, y aun creemos que podemos disminuirlo un poco mas ese código..

En fin, solo quería escribir esto xD.. ya que fue algo que me pareció por demás interesante, y chance a alguien le llegue a servir algún día o.O… y si puedes disminuir el código, déjalo en los comentarios xD

Edito: Mmh.. nueva linea.. 2 caracteres mas pero la expresión regular esta mejorada para corregir algunos problemas al escribir ciertas cosas =P