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

    [Espressioni regolari] aiuto per il riconoscimento di una stringa

    Ciao ragazzi, sto iniziando adesso ad utilizzare le espressioni regolari, e ho ancora molto da imparare. Avrei bisogno di estrarre due sottostringe da un testo del genere

    Codice PHP:
    $riga="<font face=\"Verdana\" size=\"1\">SottoStringa1
    SottoStringa2</font>" 
    così sto provando con alternative varie del comando
    Codice PHP:
    preg_match("/(size=\"1\">){1}(
    ){1}(<\/font>){1}/"
    ,$riga,$a); 
    ma il terzo parametro è sempre vuoto.
    Dove sbaglio?

    Praticamente volevo dirgli considerare come sottostringa1 quello che c'è tra size="1"> e
    e come sottostringa2 quello che c'è tra
    e </font>.

    Grazie mille!!!

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    quota, copia e incolla

    codice:
    <?php 
    $riga="<font face=\"Verdana\" size=\"1\">SottoStringa1
    SottoStringa2</font>";
    preg_match("/^[^>]+(.+?)
    (.+?)<\/font>$/",$riga, $matches);
    
    $matches[0] = str_replace("<", "&lt;", $matches[0]);
    $matches[0] = str_replace(">", "&gt;", $matches[0]);
    ?>
    
    <pre><code>
    <?php var_dump($matches); ?>
    </code></pre>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    grazie fcaldera, davvero!! Però mi sento tanto imbranato! Applicandola alla vera stringa (pensavo di poterne postare una semplificata per agevolarvi l'aiuto ma non mi funziona) non funziona più e non riesco ad adattarla nemmeno facendo le modifiche che penso potrebbero andare. La stringa reale è questa:

    Codice PHP:
    $riga="   <td align=\"center\" bgcolor=\"#ffffff\">[b]<font face=\"Verdana\" size=\"1\">SottoStringa1
    SottoStringa2</font>[/b]</td>"

    ci sto provando ma non riesco proprio! Perché?? Grazie della pazienza!!

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    in base alla stringa semplificata io cercavo la prima occorrenza del carattere '>', ma nella tua stringa completa l'espressione regolare non va più bene

    cambiala così
    codice:
    <?php 
    $riga="<td align=\"center\" bgcolor=\"#ffffff\"><font face=\"Verdana\" size=\"1\">SottoStringa1
    SottoStringa2</font></td>";
    preg_match("/^.+?size=\"1\">(.+?)
    (.+?)<\/font>/",$riga, $matches);
    
    $matches[0] = str_replace("<", "&lt;", $matches[0]);
    $matches[0] = str_replace(">", "&gt;", $matches[0]);
    ?>
    
    <pre><code>
    <?php var_dump($matches); ?>
    </code></pre>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    SEI UN GRANDE!!!!!!!!
    Ora me la studio un po' ma funziona perfettamente!!
    Grazie

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.