Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Raggruppare lettere con regex

    Ciao,
    come posso fare con una regular expression se voglio fare in modo che vengano trovate tutte le lettere ad eccezione di un gruppo di lettere da me impostato?

    ho provato con:

    $str_toReplace = '*';

    $str_toChange = preg_replace("#[^($str_letterSave)]#i", $str_toReplace, $str_toChange);


    il problema è che se ad esempio $str_letterSave = 'miao' vengono riconosciute tutte le lettere della parola miao, non la parola miao nel suo insieme.

    Quindi la parola armonicamiao diventa a*mo*i*amiao al posto di ******miao

  2. #2
    come posso fare con una regular expression se voglio fare in modo che vengano trovate tutte le lettere ad eccezione di un gruppo di lettere da me impostato?
    Quello che chiedi è diverso da quello che ti serve. Il codice che cerci deve preservare le parole che desideri e sostituire tutti gli altri caratteri.

    Utilizza http://www.php.net/preg_match_all con il flag PREG_OFFSET_CAPTURE e ricostruisci la stringa utilizzando gli offset che ti vengono forniti.

  3. #3
    Ciao,
    ho fatto quello che mi hai suggerito e sono riuscito a risolvere il problema. Posto la parte centrale della funzione:

    codice:
    preg_match_all("#($to_find)#", $str_toChange, $arr_toChange, PREG_OFFSET_CAPTURE);
    			
    				foreach($arr_toChange[0] as $value){
    					
    					foreach($value as $value2){
    						
    						if(is_int($value2)){
    							
    							$str_covered = substr_replace($str_covered,$to_find,$value2,strlen($to_find)); 
    						}
    			
    					}
    				}
    Quello di cui non sono pienamente sicuro è il modo in cui ottengo l'offset, cioè dalla variabile $value2 quando è un integer (ho visto che alternativamente può assumere come valore la stringa da ricercare).

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.