Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    problema con funzione di sostituzione caratteri

    Ciao a tutti
    sulla falsa riga di una funzione php, ho creato una funzione js che dovrebbe fare le seguenti operazioni:
    • sostituire le lettere accentate maiuscole/minuscole con le relative lettere non accentate,
    • sostituire alla stringa ottenuta tutti i caratteri che non siano lettere e numeri a-z0-9 con ''
    • trasformare la stringa ottenuta in soli caratteri mainuscoli


    Però se nei campi del form interessati inserisco ad esempio cia, cià e cia' ... il controllo fallisce nonostante dovrebbe trovarli tutti come valori uguali in quanto dalla funzione dovrebbero diventare tutti cia

    Qualcuno può aiutarmi? La funziont è la seguente:
    Codice PHP:
    function pulisci(str){
        
    lettere = new Array("à""è""ì""ò""ù",
                                    
    "á""é""í""ó""ú",
                                    
    "À""È""Ì""Ò""Ù",
                                    
    "Á""É""Í""Ó""Ú",
                                    );
        
    sostituzioni = new Array("a""e""i""o""u",
                                    
    "a""e""i""o""u",
                                    
    "a""e""i""o""u",
                                    
    "a""e""i""o""u",
                                    );
        for (var 
    i=0i<lettere.lengthi++) {
            
    str.replace(lettere[i], sostituzioni[i]);
        }
        
    str.replace('/[^a-zo-9]/i''');
        
    str.toLowerCase();

        return 
    str;


  2. #2

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    comunque sbagli anche nel non assegnare il risultato del replace
    str=str.replace(lettere[i], sostituzioni[i]);

    poi, se nel replace non usi una regExp vai a sostituire solo la prima occorrenza
    che probabilmente non e' cio' che vuoi

  4. #4
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    ok allora ho corretto nell'assegnazione degli array con i codici esadecimali ed ho assegnato la stringa al rimpiazzamento come indicato.

    funziona bene per le accentate ora.

    nella seconda parte della funzione non va bene mettere la regexp in quel modo? io voglio che dopo la prima sostituzione di accentate, apici e virgolette, e la trasformazione in minuscolo mi trovi tutti i caratteri che sono nella stringa e che non sono lettere a-z e numeri 0-9

    per ora è così:
    Codice PHP:
    function pulisci(str){
        
    lettere = new Array('\u00E0''\u00E8''\u00EC''\u00F2''\u00F9',
                            
    '\u00E1''\u00E9''\u00ED''\u00F3''\u00FA',
                            
    '\u00C0''\u00C8''\u00CC''\u00D2''\u00D9',
                            
    '\u00C1''\u00C9''\u00CD''\u00D3''\u00DA');
        
    sostituzioni = new Array('a''e''i''o''u',
                                
    'a''e''i''o''u',
                                
    'a''e''i''o''u',
                                
    'a''e''i''o''u');
        for (var 
    i=0i<lettere.lengthi++) {
            
    str str.replace(lettere[i], sostituzioni[i]);
        }
        
    str str.replace('/[^a-zo-9]/i''');
        
    str str.toLowerCase();

        return 
    str;


  5. #5
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    risolto!

    se può servire a qualcuno
    Codice PHP:
    function pulisci(str){
        
    lettere = new Array('\u00E0''\u00E8''\u00EC''\u00F2''\u00F9',
                            
    '\u00E1''\u00E9''\u00ED''\u00F3''\u00FA',
                            
    '\u00C0''\u00C8''\u00CC''\u00D2''\u00D9',
                            
    '\u00C1''\u00C9''\u00CD''\u00D3''\u00DA');
        
    sostituzioni = new Array('a''e''i''o''u',
                                
    'a''e''i''o''u',
                                
    'a''e''i''o''u',
                                
    'a''e''i''o''u');
        for (var 
    i=0i<lettere.lengthi++) {
            
    str str.replace(lettere[i], sostituzioni[i]);
        }
        
    str str.replace(/[^a-z0-9]/g'');
        
    str str.toLowerCase();

        return 
    str;


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.