Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101

    Espressioni regolari: rilevare parole tra apici doppi

    Ciao a tutti,
    ho un piccolo problema con le espressioni regolari di PHP. Vorrei rilevare la presenza di testo tra apici doppi all'interno di una stringa. Qualcosa del tipo:

    $str = "ciccio \"pluto\" panza";
    if (ereg("??????",$str)) {
    echo "Rilevato";
    } else {
    echo "Non rilevato";
    }

    ho fatto diverse prove ma non ci sono riuscito. Il problema sta nel fatto che gli apici doppi sono un carattere speciale per PHP, infatti se voglio stamparli a video devono essere preceduti da \, ma \ è un carattere speciale per le espressioni regolari.
    Come risolvo il problema ? :master:

    Ringrazio in anticipo tutti coloro che mi risponderanno !

    Ciao
    Akito

  2. #2
    Prova con preg_match('#"(.+?)"#i', $string)
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  3. #3
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101
    Originariamente inviato da gm
    Prova con preg_match('#"(.+?)"#i', $string)
    Grazie, ho provato e rileva il testo correttamenete ma quando lo stampo a video mi aggiunge il carattere \ davanti ai caratteri ". E' un problema di sostituzione di caratteri speciali nelle stringhe PHP passate tramite chiamate GET.

    Ti spiego meglio cosa devo fare.
    Ho un file html con una form che ha un campo testo e un bottone di submit. Quando inserisco il testo da valutare e premo il bottone, i dati vangono mandati ad un file php contenente la funzione ereg o preg_match che rileva il testo, e restituisce sulla pagina web il testo così come l'ho inserito indicandomi se il rilevamento è andato a buon fine.

    Se nella richiesta HTML spedisco la stringa:

    ciccio="pluto"

    nell'url ho:

    http://localhost/nomefile.php?testo=...%3D%22pluto%22

    che è corretto ma quando stampo la variabile $_GET[testo] mi scrive nel browser:

    ciccio=\"pluto\"

    ora, forse sbaglio io, ma \" in PHP è un solo carattere (non 2) scritto in modo tale da far venire fuori solo " all'interno di una stringa racchiusa tra ", allora perchè quando scrivo:

    echo $_GET[testo];

    mi viene scritto:

    ciccio=\"pluto\"

    e non:

    ciccio="pluto"

    ?
    Se ho questo problema, come modifico l'espressione regolare ?

    Grazie infinite
    Akito

  4. #4

  5. #5
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101
    Originariamente inviato da daniele_dll
    esegui la funzion stripslashes sul testo

    www.php.net/stripslashes

    Grazie di tutto, ho risolto il problema.
    Posto il codice finale in PHP per chi avesse il mio stesso problema.


    $expreg = "^(<div)( id=\"[a-zA-Z0-9]+\")?( class=\"[a-zA-Z0-9]+\")?( style=\"[a-zA-Z0-9;./%!#\{\}\(\)\\]+\")?(>){1}$";
    $str = stripslashes($_GET["testo"]);
    if (ereg($expreg, $str )) {
    echo "

    Il dato inserito: ".$str." E' VALIDO !</p>";
    } else {
    echo "

    DATO NON VALIDO ! Valore: ".$str."</p>";
    }

    Questo codice rileva i seguenti tag HTML:
    <div>
    <div id="qualcosa">
    <div class="qualcosa">
    <div style="qualcosa">
    e tutte alcune combinazioni con gli attributi id, class, style assieme all'interno del div.

    Grazie
    Ciao

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.