Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    rimuovere da una stringa alcuni tag e contenuti

    Premetto subito che non mi occorre strip_tags ma qualcosa più potente.

    In una stringa html devo eliminare tutti i tag (compreso IMG) e i relativi contenuti.
    Tuttavia di alcuni tag:

    ,[b],[i] e <u> devo mantere il contenuto.

    Vi faccio una esempio:

    $string = "

    Che bella giornata> è oggi.


    Guardate che foto: [img]#[/img]</p>";


    dovrei ottenere questo: "Che bella giornata è . Guardate che foto";

    Qualche suggerimento?
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143

    Re: rimuovere da una stringa alcuni tag e contenuti

    Originariamente inviato da gasmor
    Premetto subito che non mi occorre strip_tags ma qualcosa più potente.

    In una stringa html devo eliminare tutti i tag (compreso IMG) e i relativi contenuti.
    Tuttavia di alcuni tag:

    ,[b],[i] e <u> devo mantere il contenuto.

    Vi faccio una esempio:

    $string = "

    Che bella giornata> è oggi.


    Guardate che foto: [img]#[/img]</p>";


    dovrei ottenere questo: "Che bella giornata è . Guardate che foto";

    Qualche suggerimento?
    Mi sa che invece ti serve proprio strip_tags

  3. #3
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    Re: Re: rimuovere da una stringa alcuni tag e contenuti

    Originariamente inviato da kiboo
    Mi sa che invece ti serve proprio strip_tags
    ti dico che non mi è sufficiente.
    Magari posso usarla alla fine per ripulire il codice
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143

    Re: Re: Re: rimuovere da una stringa alcuni tag e contenuti

    Originariamente inviato da gasmor
    ti dico che non mi è sufficiente.
    Magari posso usarla alla fine per ripulire il codice
    E allora devi stabilire una logica e crearti un'espressione regolare.
    E poi usi strip_tags.

  5. #5
    Prova con questo:

    Codice PHP:
    $stringa=@preg_replace('#<(.*?)>#i','',$stringa

  6. #6
    Forse che il tuo problema sia recuperare anche il testo dentro agli attributi?

    Es: da [img]xyz.pgn[/img] dovrebbe estrarre "questo testo" ?

    Sennò, perchè dici che strip_tags non ti basta?
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #7
    A me la domanda sembrava chiara
    • alcuni tag vanno eliminati completamente, sia i tag che il loro contenuto (non attributi, contenuto)
    • per altri va rimosso il tag ma mantenuto il contenuto

    e' evidente che nessuna delle soluzioni suggerite e' applicabile, ora pero' non ho tempo per proporne una.

  8. #8
    In effetti non avevo letto l'esempio dentro il tag <a></a> che viente eliminato..

    Bè dovresti fare più di una regex..solo che non sono ferratissimo in materia

  9. #9
    Se quello che vuoi è intercettare tutto il testo che un file php potrebbe produrre in output devi:

    - estrarre i testi da tutte le parti di puro htlm strippando via i tag con regexp o altri sistemi, e questo è facile.

    - per le porzioni php il discorso è molto più complesso:
    dovresti parsare il codice cercando apertura e chiusura delle stringhe, tenendo conto di apici singoli e doppi, ma anche di apici inseriti nelle stringhe stesse, eventualmente preceduti da backslash.
    E'un lavoraccio.
    Nè temo che una espressione regolare possa aiutarti.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  10. #10
    codice:
    $string = '
    
     Che bella giornata> è oggi.
    	
    
    	Guardate che foto: [img]#[/img]</p>';
    
    // elimina i tag 
    
     <u> [i] [b] ma mantieni il contenuto
    $string = preg_replace('#</?[uipb]>#', '', $string);
    
    // elimina tutti gli altri tag con apertura e chiusura, compreso il contenuto
    $string = preg_replace('#<(\S+).*?</\1>#', '', $string);
    
    // elimina tutti gli altri tag rimasti (quelli singoli come 
    )
    $string = strip_tags($string);
    
    echo $string;
    ovviamente da usare con cautela, usare le espressioni regolari con l'HTML e' un lavoro insidioso. Ah, questo esempio non elimina i vari a capo, non ho capito se era necessario.

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.