Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    espressioni regolari: non capisco, viene soddisfatta e torna false

    ciao ... non capisco come mai non funzionino correttamente queste espressioni regolari...

    Codice PHP:
    function numeri($var){
        
    $result ereg("^[0-9]+$",$var);
        if (
    $result == false){
            return 
    false;
        }else{
            return 
    true;
        }

    con questa non mi effettua il controllo , mentre se l'espressiona la scrivessi cosi :

    "(^[0-9])+$"

    mi restituisce un valore, che è l'opposto di ciò che desidero...

    esempio :
    se $var="123456789" e la mia espressione "(^[0-9])+$"
    $result dovrebbe rrestituire true... perchè $var soddisfa la mia espressione. invece torna false.

    a questo punto potrei anche invertire i miei valori ma vorrei capire perchè ho dovuto mettere le () e perhcè torna false al posto di true.

    in più questa espresione lo copiata pari pari da un js che avevo creato e funziona alla grande.
    ci sono differenze nel dichiarare in js e in php?


    grazie

  2. #2
    A dire il vero la funzione che hai postato è corretta ...
    Codice PHP:
    $var="1230999";
    function 
    numeri($var){
        
    $result ereg("^[0-9]+$",$var);
        if (
    $result == false){
            return 
    false;
        }else{
            return 
    true;
        }
    }
    $a=numeri($var);
       
    var_dump($a);
    //ti stampa:bool(true) 

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    a me sembra corretta, il problema e che non me la prende

    forse sbaglio qualcosa che gira attorno alle mie espressioni!

    io ho un foglio php dove ci sono n funzioni... le mie funzioni per i controlli con le espressioni regolari...
    controllano email, numeri,caratteri, etc...

    la prima e la mail e funziona alla grande le altre sotto non molto ...
    nel senso che mi riportano un true e un false , ma in maniera errata e a volte riportano solo false o solo true...

    il foglio lo includo nella mia pagina principale in maniera da averle sempre disponibili!

    Codice PHP:
    include ("../../funzioni/controlli.php");
    //richamo i valori via post ...

    //controllo le espressioni
    if ( (empty($coddeb))||(empty($ragsoc))||(empty($indi))||(empty($city))||(empty($pro))||(empty($e_mail))||(empty($p_iva))||(empty($cfisc))||(empty($rifdebit))||(empty($numerofatture)) ){
         
    $reindirizzo_vuoti true;
    }
    //Verifiche integrità campi (FALSE=sbagliata | TRUE=giusta)
    if ($reindirizzo_vuoti == false){
        
        
    //MAIL
        
    $controllo_mail controllo_mail($e_mail);
        if (
    $controllo_mail){
            
    $mailControl true;
        }else{
            
    $mailControl false;
        }    

    //CITTA carattere
        
    $controllo_citta caratteri($city);
        if (
    $controllo_citta){
                
    $cittaControl true;
        }else{
                
    $cittaControl false;
        }

    //se trova errori redirect
    if ($reindirizzo_vuoti){
                
    header("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=si");
        }else if (!
    $mailControl){
                
    header ("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=mail");
            }else if (!
    $cittaControl){
                
    header("Location:../../index.php?id_user=$idget&pag=insdeb&pieni=cit"); 
    ovviamente nell'altra pagina riprendo le variabili in get e stampo l'avviso dove voglio!

    le mie espressioni sono queste

    Codice PHP:
    function controllo_mail($var_mail) {
        
    $result ereg("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)$",$var_mail);
        if(
    $result == false){
            return 
    false;
        }else{
            return 
    true;
        }
    }

    //controllo caratteri
    function caratteri($var){
        
    $result ereg("^[a-zA-Z]+$",$var);
        if (
    $result == false){
            return 
    false;
        }else{
            return 
    true;
        }

    se in citta lascio cosi la mia espressione qualunque cosa metto mi restituisce false.
    se metto le parentesi mi da false quando è giusta!
    non vedo l'errore ...
    grazie dell'aiuto

  4. #4
    function caratteri($var){
    $result = ereg("^[a-zA-Z]+$",$var);
    if ($result == false){
    return false;
    }else{
    return true;
    }
    }
    la funzione valida $var se essa è costituita da una o più occorreze dei caratteri da a-z e A-Z,prova ad eliminare gli eventuali spazi:

    Codice PHP:
    $city=trim($city); 

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    quando inserisco i campi non ci sono spazi...
    ma vale la pena provare!

  6. #6
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    scusate... ma questo?

    ) Warning: ereg() [function.ereg]: REG_BADRPT in D:\sviluppo\PHP_WORK\coeri3.0.1\funzioni\controlli .php on line 18
    Call Stack
    # Time Memory Function Location
    1 0.0160 223136 {main}( ) ..\inserimento_model.php:0
    2 0.0632 284256 provincia( ) ..\inserimento_model.php:98
    3 0.0633 284560 ereg ( ) ..\controlli.php:18

    un warning? sarà per la versione di php?
    io uso la 5.x.x mentre i test vengono fatti su 4.3.8

  7. #7
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Puoi usare anche ctype_alpha()

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  8. #8
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    Originariamente inviato da neroux
    Puoi usare anche ctype_alpha()
    intendi per prendere il singolo carattere e testarlo nel espressione?1

  9. #9
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da tapu
    intendi per prendere il singolo carattere e testarlo nel espressione?1
    No, invece di caratteri()

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  10. #10
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    hummm... ok , quindi ctype_alpha verifica se i caratteri sono alpha o numerici
    ed è un controllo che restituisce true o false ... quindi valido anche per cifre!
    grazie, domani provo

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.