Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    48

    Lettere accentate nelle espressioni regolari

    Buongiorno a tutti,
    non riesco in nessun modo a fare sì che la funzione eregi() mi accetti lettere accentate.
    deve controllare un form per l'inserimento di un nome.
    Ho provato le seguenti soluzioni:
    Codice PHP:
    (eregi('^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$'$nome
    Codice PHP:
    (eregi('^[a-zA-Z àòùèéì]+$'$nome
    Codice PHP:
    (eregi('^[[wu00C0-u017Fu1e00-u1ef9]]+$'$nome
    Codice PHP:
    (eregi('^[:alpha:]+$'$nome
    ma nessuna di queste funziona...
    prima di inserire il controllo sulle lettere accentate avevo:
    Codice PHP:
    (eregi('^[a-zA-Z \t]+$'$nome
    e funzionava tutto.
    come posso fare?
    Grazie

  2. #2
    partendo dal fatto che è una brutta, bruttissima, idea usare le ereg* in quanto deprecate e lente, innanzi tutto devi verificare il charset dei dati su cui stai lanciando l'espressione regolare.
    Se i dati sono in UTF8 devi prima convertirli in ANSI (utf8_decode) oppure costruire delle espressioni regolari abbastanza complesse per lavorare sui caratteri multibyte
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    48
    Originariamente inviato da daniele_dll
    partendo dal fatto che è una brutta, bruttissima, idea usare le ereg* in quanto deprecate e lente, innanzi tutto devi verificare il charset dei dati su cui stai lanciando l'espressione regolare.
    Se i dati sono in UTF8 devi prima convertirli in ANSI (utf8_decode) oppure costruire delle espressioni regolari abbastanza complesse per lavorare sui caratteri multibyte
    grazie, è una questione di PHP o anche di HTML?
    mi sembra che ci sia un tag <meta..> che include anche info sul set di caratteri

  4. #4
    dipende da come gestisci i caratteri, in generale lo si specifica nell'html o tramite header, altrimenti la cosa è un pòo casual

    se nel tag meta c'è scritto UTF8 allora devi mettere un utf8_decode prima di lanciare l'espressione regolare (dai un occhiata alle preg_*)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    48
    grazie, il problema era quello.
    alla fine questa espr. regolare funziona:
    ^[wu00C0-u017Fu1e00-u1ef9]{2,20}$
    solo che vorrei permettere anche gli spazi e impedire i numeri.
    dato che non ho idea del significato di quello che è contenuto tra le parentesi quadre, come posso fare?

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.