Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Parole proibite

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    Parole proibite

    Salve,
    devo attuare un sistema di parole proibite per la censura di alcuni testi.

    Ho una tabella in un db, dove ogni record corrisponde ad una parola proibita,
    attualmente siamo arrivati a circa 100 parole o frasi (due o piu' parole) ma credo che la lista aumentera'.

    Vorrei chiedere il Vs. parere, per attuare un buon sistema, che non rallenti troppo il caricamento della pagina.

    Io avevo pensato a questo,

    Faccio la query, eseguo il ciclo while sull'oggetto server, e per ogni volta che rifa il ciclo controlla con strpos se nella stringa ci sono o meno le parole proibite, se si fa il replace della parola trovata e mette 5 *.

    I miei dubbi sono, usando strpos non mi rallenta troppo il caricamento? e poi, strpos prende anche i case sensitive, le parole che iniziano con quella parola e che finiscono?

    Mi avevano consigliato di usare eregi. Voi cosa ne pensate?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Quindi nel mio caso, come potrebbe essermi utile?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Mi son dimenticato di dire:

    La censura va attuata nel primo caso, e li ok, uso eregi_replace e tutto ok.

    Il problema e' che, nel primo sistema, se una parola proibita e' presente nella stringa, deve dare un messaggio di errore:

    Purtroppo ho provato con:

    Codice PHP:

    if(eregi_replace($pattern$replacement$body)) {
          
    $errore 1;

    Ma niente, non funziona

  5. #5
    Nella mia bacheca uso questo:
    Codice PHP:
    <?php
    function filtro($stringa){

    $brutteparole= @file("badwords.txt") or die("non ho trovato il file");
    foreach ( 
    $brutteparole as $bruttaparola) {

     
    $sostituto=( "(non scrivere stupidaggini)" );

      
    $stringa=eregi_replace(trim($bruttaparola), $sostituto$stringa);
    //meglio mettere trim per il file riga
     
     
    }
     return 
    $stringa;
    }
    ?>
    crei poi un file di testo con le parole proibite inserite una per riga, volendo puoi anche fare un form per inserirle automaticamente in questo file di testo.
    cmq anche col database non dovrebbe essere tanto diverso.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    No il concetto del DB l'ho capito e l'ho gia applicato.
    Quello che mi serve e' sapere se l'unico modo per trovare una stringa all'interno di un altra sia con strpos.

    Praticamente mi server perche':

    Gli utenti che si iscrivono al mio sito, non posso mettere un nickname "proibito"

    Quindi la parola da controllare sara' una ma:

    strpos ha molte lacune: trova una stringa all'interno o alla fine di un altra stringa. Quindi con una parola singola non funziona. Se la parola e' in MAIUSCOLO, non la trova, se la stringa e' in minuscolo ecc.

    Mi serviva proprio una funzione come eregi_replace, ma da usare in una condizione IF.

  7. #7
    ma io no te l'ho postata prima?

  8. #8
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Originariamente inviato da Toniello
    No il concetto del DB l'ho capito e l'ho gia applicato.
    Quello che mi serve e' sapere se l'unico modo per trovare una stringa all'interno di un altra sia con strpos.

    Praticamente mi server perche':

    Gli utenti che si iscrivono al mio sito, non posso mettere un nickname "proibito"

    Quindi la parola da controllare sara' una ma:

    strpos ha molte lacune: trova una stringa all'interno o alla fine di un altra stringa. Quindi con una parola singola non funziona. Se la parola e' in MAIUSCOLO, non la trova, se la stringa e' in minuscolo ecc.

    Mi serviva proprio una funzione come eregi_replace, ma da usare in una condizione IF.
    quindi il controllo lo devi fare all'inserimento e non serve una sostituzione !

    scusa, avevo capito male.

    allora devi usare le espressioni regolari e la funzione che ti serve è eregi. nel manuale di php l'esempio1 fa proprio al caso tuo.

    http://it.php.net/manual/it/function.eregi.php

    Errare humanum est, perseverare ovest

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.