Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    si scusa, mi sono dimenticato di scriverti una modifica :
    codice:
    $wRex = '/\b('.$wRex.')\b/ie';
    devi aggiungere la "e"
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  2. #12
    ancora niente...

    http://www.modelliemodelle.it/messwall.php?page=11
    messaggio delle 10.05
    Ciao!

  3. #13
    boh, a me funziona ... ti riposto il codice, se non ti funziona postami la parte di codice come l'hai messa nella pagina
    codice:
    function cBack($str){
    	return preg_replace('/\B\w\B/','*',$str);
    }
    
    $censor_word ='sōla, pippa, schiappa';
    $wRex = preg_replace('/\s*,\s*/','|',trim($censor_word));
       // commenti o decommenti la riga seguente in base 
      // al tipo di riconoscmento che vuoi effettuare
    $wRex = preg_replace('/(\b\w|\w\b|\B(\w)\\2+\B)/','$1+',$wRex);
    $wRex = '/\b('.$wRex.')\b/ie';
    // .....
    // .....
    
    echo $new_mess_body = preg_replace($wRex,"cBack('$0')",$mess_body);
    Occhio che le parole messe in $censor_word devono essere separate dalla virgola.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  4. #14
    config.inc.php
    Codice PHP:
        function cBack($str){
            return 
    preg_replace('/\B\w\B/','*',$str);
        }    

        
    $censor_word "cazzo, figa, fica, puttana";
        
    $wRex preg_replace('/\s*,\s*/','|',trim($censor_word));
               
    // commenti o decommenti la riga seguente in base 
              // al tipo di riconoscmento che vuoi effettuare
        
    $wRex preg_replace('/(\b\w|\w\b|\B(\w)\\2+\B)/','$1+',$wRex);
        
    $wRex '/\b('.$wRex.')\b/ie'

    messwall.php
    Codice PHP:
    $mess_body preg_replace($wRexcBack('$0'), $mess_body); 
    Ciao!

  5. #15
    Trovato!!!

    ho rimesso gli apici doppi!!!



    Ciao!

  6. #16
    posso chiederti una cosa?

    premetto che non ho capito nulla del codice che mi hai dato, l'ho semplicemente "copincollato" nella mia pagina, mi potresti dare le modifiche per asteriscare tutta la parola, tutta la parola tranne la prima lettera e tutta la parola tranne la prima e l'ultima lettera?

    mi saresti di grande aiuto, visto che mi piace sapere le cose che faccio, se mi commentassi la sintassi delle espressioni regolari.

    spero di non chiedere troppo!

    grazie mille!!!
    Ciao!

  7. #17
    Ho modificato la funzione cBack() in modo che esegua le tre tipologie di sostituzione, basta che sostituisci quella. Per quanto riguarda i commenti, m'č venuto un po' un papiro, se no non si capiva nulla. Spero che almeno sia chiaro. In caso chiedi pure



    Allora, la prima parte di codice serve a trasformare ad esempio 'sōla, pippa, schiappa' in 'sōla|pippa|schiappa' usando questo criterio di sostituzione:

    codice:
    /\s*,\s*/
    \s* : (0 o + occorrenze di ogni carattere non visibile: spazi,\r,\n,\t,etc), la virgola e di nuovo \s*
    Cosė si tolgono anche eventuali spazi vuoti/a capo non voluti.

    E lo sostituiamo col carattere pipe |, che č l’operatore OR nella sintassi delle regexp. In questo modo, se chiudessimo la stringa modificata tra parantesi tonde (sōla|pippa|schiappa) la regexp cercherebbe tutte le parole suddivise dall’OR.



    La regexp successiva:
    codice:
    /(\b\w|\w\b|\B(\w)\\2+\B)/
    Ora vogliamo “prevedere” eventuali storpiature banali, quindi ipotizziamo che possano essere raddoppiate le lettere iniziali, le doppie e le finali:
    Sono tre opzioni quindi le dividiamo con l’operatore OR |.

    1Ē opz.:
    codice:
    \b\w
    \w č una classe di caratteri come [a-z] (e come \s), ma comprende tutti i caratteri alfanumerici e l’underscore _, mentre \W č il suo negato [^\w], cioč qualsiasi carattere diverso da \w.
    \b invece č un’asserzione all’indietro o in avanti, č un criterio che indica il primo carattere (se lo precede) o l’ultimo (se lo segue) di una parola. \B č il suo negato.
    Quindi \b come prefisso a \w, cioč \b\w, indica il primo carattere di una parola.

    2Ē opz.:
    codice:
    \w\b
    indica l’ultimo carattere di una parola.

    3Ē opz.:
    codice:
    \B(\w)\\2\B
    Sottoregole: sono racchiuse dalle parentesi tonde(), quindi (\w) cerca un carattere alfanumerico e lo memorizza in una variabile che puō essere utilizzata sia nella regexp stessa, come riferimento all’indietro (si indica \\1,\\2,\\3,etc) il numero č progressivo contando le parantesi tonde aperte, sia nella stringa di sostituzione (\\1 , ma anche $1,$2,etc). In questo caso ci interessa il riferimento all’indietro. Per beccare le doppie all’interno di una parola quindi usiamo \B(\w), sottoregola che memorizza un carattere che non sia all’inizio di una parola, e ci attacchiamo il riferimento all’indietro relativo a quella stessa sottoregola, che inquesto caso č la 2Ē sottoregola, quindi \B(\w)\\2\B.
    (\w)\\2 č verificato quando \w č uguale a \\2.

    Tutta la regexp č racchiusa dalle parentesi tonde che specificano la 1Ē sottoregola, richiamata in fase di sostituzione con $1. Il risultato finale č:
    codice:
    /\b(s+ōla+|p+ipp+a+|s+chiapp+a+)\b/ie
    I + indicano quali lettere possono essere ripetute (1 o pių occorrenze)
    le \b servono ad impedire che vengano censurate parole tipo sōlaio, mentre "ie" sono due modificatori di criterio, "i" rende la ricerca insensibile alle maiuscole/minuscole mentre "e" , eval, valuta come codice php la stringa passata come replacement ed č per questo che la funzione cBack() deve stare tra vigolette.

    Infine la funzione cBack, a cui arriva una parola singola alla volta... che non avra spero bisogno di spiegazioni
    codice:
    function cBack($str,$mode=false){
    	if ($mode==1)
    		$rex = '/\B\w/';
    	else if($mode==2)
    		$rex = '/\w/';
    	else 
    		$rex = '/\B\w\B/';
    	return preg_replace($rex,'*',$str);
    }
    Il secondo parametro della funzione lo passi solo se vuoi usare il caso 1 o 2.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.