Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Filtro BadWords

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483

    Filtro BadWords

    Ciao a tutti... qualkuno mi saprebbe dare qualke indicazione su come realizzare una funzione ke controlli il contenuto di una stringa...e se trova una parolaccia (contenuta in un array) me la sostituisce cn tanti asterischi quante sono le lettere.
    Io ho per ora provando a scrivere giu qualkosina basandomi su una funzione ke avevo scritto in ASP.. ma nn essendo espertissimo di PHP ho trovato qualke difficoltà nella traduzione... se puo' essere d'aiuto la funzione era questa:

    codice:
    <%
    Function badWords(sText)
      'alcune parole poco consone, potete aggiungerne quante ne volete
      words = Array("cretino","stupido","imbecille","porcapaletta")
      stringa = sText
     
      For k = LBound(words) To UBound(words)
        stringa = Replace(stringa, words(k), String(Len(words(k)),"*"))
      Next
     
      badWords = stringa
    End Function
    Qualkuno sa magari consigliarmi anke una soluzione un po' + "seria" ke magari invece da un array pesca le parole da database e invece di sostituirla completamente cn tanti asterisci la sostituisce cn un altra parola sempre ke va a pescare da un db.

    Tanto per farmi capire meglio faccio un esempio:

    se scrivo CASSO (ovviamente cn le ZZ invece delle SS )

    mi scrive Ca**o o qualkosa del genere ...

    Grazie in anticipo


  2. #2
    codice:
    function badWords($sText){
    	$Bwords = array("cretino","stupido","imbecille","porcapaletta");
    	$Gwords = array("cret**o","stu**do","imbe**lle","por**paletta");
    
    	$sText = substr($Bwords,$Gwords,$sText);
    
    	return $sText;
    }
    .. tutti siamo utili, ma nessuno è indispensabile ..

  3. #3
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    codice:
    function BadWords($stringa){
        $parolacce = array("stupido","scemo","cretino");
        
        for($i=0;$i<count($parolacce);$i++){
            $stringa =     str_replace($parolacce($i),str_repeat("*",strlen($parolacce($i))),$stringa);
        }
    
        return $stringa;
    nn l'ho provata, dimmi se funziona.

    per quanto riguarda il database si può fare ed anche molto facile, solo che ora devo scappare appena posso ti posto qualcosa

  4. #4
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    Originariamente inviato da andreaaaahhhh
    codice:
    function badWords($sText){
    	$Bwords = array("cretino","stupido","imbecille","porcapaletta");
    	$Gwords = array("cret**o","stu**do","imbe**lle","por**paletta");
    
    	$sText = substr($Bwords,$Gwords,$sText);
    
    	return $sText;
    }

    ma sei proprio sicuro che cosi funzioni?
    perchè la funzione substr fa tutt altro!

    string substr(string $string, int $start [, int $length])

  5. #5
    Ok l'ho scritta di corsa.. ho sbagliato funzione (substr con str_replace) nello scriverla al volo.

    questa va:

    codice:
    function badWords($sText){
    	$Bwords = array("cretino","stupido","imbecille","porcapaletta");
    	$Gwords = array("cret**o","stu**do","imbe**lle","por**paletta");
    
    	$sText = str_replace($Bwords,$Gwords,$sText);
    
    	return $sText;
    }
    credo però che intendesse questa, perchè la funzione che sostituisce con asterischi l'aveva già.

    Si può anche modificare facendo in modo che sia leggibile la prima e l'ultima lettera soltanto senza dover creare manualmente un array di sostituzioni:

    codice:
    function badWords($sText){
    	$Bwords = array("cretino","stupido","imbecille","porcapaletta");
    	for($i=0;$i<count($Bwords);$i++){
               $sText = str_replace($Bwords[$i],akSub($Bwords[$i]),$sText);
    	}
    
    	return $sText;
    }
    
    function akSub($Bwords){
    	for($i=1;$i<(strlen($Bwords)-1);$i++){
    		$Bwords[$i] = "*";
    	}
    	return $Bwords;
    }
    dopo il $i la parentesi quadra è andata a capo, ma deve stare a fianco ovviamente!
    .. tutti siamo utili, ma nessuno è indispensabile ..

  6. #6
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    ok ora si!
    però, nn sapevo che a str_replace si potessero passare anche degli array, comodo!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    Grazie ragazzi.... ora mi metto subito al lavoro e provo le vostre funzioni!

    Mi piace l'idea di quella che fa leggere la prima e l'ultima lettera soltanto senza dover creare manualmente un array di sostituzioni!

    Se ho problemi mi faccio vivo

    Ciaoooooooo

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    problemino

    Sto cercando di rendere la funzione sensibile anke alle maiuscole/minuscole: io l'ho riscritta così ma nn va... mi sapete dire dove sbaglio ? ? ?

    codice:
    function badWords($sText){
    	$strArrivo = $sText;
    	$strLower = strtolower($strArrivo);
    	$Bwords = array("cretino","stupido","imbecille","porcapaletta");
    	for($i=0;$i<count($Bwords);$i++){
               $strCorretto =  str_replace($Bwords[$i],akSub($Bwords[$i]),$strLower);
    	}
    	if ($strCorretto == $strLower){
    	return $sText;
    	}
    	else {
    	return $strCorretto;
    	}
    }

  9. #9
    Utente di HTML.it L'avatar di buba88
    Registrato dal
    Feb 2004
    Messaggi
    538
    invece di str_replace usa str_ireplace, che è insensibile alle maiuscole/minuscole.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    ho provato cn ireplace ma mi restituisce questo errore:

    Fatal error: Call to undefined function: str_ireplace()

    Ma questa funzione è disponibile solo cn PHP versione 5 ? oppure il problema è un altro ?



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.