Foros del Web » Programando para Internet » PHP »

Buscar palabras prohibidas en texto

Estas en el tema de Buscar palabras prohibidas en texto en el foro de PHP en Foros del Web. Hola amig@s, resulta que estoy buscando una funcion la cual me diga si existe una palabra prohibida dentro de un texto. He estado mirando en ...
  #1 (permalink)  
Antiguo 09/07/2013, 06:08
tukymix
Invitado
 
Mensajes: n/a
Puntos:
Buscar palabras prohibidas en texto

Hola amig@s, resulta que estoy buscando una funcion la cual me diga si existe una palabra prohibida dentro de un texto. He estado mirando en internet y las que he visto no me an convencido mucho. Mira la funcion solo quiero que me devuelva true si contiene una palabra prohibida o false si no lleva ninguna. Yo tengo el siguiente codigo pero nose si esta bien:

function Palabrotas($mensaje){
$palabrotas=array('palabrota1','palabrota2','palab rota3');

foreach($palabrotas as $palabrota){
if(!in_array($palabrota,$palabrotas)){ return true; }
}
}

por lo que imagino creo que el foreach va palabra por palabra lo cual dentro en el if si pongo un else{ return false; } si la primera palabra del texto no es palabrota pues me devolvera false y no quiero eso, entonces, a ve rsi me podeis ayudar porfavor y hacer la funcion que lea toda la frase cualsea y detecte si hay palabrotas o no y si hay que me mande true y si no hay que me mande false.
Un Saludo y gracias por adelantado a tod@s.
By Tukymix
  #2 (permalink)  
Antiguo 09/07/2013, 06:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Buscar palabras prohibidas en texto

Código PHP:
Ver original
  1. function Palabrotas($mensaje){
  2.        $HayPalabrotas=false;
  3.        $arrMensaje=explode (' ',$mensaje);
  4.        $palabrotas=array('palabrota1','palabrota2','palab rota3');
  5.        foreach($palabrotas as $palabrota){
  6.            if(in_array($palabrota,$arrMensaje)){
  7.               $HayPalabrotas=true;
  8.               break;
  9.           }
  10.       }
  11.    return $HayPalabrotas;
  12. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 10/07/2013 a las 01:27
  #3 (permalink)  
Antiguo 09/07/2013, 07:54
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Buscar palabras prohibidas en texto

Yo guardaria las palabras en algun archivo o base de datos pues no puedes tener una funcion gigantesca con un array dentro, en fin... la funcion quedaria asi:

Código PHP:
$palabrotas = array ('mamasota','ricura','mmm');
$texto "En este barrio hay una mamasota esquisita, es mmm una ricura deliciosa";

var_dump(palabrotas($texto,$palabrotas));

function 
palabrotas($mensaje,&$palabrotas){
       
$HayPalabrotas=false;
       
$arrMensaje=explode (' ',$mensaje);       
       foreach(
$palabrotas as $palabrota){
           if(
in_array($palabrota,$arrMensaje)){ 
              
$HayPalabrotas=true;
              break;
          }
      }
   return 
$HayPalabrotas;

Se puede hacer MUCHO mas facil con array_intersect()

Logicamente una solucion mejor serria contextualizar pues 'cojer' puede ser una palabra ofensiva en Argentina, para eso usaria redes neuronales con perceptrones simples alcanza.
__________________
Salu2!

Última edición por Italico76; 09/07/2013 a las 09:10
  #4 (permalink)  
Antiguo 09/07/2013, 09:12
tukymix
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscar palabras prohibidas en texto

¡ Muchisimas gracias a los 2 ! Ya lo tengo solucionado, gracias quimfv
  #5 (permalink)  
Antiguo 09/07/2013, 09:16
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Buscar palabras prohibidas en texto

Vale......pero se puede hacer mas simple sin FOREACH como decia mas arriba

Código PHP:
<?php

$palabrotas 
= array ('mamasota','ricura','mmm');
$texto "En este barrio hay una mamasota esquisita, es mmmmm una ricura deliciosa";

var_dump(hay_palabrotas($texto,$palabrotas));

function 
hay_palabrotas($mensaje,&$palabrotas){       
       
$palabras explode (' ',$mensaje);       
       
$intersec array_intersect($palabras,$palabrotas); 
   return (!empty(
$intersec));
}
__________________
Salu2!

Última edición por Italico76; 09/07/2013 a las 14:42

Etiquetas: palabras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:36.