Visualizzazione dei risultati da 1 a 6 su 6

Discussione: estrarre testo tra tag

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    estrarre testo tra tag

    Ho una stringa che contiene dei tag tipo l'html di una pagina web
    Ho bisogno di estrarre la porzione di tag + contenuto oppure il contenuto stesso....al fine di controllare se esiste un tag vuoto cioè senza contenuto ad esempio [S] [/S]
    Ho pensato:

    Codice PHP:
    $paragrafo="[C]corsivo[/C]";

    $dopo_apertura_tag=substr($paragrafo,3);        // rest corsivo[/C]  echo "
    dopo_apertura_tag ".$dopo_apertura_tag;
    $dopo_apertura_tag=strrev($dopo_apertura_tag);    // contrario -> ]C\[ovisroc
    echo "
    dopo_apertura_tag ".$dopo_apertura_tag;
    $prima_chiusura_tag=substr($dopo_apertura_tag,5);    // rest ovisroc  echo "
    prima_chiusura_tag ".$prima_chiusura_tag;
    $contenuto=strrev($prima_chiusura_tag);        // rest corsivo 
    Questo è corretto in caso di un solo tag, ma in questa generica situazione???

    Codice PHP:
    $paragrafo="[C]corsivo[/C]sadsdf sdfsdf sdfdsf [S]stringa sottolin[/S][G]grasetto[/G] esrset";

    preg_match('[[/[[A-Z]/].*/[//[A-Z]/]]',$paragrafo,$mth);
                echo 
    "
    "
    print_r($mth); 
    Testando preg_match mi dà l'errore
    No ending matching delimiter ']'
    e comunque.... è corretto l'utilizzo di qsta espressione????
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    dimenticavo.... la lunghezza dei tag è fissa, cioè il tag di apertura ha 3 caratteri mentre quello di chiusura ne ha 4, e all'interno dei tag c'è un numero di parole variabili, non predefinite ....

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    ... non è possibile o non è chiaro il problema.... ?

  4. #4
    prova così:

    preg_match("#\[[A-Z]\](.+)\[/[A-Z]\]#",$paragrafo,$mth);

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    Grazie!!!!
    Funziona nel caso ci sia un solo tag, ma nel caso in cui

    $sample = "[D]dddd[/D] [C]cccc[/C]";

    mi restituisce:

    Array ( [0] => [D]dddd[/D] [C]cccc[/C] [1] => dddd[/D] [C]cccc )

    invece dovrebbe essere:

    Array ( [0] => [D]dddd[/D] [C]cccc[/C] [1] => dddd [2] => cccc )

    o qualcosa del genere, in modo di avere gli elementi contenuti

    PS::: ma cosa significano i cancelletti ??? #

  6. #6
    prova a fare così allora:

    $prova = ereg_replace("#\[[A-Z]\]#","", $paragrafo);
    $prova = ereg_replace("#\[/[A-Z]\].+#", "", $paragrafo);

    dovrebbe rimanerti solo il testo nel tag ke vuoi dentro $prova

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.