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

    preg_match: Unknown modifier '|'

    ricevo questo errore su questa funzione in cui faccio il controllo sulla correttezza di un numero di telefono:

    Codice PHP:
    function IsTelephoneNumber$valore ){
        return 
    preg_match("/^(\+39)?(\s)?[0-9]{1,4}(/|-|\\)?[0-9]{3,13}$/",$valore);

    ma il simbolo | non dovrebbe avere la funzione di or? come faccio a dirglie che il separatore tra prefisso e numero deve essere uno di quei caratteri?






    Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si č completamente identificato con quello del suo padrone

  2. #2
    ah..nell'espressione regolare, in questo pezzo: (/|-|\) i backslash sono 2...il forum me ne tronca uno



    ma non si potrebbe fare una correzione in modo che se gli slash sono nel codice non li tronca?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si č completamente identificato con quello del suo padrone

  3. #3
    la cosa belle ( cioč che mi fa inca**are ) č che la stessa preg se la testo con un software ( regex coach ) funziona come vorrei...č nel momento in cui la inserisco in una preg_match in php che dā problemi. Sto cercando in giro anche altre preg che facciano al caso mio, ma purtroppo non ne trovo, o se le trovo sono talmente banali da passarmi una roba del genere +323232323/2113213213213213232213232132132132123132132123 ...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si č completamente identificato con quello del suo padrone

  4. #4

    Re: preg_match: Unknown modifier '|'

    Originariamente inviato da 13manuel84
    ricevo questo errore su questa funzione in cui faccio il controllo sulla correttezza di un numero di telefono:

    Codice PHP:
    function IsTelephoneNumber$valore ){
        return 
    preg_match("/^(\+39)?(\s)?[0-9]{1,4}(/|-|\\)?[0-9]{3,13}$/",$valore);

    ma il simbolo | non dovrebbe avere la funzione di or? come faccio a dirglie che il separatore tra prefisso e numero deve essere uno di quei caratteri?






    Grazie mille!
    ti sei scordato il carattere di escape prima del forwardslash (dato che lo usi come delimitatore), mentre l'escape va messo 4 volte perche sia visto come carattere: (\/|-|\\\\)?
    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

    Re: Re: preg_match: Unknown modifier '|'

    Originariamente inviato da AnĒkin
    ti sei scordato il carattere di escape prima del forwardslash (dato che lo usi come delimitatore), mentre l'escape va messo 4 volte perche sia visto come carattere: (\/|-|\\\\)?
    č vero sul primo mi sono scordato! lol

    per il secondo...urco non pensavo di doverlo mettere addirittura 4 volte! Avevo provato con 3, ma poi mi sono fermato perché pensavo fosse assurdo

    se posso chiedertelo, perchč 4 volte? io pensavo addirittura che ne bastassero solo 2...uno inteso come carattere di escape e l'altro inteso come carattere vero e proprio. Invece a quanto pare ne devo mettere uno anche davanti al carattere di escape (affinché venga interpretato correttamente?) e un altro davanti al carattere che voglio venga passato nella preg...

    ora che lo so vedrō di ricordarmelo! Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si č completamente identificato con quello del suo padrone

  6. #6
    mmm perchč 4 volte?
    boh, io ci sono arrivato facendo come te, provando prima con 2 poi con 3 poi con 4
    Il problema credo sia che la RE viene letta 2 volte come stringa: la prima volta i due escape diventano 1, la seconda volta la RE viene interpretata come regex quindi il motore incontra un escape + un carattere successivo e lo interpreta come carattere non speciale (tipo nel tuo caso una parentesi) e ti sputtana la RE. Quindi raddoppi e lo metti 4 volte.
    L'anomalia la vedi anche passando il numero di telefono:

    Codice PHP:
    echo IsTelephoneNumber('+39 06\\\\123456789') ;
    echo 
    IsTelephoneNumber('+39 06\\123456789') ; 
    cosa che non vale se la stringa arriva direttamente da form.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    ti ringrazio per la siegazione Anakin!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si č completamente identificato con quello del suo padrone

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.