Visualizzazione risultati 1 fino 9 di 9

Discussione: [PHP] Script per censurare delle parole!

  1. #1
    Guest

    Predefinito [PHP] Script per censurare delle parole!

    Ciao,
    vorrei rinnovare il mio guestbook, e vorrei inserire la possibilità di censurare certe parole... Magari, se possibile, fare anche un form da dove inserire nuove censure, oppure eliminare censure...

    Spero che si possa realizzare tutto questo, tnks!
    ...byex!

  2. #2
    Guest

    Predefinito

    vabbè, un codice semplice semplice dal quale puoi partire potrebbe essere uan cosa del genere:
    Codice PHP:
    <?php
    $testo
    = "Il testo in cui sta la parolaccia: sciocco"; //il testo del messaggio del tuo guest, magari lo pigli tramite $_GET[]
    $censura = "*[censura]*"; //qui metti il modo in cui vuoi far apparire la censura
    $badwords = array('stupidino', 'sciocchino', 'stolto', 'sciocco'); //l'array delle parole che vuoi censuare
    foreach($badwords as $chiave){
    $msg = str_replace($chiave, $censura, $testo);
    }
    echo
    $msg;
    ?>
    la variabile $testo conterrà il messaggio inserito nel tuo form del guest che magari ti puoi rcuperare tramite un $_GET[], mentre nell'array $badwords inserisci le parole che vuoi censuare, l'esempio da me postato è funzionante, prova ed effettua le dovute modifiche!
    L'esempio da me riportato ti produrrà in output questo:
    Il testo in cui sta la parolaccia: *[censura]*
    Ultima modifica di bfi : 21-04-2006 alle ore 20.56.17

  3. #3
    Guest

    Predefinito

    un piccolo consiglio....sostituisci str_replace cn str_ireplace ke è case insensitive

  4. #4
    Guest

    Predefinito

    come faccio a far apparire metà parola e metà censura? esempio: scioc**

    EDIT: chi mi aiuta a fare il form?
    Ultima modifica di TurkoSoft : 21-04-2006 alle ore 21.06.58

  5. #5
    Guest

    Predefinito

    Devi trimmare parte del messaggio partendo da destra.

    Per il form usa lo stesso dell'invio dei messaggi no?
    E il controllo sul testo lo fai usando il valore passato col form.
    Codice PHP:
    $testo= "VALORE CHE HAI PASSATO COL FORM" // Ad esempio $_POST['testo']
    Consiglio il post piuttosto che il get perchè il testo del commento su un guestbook è lungo e farlo comparire nella barra degli indirizzi non è il massimo.

  6. #6
    Guest

    Predefinito

    forse ti conviene creare una tabella in un DB in cui inserisci tutte le parolacce.
    un semplice form tipo:
    Codice HTML:
    <form method=post action="stessa_pagin.php">
    Parolaccia da censurare: <input type=text name=badword>
    <input type=submit name=submit value="Invia Parolaccia">
    </form>
    ti consente, con un semplice script php di inserire la parolaccia nel database:
    Codice PHP:
    //connessional db
    $parolaccia = $_POST['badword'];
    $aggiungi_parolaccia = "INSERT INTO tb_parolacce (id_parolacce, parolaccia)
    VALUES ('','
    $parolaccia');
    mysql_query(
    $aggiungi_parolaccia) or die('ERRORE');
    per, eventualmente cambiare le parolacce,
    ti connetti al DB,
    poi visualizzi i dati in una tabella-form, in cui affianco alla parolaccia compare una checkbox.
    con uno script che legge quali caselle sono state selezionate:
    Codice PHP:
    ...

    foreach (
    $_POST['check'] as $key => $val){
    if(
    $listaid == ''){
    $listaid = $val;
    }
    else{
    $listaid = $listaid.", ".$val;
    }
    }
    }
    ti crei una stringa ($listaid) in cui memorizzi tutti gli id delle parolacce che vuoi eliminare.
    poi fai DROP.
    non so se DROP accetta piu inserimenti in un'unica query,
    ma al massimo semplicemente conti quanti check sono stai selezionati, ti memorizzi gli id da cancellare in una variabile temporanea e poi reiteri la cancellazione per ogni id.

    ciao ciao.
    Ultima modifica di funcool : 24-04-2006 alle ore 18.28.32

  7. #7
    Guest

    Predefinito

    Io uso questa funzione, vedi se ti può tornare utile:
    Codice PHP:
    function censura($testo){
    global
    $arr_bad_parole;
    unset(
    $asterisco);
    $totale_bads=count($arr_bad_parole);
    for(
    $tbad=0;$tbad<$totale_bads;$tbad++,next($arr_bad_parole)){
    $asterisco[$tbad]="";
    for(
    $conttmp=0;$conttmp<strlen(trim($arr_bad_parole[$tbad]));$conttmp++){
    if(
    $conttmp==0 || $conttmp==strlen(trim($arr_bad_parole[$tbad]))){
    $asterisco[$tbad].=substr(trim($arr_bad_parole[$tbad]),$conttmp,1);
    }else{
    $asterisco[$tbad].="*";
    }
    }
    $testo=preg_replace("/".$arr_bad_parole[$tbad]."/si",$asterisco[$tbad],$testo);
    }
    return
    $testo;
    }
    $arr_bad_parole è un array che contiene le parole da censurare.
    Il risultato è la prima lettera della parola in chiaro e poi tanti asterischi quante sono le lettere restanti, per esempio: s****** chi legge!
    ;)


    Ciaooo!!!!!

  8. #8
    Guest

    Predefinito

    @ lsdforum: niente db... ma grazie lo stesso!

    @ jo: grazie dell'idea, adesso ci provo!

  9. #9
    Guest

    Predefinito

    ma così senza db o senza un file di appoggio, non puoi aggiungerne di nuove...
    e sai che figo, se usassi un db, potresti pure creare un tipo di censura diversa a seconda della parolaccia o della categoria cui appartiene, che so, bestemmie, insulti, volgarità etc :D

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •