Visualizzazione risultati 1 fino 24 di 24

Discussione: Espressioni regolari (per controllo input)

  1. #1
    Guest

    Predefinito Espressioni regolari (per controllo input)

    Salve

    Sto cercando di creare una espressione regolare per controllare 2 input text
    dove viene inserito

    1 titolo es: Il mio sito
    2 descrizione: Descrizione del mio sito

    ed evitare l'inserimento di caratteri tipo

    &, <, >, %, etc..

    come posso fare

    ho fatto questo:
    Codice PHP:
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    ma non mi funziona...
    Qualche aiuto

  2. #2
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Ciao, mi sembra corretto. Puoi fare esempi di titoli che stai provando?
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    Ciao, mi sembra corretto. Puoi fare esempi di titoli che stai provando?
    allora questo è lo script

    Codice PHP:
    $result = eregi("^(http|https)\:\/\/([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(.[a-z]{2,3}[\/])$",$iweb);
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = eregi("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);
    if( (
    $result == false) and ($result1 == false) and ($result2 == false) ) {

    echo
    " messaggio errore ";

    exit();


    }

    else{

    #continua
    ho inserito ad esempio

    TITOLO: Titolo sito &
    DESCRIZIONE: Descrizione sito &


    ma non si blocca.

  4. #4
    Guest

    Predefinito

    preg_match()? eregi() è deprecata.

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    preg_match()? eregi() è deprecata.
    al posto di ergi ?

    ho provato prima.... e non va... ???

    ma ora riprovo

    Edit:

    In questo modo:

    Codice PHP:
    $result = preg_match("^(http|https)\:\/\/([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(.[a-z]{2,3}[\/])$",$iweb);
    $result1 = preg_match("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = preg_match("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);
    if( (
    $result == false) and ($result1 == false) and ($result2 == false) ) {

    echo
    " messaggio errore ";

    exit();


    }

    else{

    #continua

    mi blocca sempre ????
    Ultima modifica di pixalinks : 03-11-2009 alle ore 14.21.19

  6. #6
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Mancano i delimitatori !

    In breve:
    Codice PHP:
    $result = preg_match("/^(http|https)\:\/\/([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(.[a-z]{2,3}[\/])$/",$iweb);
    $result1 = preg_match("/^([:/~a-zA-Z0-9_\-\.]{,80})$/", $titolo);
    $result2 = preg_match("/^([:/~a-zA-Z0-9_\-\.]{,250})$/", $descriz);
    if( (
    $result == false) and ($result1 == false) and ($result2 == false) ) {

    echo
    " messaggio errore ";

    exit();


    }

    else{

    #continua
    Leggi qui:
    http://php.net/manual/en/book.pcre.php

    Saluti!

  7. #7
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    A parte la questione di usare eregi o preg_match... Ci sono degli escape messi a casaccio:
    -> \: cerca \: , non : !
    -> nella preg_match devi fare l'escape di TUTTI gli / con \/ (non l'hai fatto con tutti)
    -> manca l'escape all'ultimo punto della prima riga: dev'essere (\.[a-z]{2,3}[\/])
    -> (qui è facoltativo) se usi eregi è inutile che scrivi a-zA-Z ! basta a-z (oppure per distinguerli usi ereg al posto di eregi)

    eregi
    Codice PHP:
    $result = eregi("^(http|https)://([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(\.[a-z]{2,3}/)$",$iweb);
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = eregi("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);
    preg_match
    Codice PHP:
    $result = preg_match("/^(http|https):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,3}\/)$/",$iweb);
    $result1 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,80})$/", $titolo);
    $result2 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,250})$/", $descriz);
    PS: (http|https) si può scrivere anche (https?)
    Ultima modifica di ageofempiresgif : 03-11-2009 alle ore 15.28.15
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    A parte la questione di usare eregi o preg_match... Ci sono degli escape messi a casaccio:
    -> \: cerca \: , non : !
    -> nella preg_match devi fare l'escape di TUTTI gli / con \/ (non l'hai fatto con tutti)
    -> manca l'escape all'ultimo punto della prima riga: dev'essere (\.[a-z]{2,3}[\/])
    -> (qui è facoltativo) se usi eregi è inutile che scrivi a-zA-Z ! basta a-z (oppure per distinguerli usi ereg al posto di eregi)

    eregi
    Codice PHP:
    $result = eregi("^(http|https)://([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(\.[a-z]{2,3}/)$",$iweb);
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = eregi("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);
    preg_match
    Codice PHP:
    $result = preg_match("/^(http|https):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,3}\/)$/",$iweb);
    $result1 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,80})$/", $titolo);
    $result2 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,250})$/", $descriz);
    PS: (http|https) si può scrivere anche (https?)


    Gli esempi riportati sono corretti ..... ??

    così li provo.
    ciao

  9. #9
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Citazione Originalmente inviato da pixalinks Visualizza messaggio
    Gli esempi riportati sono corretti ..... ??

    così li provo.
    ciao
    ovvio, sennò non li mettevo :P
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    ovvio, sennò non li mettevo :P
    Scusami ma usando

    Codice PHP:

    $result
    = preg_match("/^(https?):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,3}\/)$/",$iweb);
    $result1 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,80})$/", $titolo);
    $result2 = preg_match("/^([:\/~a-zA-Z0-9_\-\.]{,250})$/", $descriz);

    if( (
    $result == false) and ($result1 == false) and ($result2 == false) ) {
    si dovrebbe bloccare se uno dei tre $result nell' if è falso, o no ..?

  11. #11
    Guest

    Predefinito

    No, perchè usi and e non or.
    Codice PHP:
    if(!$result || !$result1 || !$result2)
    {

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    No, perchè usi and e non or.
    Codice PHP:
    if(!$result || !$result1 || !$result2)
    {
    Codice PHP:
    if( ($result == false) || ($result1 == false) || ($result2 == false) ) {
    non funziona lo stesso... ??

    AIUTOOOOO

    Per essere più chiaro io devo permettere questi inserimenti

    1 http://www.miosito.com/ con solo slach finale. http://www.miosito.com NON CONSENTITO

    2 titolo: es Titolo sito. NON PERMETTERE &,%,$,<,>,/
    3 descrizione: STESSA COSA DEL TITOLO
    Ultima modifica di pixalinks : 03-11-2009 alle ore 15.58.24

  13. #13
    Guest

    Predefinito

    Ma pixalinks ti ho scritto il codice, perchè non utilizzi quello che ti ocnsigliano? E' inutile scrivere == false quando è la stessa cosa di scrivere !$var.

    In ogni caso se non funziona ci sarà qualche errore nell'espressione regolare che non ti dico perchè non le conosco...

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Ma pixalinks ti ho scritto il codice, perchè non utilizzi quello che ti ocnsigliano? E' inutile scrivere == false quando è la stessa cosa di scrivere !$var.

    In ogni caso se non funziona ci sarà qualche errore nell'espressione regolare che non ti dico perchè non le conosco...
    Scusami Ho provato con !$result ma non va lo stesso...

    Accidenti è un giorno che sono bloccato per queste espressioni

    Nessuno sa aiutarmi.... perfavore

  15. #15
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    xkè non fai un bell' echo di result result1 e result2 per vedere se funzionano?
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    xkè non fai un bell' echo di result result1 e result2 per vedere se funzionano?
    Codice PHP:
    <?php

    $iweb
    ="http://www.prova.it/";
    $titolo ="Titolo";
    $descriz ="Descrizione";

    $result = eregi("^(http|https)://([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(\.[a-z]{2,3}/)$",$iweb);
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = eregi("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);

    if(!
    $result || !$result1 || !$result2) {



    echo
    "errore";

    }

    else{
    echo
    "$result";
    echo
    "$result1";
    echo
    "$result2";
    }


    ?>
    mi da errore..

  17. #17
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Codice PHP:
    $result = eregi("^(http|https)://([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+)(\.[a-z]{2,3}/)$",$iweb);
    $result1 = eregi("^([:/~a-zA-Z0-9_\-\.]{,80})$", $titolo);
    $result2 = eregi("^([:/~a-zA-Z0-9_\-\.]{,250})$", $descriz);

    if(
    $result) echo "true<br>";else echo "false<br>";
    if(
    $result1) echo "true<br>";else echo "false<br>";
    if(
    $result2) echo "true<br>";else echo "false<br>";
    Ultima modifica di ageofempiresgif : 03-11-2009 alle ore 16.39.49
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  18. #18
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Ma stampa direttamente tutti i risultati senza alcuna condizione. Tanto eregi e preg_match ritornano un valore boleano (true o false)

    Io ti consiglio di inserire error_reporting(E_ALL); a inizio pagina almeno ti fornisce maggiori informazioni !

    Saluti!

  19. #19
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Per il link puoi lasciare questo perchè funziona:
    Codice PHP:
    $result = preg_match("/^(https?):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,4}\/)$/",$iweb);
    per il titolo e l'altro devi scrivere così:
    Codice PHP:
    $result1 = preg_match('/^[a-z0-9\.\_\-]{3,80}$/i', $titolo);
    $result2 = preg_match('/^[a-z0-9\.\_\-]{3,250}$/i', $descriz);
    if(!
    $result || !$result1 || !$result2){
    echo
    "errore";
    }
    else{

    }
    io ho fatto alcune prove e funziona, provalo tu.
    Ultima modifica di andreafallico : 03-11-2009 alle ore 16.44.06

  20. #20
    Guest

    Predefinito

    [QUOTE=andreafallico;696008]Per il link puoi lasciare questo perchè funziona:
    Codice PHP:
    $result = preg_match("/^(https?):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,4}\/)$/",$iweb);
    per il titolo e l'altro devi scrivere così:
    Codice PHP:
    $result1 = preg_match('/^[a-z0-9\.\_\-]{3,80}$/i', $titolo);
    $result2 = preg_match('/^[a-z0-9\.\_\-]{3,250}$/i', $descriz);
    if(!
    $result || !$result1 || !$result2){
    echo
    "errore";
    }
    else{

    }
    Grazie Andrea siamo a buon punto ma come faccio per poter permettere gli spazi al titolo e descrizione

    Grazie tanto

    Risolto tutto
    Grazie a tutti ed in particolare ad Andrea " \s " per consentire lo spazio
    Ultima modifica di pixalinks : 03-11-2009 alle ore 17.16.38

  21. #21
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Devi scrivere così:
    Codice PHP:
    $result1 = preg_match('/^[a-z0-9\.\_\-\s]{3,80}$/i', $titolo);
    $result2 = preg_match('/^[a-z0-9\.\_\-\s]{3,250}$/i', $descriz);

  22. #22
    Guest

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Devi scrivere così:
    Codice PHP:
    $result1 = preg_match('/^[a-z0-9\.\_\-\s]{3,80}$/i', $titolo);
    $result2 = preg_match('/^[a-z0-9\.\_\-\s]{3,250}$/i', $descriz);
    Già fatto
    Grazie tante dell'aiuto

    Era molto importante in quanto i dati inseriti andranno a formare anche gli <item> del Feed rss e la presenza di caratteri tipo $ & < > etc etc sarebbe stato un problema.

    Grazie

  23. #23
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Invece per il link hai inserito quello che ho scritto io?
    Cioè questo:
    Codice:
    $result = preg_match("/^(https?):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,4}\/)$/",$iweb);
    perchè prima avevi scritto 3, invece lo devi sostituire con 4(quello evidenziato) perchè per esempio un url composto così http://sito.info/ per quella espressione non è valido.

  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Invece per il link hai inserito quello che ho scritto io?
    Cioè questo:
    Codice:
    $result = preg_match("/^(https?):\/\/([:\/~a-zA-Z0-9_\-\.]+)\.([:\/~a-zA-Z0-9]+)(\.[a-z]{2,4}\/)$/",$iweb);
    perchè prima avevi scritto 3, invece lo devi sostituire con 4(quello evidenziato) perchè per esempio un url composto così http://sito.info/ per quella espressione non è valido.
    Si ho scritto 4

    grazie ancora

    ciAO

Regole di scrittura

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