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

    Reg Exp per stringa con spazi, - e _ usando preg_match()

    Salve a tutti, sto sviluppando un form di inserimento dati e ho notevoli ( a dir poco ) problemi con la validazione di un campo di input!

    La richiesta è semplice: il campo rappresenta un modello di un oggetto, e deve poter contenere caratteri alfanumerici, trattini ( - ), underscore ( _ ) e spazi; il controllo sulla presenza o meno di questi caratteri è effettuato con l'istruzione
    Codice PHP:
    !empty($fields[$field_name]) && !preg_match($reg_exp$fields[$field_name]) 
    dove $field è il campo del form e $reg_exp è l'espressione regolare da utilizzare per il controllo.

    Attualmente ho scritto questa espressione
    codice:
    [A-Za-z0-9_\s\-]
    che però non sembra funzionare...

    Come posso risolvere? Dove sto sbagliando??
    Step 1: Go to any youtube video.
    Step 2: While the video is playing or being paused whatever, at the center or (anywhere in the video) left click on your mouse and hold it.
    Step 3: Now, press and hold left arrow key on your keyboard.
    Step 4: Now, press the up arrow key.

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    sicuro che la condizione sia

    !empty($fields[$field_name]) && !preg_match($reg_exp, $fields[$field_name])

    ?
    in questo caso la condizione viene eseguita solo se il campo non è vuoto e se non contiene i caratteri cercati.

    in ogni caso per la regexp prova con

    codice:
    $reg_exp = "#^[a-zA-Z\s0-9_-]+$#";
    eXvision

  3. #3
    No è esatto... Posto il pezzo di codice...
    Codice PHP:
    if ( !empty($fields[$field_name]) && !preg_match($reg_exp$fields[$field_name]) )
       
    $errors[$field_name] = $error_message
    L'espressione da te segnalata non funziona... Ci sto veramente perdendo le speranze...
    Step 1: Go to any youtube video.
    Step 2: While the video is playing or being paused whatever, at the center or (anywhere in the video) left click on your mouse and hold it.
    Step 3: Now, press and hold left arrow key on your keyboard.
    Step 4: Now, press the up arrow key.

  4. #4
    Prova così:

    Codice PHP:
    $reg_exp "/^[A-Za-z0-9_ -]*$/"
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova così
    Codice PHP:
    //se non vuoto e non trova caratteri diversi da quelli specificati dal pattern
    if ( !empty($fields[$field_name]) && !preg_match('/[^a-z0-9\\s_-]/i'$fields[$field_name]) )
       
    $errors[$field_name] = $error_message
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    qua http://forum.html.it/forum/showthread/t-675136.html dice di non usare il \s ma direttamente uno spazio nelle quadre =\

  7. #7
    Sono riuscito a farcela!!

    L'espressione che ha funzionato è
    codice:
    $reg_exp = "#^[a-zA-Z\s0-9_-]+$#";
    come postato da brodik. Ieri ho scritto che non funzionava, poi mi sono accorto di un altro bug che faceva fallire tutte le prove ( e già solo trovarlo mi ci è voluto un sacco di tempo ). Risolto quello ho provato le espressioni e l'unica che sul campo ha funzionato è stata quella di brodik.

    Grazie a tutti per l'aiuto, è stato veramente indispensabile!

    Brodik posso chiederti di spiegarmi nel dettaglio l'espresisone che mi hai segnalato? Devo ammettere che ho cercato per giorni di farne una funzionante, ma ho scoperto di avere notevoli difficoltà nel capire le espressioni regolari...
    Step 1: Go to any youtube video.
    Step 2: While the video is playing or being paused whatever, at the center or (anywhere in the video) left click on your mouse and hold it.
    Step 3: Now, press and hold left arrow key on your keyboard.
    Step 4: Now, press the up arrow key.

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    ^ deve iniziare con (quello indicato dopo)
    [ inizio set di caratteri
    a-zA-Z\s0-9_- una tra lettere minuscole, maiuscole dalla A alla Z, numeri da 0 a 9, spazi, _ e -
    ] fine set di caratteri
    + il precedente è presente una o più volte
    $ finisce con (quell indicato prima)
    eXvision

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