Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Accentate in Espressioni Regolari

    Ciao a tutti,

    spero di non trattare un argomento trito, ma la ricerca sul forum è disabilitata....

    Vorrei testare un campo di input di un form utilizzando le espressioni regolari, si tratta di un cognome, che, come è noto, deve iniziare con un carattere, e può proseguire anche con spazio, apostrofo, trattino e accentate (se ho dimenticato qualcosa aggiungetelo pure)

    Quello che non riesco a testare sono proprio le accentate

    Ho provato con

    if (!eregi("^[a-z]{1}[a-z/ /'-]{2,60}$", $_POST['cognome']))
    if (!eregi("^[a-z]{1}[\w]{2,60}$", $_POST['cognome']))
    if (!eregi("^[a-z]{1}[[:alpha:]]{2,60}$", $_POST['cognome']))

    Cosa non manca alla mia ignoranza??

    Grazie.

  2. #2
    up!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    15
    credo che così possa andare bene:

    codice:
    ^[a-z]{1}[a-z 'òàùèì-]{2,60}$
    Poi aggiungi tutti i caratteri che vuoi vengano ammessi

  4. #4
    per i caratteri accentati minuscoli da tastiera metti una backslash \à\è\étc.

    ho fatto questa di prova e dovrebbe funzionare (non ho messo il trattino perché non mi pare che ci vada nei cognomi).
    Codice PHP:
    $stringa " d. Mariònè di Vàl d'Abruzzésì   ";

    $regExp "^([a-z\\'\\ò\\à\\ì\\è\\é\\ù]+(\\.[[:space:]])?[[:space:]]*)+$";

    if ( 
    eregi($regExp,ltrim($stringa)) ) echo "è un cognome
    "
    ;
    else echo 
    "non è un cognome
    "

    Mentre per altri tipi di caratteri tipo ã Ã etc mi si è posto il problema e credo che l'unico modo sia quello di usare preg_match() e usare i valori esadecimali del carattere
    Codice PHP:
    $stringa " d. Mariònè di Vàl d'ãbruzzésì   ";

    // ho messo la "ã"
    $val dechex(ord("ã")); 

    $regExp "/^(?:[a-z\\'\\ò\\à\\ì\\è\\é\\ù\\x$val]+(?:\\.\\s)?\\s*)+$/i";

    if (
    preg_match($regExp,ltrim($stringa))) echo "e' un cognome
    "
    ;
    else echo 
    "non è un cognome
    "

    Ogni carattere particolare che vuoi controllare va aggiunto (sia maiscolo che minuscolo).
    altri modi non ne ho visti (se non mb_ereg() ma sinceramente non saprei).
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    15
    scusa ma perhè metti i caratteri di escape davanti alle accentate? non mi pare siano caratteri riservati

  6. #6
    grazie Anªkin,

    io avevo risolto in questo modo

    if (!eregi("^[a-z]{1}[a-zé-ÿ/ /'/-]{2,60}$", $_POST['cognome'])

    per prendere anche i caratteri in uso in cognomi stranieri presenti in abbondanza nell'intervallo é-ÿ, cosa ne pensi?

    Riguardo al trattino forse hai ragione, ma per non saper ne leggere e ne scrivere...

    Fammi sapere cosa ne pensi.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    15
    Scusate mi spiegate perchè mettete gli escape davanti alle lettere accentuate? Gli escape non dovrebbero essere messi solo nel caso di caratteri riservati?

  8. #8
    Originariamente inviato da stoneage
    scusa ma perhè metti i caratteri di escape davanti alle accentate? non mi pare siano caratteri riservati
    perchè ... perchè ... non zo perchè ...

    Ho fatto questo ragionamento nella mia testa bacata, siccome non sapeva come fare a far riconoscere i caratteri accentati ho dato per scontato che mettendoli nudi e crudi non venissero riconosciuti quindi ho provato direttamente con la backslash e funzionava da qui ho estrapolato la mia regola generale di mettere il backslash
    insomma il backslash me lo sono inventato di sana pianta
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    15
    Originariamente inviato da Anªkin
    perchè ... perchè ... non zo perchè ...

    Ho fatto questo ragionamento nella mia testa bacata, siccome non sapeva come fare a far riconoscere i caratteri accentati ho dato per scontato che mettendoli nudi e crudi non venissero riconosciuti quindi ho provato direttamente con la backslash e funzionava da qui ho estrapolato la mia regola generale di mettere il backslash
    insomma il backslash me lo sono inventato di sana pianta

    ecco spiegato del perchè a me funziona anche senza \

  10. #10
    Originariamente inviato da barbagianni
    grazie Anªkin,

    io avevo risolto in questo modo

    if (!eregi("^[a-z]{1}[a-zé-ÿ/ /'/-]{2,60}$", $_POST['cognome'])

    per prendere anche i caratteri in uso in cognomi stranieri presenti in abbondanza nell'intervallo é-ÿ, cosa ne pensi?

    Riguardo al trattino forse hai ragione, ma per non saper ne leggere e ne scrivere...

    Fammi sapere cosa ne pensi.
    ti funziona l'intervallo é-ÿ? In teoria non dovrebbe, ma comincio a dubitare di me stesso
    ora provo.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.