Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    34

    problema con preg_match

    Salve,
    sto cercando di impiegare la seguente funzione per la convalida della username

    public static function validUserName($in_uname)
    {
    $in_uname = trim($in_uname);
    $min = UserManager::LEN_UNAME_MIN;
    $max = UserManager::LEN_UNAME_MAX;

    /**
    * Note that we have to escape the { since otherwise PHP
    * would interpret it as part of a variable expansion.
    */
    $pattern = "/[[:alnum:] _-]\{$min,$max}/";
    return preg_match($pattern, $in_uname);
    }
    Se utilizzo \ per l'escape $pattern è uguale a [[:alnum:] _-]\{8,50} e quindi mi resituisce false come se il valore di username fosse errato.
    Se invece non utilizzo \ per fare l'escape prima di {$min,$max} mi da un errore come se vedessa la graffa facente parte della funzione e non della variabile $pattern.
    Ho anche provato a togliere \ e utilizzare gli apici ' prima e dopo $min,$max, ma anche in questo caso $pattern non va bene perchè diventa [[:alnum:] _-]{'8,50'}.

    Non so proprio come risolvere il problema.

  2. #2
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Prova in questo modo:
    Codice PHP:
    $pattern '/^[[:alnum:] _-]{' $min ',' $max '}$/'
    Lo so che fa schifo ma non conosco altro modo

  3. #3
    Codice PHP:
    $pattern "/[[:alnum:] _-]{{$min},{$max}}/i";
    preg_match($pattern$in_uname$match); 

  4. #4
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Codice PHP:
    $pattern "/^[[:alnum:] _-]{{$min},{$max}}$/"
    preg_match($pattern$in_uname$match); 



  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    34
    codice PHP:

    $pattern = "/[[:alnum:] _-]{{$min},{$max}}/i";
    preg_match($pattern, $in_uname, $match);
    Grazie.

  6. #6
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Ti funziona la versione di Dascos? A me no, non effettua il controllo di lunghezza, da quello che ho visto.

  7. #7
    Originariamente inviato da _debo
    Ti funziona la versione di Dascos? A me no, non effettua il controllo di lunghezza, da quello che ho visto.

    Hum, a me una cosa così funziona
    Codice PHP:
    $min 5;
    $max 9;
    $in_uname "pip";
    $in_uname2 "pippo6";
    $pattern "/[[:alnum:] _-]{{$min},{$max}}/i";
    preg_match($pattern$in_uname$match);
    preg_match($pattern$in_uname2$match2);
    if (isset(
    $match[0]) and $match[0] !== ""){
        echo 
    "Primo match
    "
    ;
    } else {
        echo 
    "Primo NO match
    "
    ;
    }
    if (isset(
    $match2[0]) and $match2[0] !== ""){
        echo 
    "Secondo match
    "
    ;
    } else {
        echo 
    "Secondo NO match
    "
    ;

    Dovrebbe NON fare match sul primo e farlo sul secondo
    A te no?


  8. #8
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Codice PHP:
    $min 1;
    $max 3;
    $in_uname "pip";
    $in_uname2 "pippo6";
    $pattern "/[[:alnum:] _-]{{$min},{$max}}/i";
    preg_match($pattern$in_uname$match);
    preg_match($pattern$in_uname2$match2);
    if (isset(
    $match[0]) and $match[0] !== ""){
        echo 
    "Primo match
    "
    ;
    } else {
        echo 
    "Primo NO match
    "
    ;
    }
    if (isset(
    $match2[0]) and $match2[0] !== ""){
        echo 
    "Secondo match
    "
    ;
    } else {
        echo 
    "Secondo NO match
    "
    ;


  9. #9
    Hai ragione anche tu, ho dimenticato ^ e $
    Codice PHP:
    $pattern "/^[[:alnum:] _-]{{$min},{$max}}$/i"

  10. #10
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Lo so infatti te lo avevo corretto sopra...

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.