Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35

    sintassi espressioni regolari

    ciao a tutti, ho un piccolo problemino.

    Qualcuno può gentilmente spiegarmi il significato di /^ all'inizio dell'espressione e / alla fine?

    io conosco l'escape \ ma non trovo niente a riguardo di /.

    il codice è il seguente:
    Codice PHP:
    preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email
    grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    / all'inizio e alla fine stanno lì per come è definita la funzione preg_match, il pattern è previsto che inizi e finisca con /, ad esempio col vecchio ereg / non ci andavano, esempio per riconoscere la stringa php:
    preg_match("/php/",...
    ereg("php",...

    ^ è un ancoraggio e indica l'inizio di una stringa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    ah ok, è che ho provato a guardare anche qui preg-match.php ma nella sintassi non c'era. effettivamente negli esempi sotto (sempre nella pagina linkata)
    il pattern comincia e termina sempre con /

    senti, già che ci sono ne approfitto

    e in questo caso?
    Codice PHP:
    if (preg_match("/\bweb\b/i""PHP is the web scripting language of choice.")) 
    la i alla fine fa sempre parte della sintassi preg_match?

  4. #4
    la i indica una ricerca case-insensitive,in questo caso la parola 'web'.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35

    [risolto] sintassi espressioni regolari

    grazie per l'aiuto. problema risolto.


  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    purtroppo risolto un problema ne è saltato fuori un altro.

    preciso che chiedo dopo averci sbattuto la testa, aver letto a dx e a sx!

    come faccio a convalidare una stringa che contenga solo lettere minuscole, maiuscole, lo spazio e che abbia una lunghezza compresa tra 1 e 50?

    vi elenco anche i miei tentativi fallimentari purtroppo

    così restituisce TRUE quando la stringa contiene almeno una tra a-z, A-Z, "spazio". ma giustamente mi restituisce TRUE anche se la stringa contiene altri simboli e non va bene.
    Codice PHP:
    ereg('[a-zA-Z ]'$nome
    così invece funziona perché se trova un simbolo incriminato restituisce TRUE e la verifica fallisce.
    Codice PHP:
    ereg('[^a-zA-Z ]'$nome
    il problema sta nella verifica della lunghezza della stringa perché se metto {1,50} alla fine giustamente verifica che i caratteri incriminati (numeri e punteggiatura) siano tra 1 e 50 sbagliandomi la verifica. so che potrei usare un banale strlen() ma ho fatto 30...facciamo 31

    grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    35
    credo di aver trovato la risp la scrivo se può servire a qlc e per avere un parere sulla correttezza

    Codice PHP:
    ereg('^[a-zA-Z ]{5,50}$'$nome

  8. #8
    potresti provare così:
    <?php
    $stringa="tua stringa";
    $res=ereg("^([a-zA-Z0-9 ]+)$",$stringa,$arr);
    if($res)
    {
    if(strlen($stringa>=1)||strlen($stringa<=50))
    {
    echo"la stringa è valida e compresa tra 1 e 50 caratteri";
    }
    else{

    echo"la stringa è valida e ma non compresa tra 1 e 50 caratteri";
    }
    }
    else{
    echo"stringa non valida";
    }
    ?>

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.