Visualizzazione risultati 1 fino 3 di 3

Discussione: Problema regex con filter_input_array

  1. #1
    sneh non è connesso Neofita
    Data registrazione
    22-03-2015
    Messaggi
    8

    Predefinito Problema regex con filter_input_array

    Data una semplicissima regex: [a-zA-Z0-9_]{3,20}

    Codice PHP:
        $array = array(
            
    'text' => array(
                    
    'filter' => FILTER_VALIDATE_REGEXP,
                            
    'options' => array("regexp" => "[a-zA-Z0-9_]{3,20}")
                )
        );
        
    $i filter_input_array(INPUT_POST,$array); 
    Alla visualizzazione della var_dump mi ritorna bool(false)

    Se uso la regex /[a-zA-Z0-9_]{3,20}/ mostra la stringa completa ma senza alcun filtraggio

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,642

    Predefinito

    È il comportamento corretto in ambedue i casi.
    Con il codice che hai indicato viene restituito false e generato un warning:
    PHP Warning: filter_var(): Unknown modifier '{'
    Questo perché le due parentesi quadre vengono usate come delimitatori dell'espressione regolare (in PHP puoi usare diversi delimitatori, non solo /), e a seguire dovrebbero esserci i modificatori, ma ovviamente quello che segue non può essere interpretato come modificatore quindi l'espressione regolare è malformata.
    Nel secondo caso invece l'espressione regolare non presenta problemi di sintassi, e filter_input_array opera correttamente: restituisce false quando l'espressione regolare non viene soddisfatta, la stringa originale quando invece l'espressione regolare trova riscontro.
    Quale comportamento invece ti aspettavi?

  3. #3
    sneh non è connesso Neofita
    Data registrazione
    22-03-2015
    Messaggi
    8

    Predefinito

    Ah ho messo i delimitatori e ora funge meglio: #(^[a-zA-Z0-9_]{3,20})$# dato che volevo dai 3 ai 20 caratteri solo numerici o interi o _ grazie!
    Ultima modifica di sneh : 24-01-2017 alle ore 00.24.36

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •