Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    5

    preg_replace - eliminare tag HTML

    Ciao a tutti,
    mi sono appena iscritto a questo forum, finora lo seguivo in sola lettura. Spero che qualche esperto di PHP mi possa aiutare.
    Da assoluto neofito di PHP mi sono imbattutto in questo problema e non ne vengo fuori.
    Uno scritp PHP "esterno" (non creato da me) mi genera del contenuto dinamico. Lo script mi mette tutto il contenuto dinamico in una variabile, $contenuto, che stampo nel file prova.php con il comando echo $contenuto. Fin qui nulla di strano.
    Tra il contenuto generato dallo script ci sono alcuni tag html con del CSS inline: questi tag con CSS inline non comprendo da dove arrivino, perché aprendo tutti i file .php dello script, una decina circa, non si trovano dichiarati da nessuna parte.
    In sostanza, dovrei eliminare questi tag html prima dell'output nella pagina prova.php.

    In prova.php ho inserito il codice riportato qui sotto: la porzione di html che mi interessa eliminare è nella variabile $stringa con heredoc, poi ho usato preg_repleace per sostituire nella variabile di output $contenuto i tag html dichiarati in $stringa, che sono quelli generati dallo script e che vorrei eliminare semplicemente sostituendovi il contenuto di $vuota

    Codice PHP:
    <?php
    $vuota
    ' ';
    $stringa=<<<EOD
    <div style="border: 1px dashed #000000;"><span style="font-size: 12pt; background-color: #ffffff; color: #000000;">[b]Testo[/b].</span></div>
    EOD;
    $contenuto=preg_replace($stringa$vuota$contenuto);
    echo 
    $contenuto;
    ?>
    Ovviamente così non funziona. Qualcuno sa darmi una mano, anche con altri metodi, per eliminare questi benedetti tag html? Sì può eventualmente ottenere quel che mi serve con la funzione str_replace? Qualcuno sa dirmi come?
    Sono piuttosto disperato
    Grazie a chiunque mi vorrà aiutare.

  2. #2
    Vediamo se ho capito.
    Tu vorresti che, se la tua stringa di origine fosse
    codice:
    <div style="border: 1px dashed #000000;"><span style="font-size: 12pt; background-color: #ffffff; color: #000000;">Testo.</span></div>
    essa venisse trasformata in
    codice:
    <div><span>Testo.</span></div>
    giusto? Cioè tutto l'html originale ma senza "style"?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Io, per eliminare gli style userei quesra regex:

    #<(\w{1,4}).*style=[\'"].*[\'"].*(/>|>)#

    E come replace

    <$1 $2

    EDIT:
    Provato e corretto solo che non capisco perchè si ferma al primo match trovato

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    5
    Grazie ad entrambi per le risposte.
    @Dascos: vorrei eliminare tutti i tag dalla porzione di html che ho indicato, ossia div, span e strong: alla fine mi dovrebbe restare solo il testo puro e semplice contenuto in questi tag. So dell'esistenza della funzione strip_tags() ma non mi è utile, perché vorrei eliminare solo quei tag che ho indicato, e non tutti i tag div, span e strong generati dallo script nella pagina prova.php (lo script genera altri div e span con CSS inline nella pagina).

    @simo22 ti ringrazio del suggerimento, però non fa quel che servirebbe a me. Altri suggerimenti?

  5. #5
    Devi usare allora un ciclo while con preg_match come condizione e preg_replace nel corpo
    Ovviamente questo ciclo devi farlo sul dato grezzo che recuperi, prima di aggiungere il tuo codice html.


  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    5
    Devi usare allora un ciclo while con preg_match come condizione e preg_replace nel corpo
    Ovviamente questo ciclo devi farlo sul dato grezzo che recuperi, prima di aggiungere il tuo codice html.
    Grazie mille ancora. Proverò così

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.