Visualizzazione risultati 1 fino 3 di 3

Discussione: Sostituzione parole con determinata stringa

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Sostituzione parole con determinata stringa

    Salve,
    ho bisogno di un idea per questa cosa:

    Ho un array contenente diverse parole che voglio diciamo bannare dal sito ma necessito che esse vengono sostituite dalla stessa parola ma con degli asterischi in mezzo alla parola o con un'altra parola.

    Es:

    Codice PHP:
    $bad = array("banane","mele","pere");
    $new = "[OMITTED]";

    $string = "Ciao oggi ho 40 banane, 20 mele, 30 pere, 5 ciliegie, 30 cocomeri e non so che altro...";

    // Funzione di replace -> Risultato di replace con asterisco:

    $string = "Ciao oggi ho 40 b****e, 20 m**e, 30 p**e, 5 ciliegie, 30 cocomeri e non so che altro...";


    // Funzione di replace -> Risultato di replace con parola:

    $string = "Ciao oggi ho 40 [OMITTED], 20 [OMITTED], 30 [OMITTED], 5 ciliegie, 30 cocomeri e non so che altro...";
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Codice PHP:
    function censor_words($str, $wordlist, $start = 2, $end = -1)
    {
    foreach (
    $wordlist as $word)
    if (
    strpos($str, $word) !== false)
    $str = str_replace($word, substr($word, 0, $start) . str_repeat('*', strlen(substr($word, $start, $end))) . substr($word, $end), $str);

    return
    $str;
    }
    Scritta al volo, ma dovrebbe andare come logica e sintassi.
    Hai bisogo inoltre di definire un elenco di parole da "censurare" da qualche parte, ad esempio:

    Codice PHP:
    $wordlist = array('banane', 'pere', 'mele', 'ciliegie');

    Per come ho scritto la funzione, l'importante è che questo elenco sia un array.
    Infine non ti resta che applicare la funzione alla stringa presa in esame:

    Codice PHP:
    $string = "Ciao oggi ho 40 banane, 20 mele, 30 pere, 5 ciliegie, 30 cocomeri e non so che altro...";

    echo
    censor_words($string, $wordlist);

    Gli ultimi due parametri opzionali servono a definire da che punto a che punto tagliare la stringa.

    Con l'esempio di default, ad esempio, la parola 'banane' te la sistema così: 'ba***e'

    ma se imposti differentemente il primo parametro opzionale..

    Codice PHP:
    echo censor_words($string, $wordlist, 1);
    la conversione avviene così: 'b****e'.


    nota: il primo parametro va a numeri positivi, il secondo a numeri negativi, se vuoi mostrare quindi le ultime due lettere di una parola devi impostare il secondo parametro opzionale a -2.


    Enjoy



    Edit: si può ottenere il medesimo risultato con un preg_replace_callback, ma ritengo che il metodo illustrato sia più leggero da digerire per il povero interprete.

    Per quanto riguarda il replace con una parola invece la logica da seguire è identica a quella della funzione illustrata, basta impostare nel secondo parametro di str_replace la parola che vuoi sostituisca quelle che non ritieni opportune.
    Ultima modifica di blackbos : 03-11-2011 alle ore 14.35.41

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ciao,
    grazie per il tuo aiuto e scusami se ti rispondo solo ora...ma ho avuto non pochi problemi ad aggiornare il sito che richiedeva questa funzione.

    Dato che i dati sono di grande quantità a me serve una funzione veloce quindi se c'è qualche funzione più veloce di questa (chiedo perchè non so) mi puoi aiutare ad usarla?

    Grazie,
    Michelangelo
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

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