Visualizzazione risultati 1 fino 8 di 8

Discussione: Problema regex e preg_match_all

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito Problema regex e preg_match_all

    Salve,
    ho una stringa contenente testo di questo tipo:

    Codice HTML:
    <a class="mia_img" href="http://sito.com/img.html"  title="Immagine 1"><i style="background-image: url(http://sito.com/img.jpg);"></i></a><a class="mia_img" href="http://sito.com/img2_album3.html"  title="Descrizione &quot;Immagine 2&quot;"><i style="background-image: url(http://sito.com/img2.jpg);"></i></a>
    Come faccio a recuperare il valore di href, background-image e title?

    Non riesco proprio. Ho usato le espressioni (.*) e (.+) e non funzionano, forse sono io che sbaglio ma purtroppo non ho potuto fare niente.

    Sono fuso con il cervello perchè sono 24h che sto senza internet e non riesco a cercare aiuto dal cellulare. Già scrivere questo post è stato problematico!

    Saluti,
    Michelangelo
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Basta una regexp di questo tipo:

    Codice:
    (href=\"|title=\"|url\()([^\)\"]+)(\)|\")
    $1 ti indicherà di che si tratta: se href, title o url
    $2 sarà il valore di quei campi.

    Ricorda di usare un preg_match_all per recuperare tutte le occorrenze della stringa esaminata.



    Good Luck!

  3. #3
    Guest

    Predefinito

    Per href: href="(.*?)" e prendi $1
    Per background-image: background-image: (.*?); oppure background-image: url\((.*?)\); e prendi $1
    Per title: title="(.*?)" e prendi $1

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Putroppo i link non sono statici. Cioè tra href e title o prima di entrambi posso aggiungersi altri campi che non m'interessano tipo "name", "id" o altro.

    Come faccio?
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    Guest

    Predefinito

    Come ti ho scritto, non ha importanza come è la stringa di origine.

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    No, scusami ma non capisco. Se capita qualche carattere in più come faccio?

    Cioè mi potresti dare la regex da inserire in preg_match_all?
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    No, scusami ma non capisco. Se capita qualche carattere in più come faccio?

    Cioè mi potresti dare la regex da inserire in preg_match_all?

    Ti sono state fornite: c'è sia la mia nella mia prima replica che quelle di simpleticket in rosso nei suoi post.
    La differenza è che per quelle di simpleticket devi usare 3 preg_match_all differenti, ognuno col pattern specificato.

    Con la mia regexp basta un unico preg_match_all.


    Diverse soluzioni al problema ti sono state fornite insomma, a te applicarle ;-)

  8. #8
    Guest

    Predefinito

    Usando il pattern proposto da blackbos:

    con il codice

    Codice PHP:
    <?php
    $s
    = '<a class="mia_img" href="http://sito.com/img.html" title="Immagine 1"><i style="background-image: url(http://sito.com/img.jpg);"></i></a><a class="mia_img" href="http://sito.com/img2_album3.html" title="Descrizione &quot;Immagine 2&quot;"><i style="background-image: url(http://sito.com/img2.jpg);"></i></a>';
    $p = '/(href=\"|title=\"|url\()([^\)\"]+)(\)|\")/s';

    preg_match_all($p, $s, $info);

    echo
    "<pre>";
    print_r($info);
    echo
    "</pre>";
    ?>
    Ottieni:

    Codice:
    Array
    (
        [0] => Array
            (
                [0] => href="http://sito.com/img.html"
                [1] => title="Immagine 1"
                [2] => url(http://sito.com/img.jpg)
                [3] => href="http://sito.com/img2_album3.html"
                [4] => title="Descrizione "Immagine 2""
                [5] => url(http://sito.com/img2.jpg)
            )
    
        [1] => Array
            (
                [0] => href="
                [1] => title="
                [2] => url(
                [3] => href="
                [4] => title="
                [5] => url(
            )
    
        [2] => Array
            (
                [0] => http://sito.com/img.html
                [1] => Immagine 1
                [2] => http://sito.com/img.jpg
                [3] => http://sito.com/img2_album3.html
                [4] => Descrizione "Immagine 2"
                [5] => http://sito.com/img2.jpg
            )
    
        [3] => Array
            (
                [0] => "
                [1] => "
                [2] => )
                [3] => "
                [4] => "
                [5] => )
            )
    
    )

Regole di scrittura

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