Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    sostituire qualunque tag in string

    Salve, ho una stringa:
    $string="testo testo testo <titolo>testo</titolo> testo testo testo testo ";

    quindi all'interno ci sono tag xml, vorrei sostituire qualunque tag con uno <span> o un <p>.
    Come fare?

  2. #2
    Se il testo è semplice, ovvero se non ci sono tag annidati, puoi usare qualcosa tipo:

    Codice PHP:
    $res preg_replace('/<(.*?)>(.*?)<\/\1>/','<p>\2</p>',$string);echo $res
    questa cosa non funziona con tag diversi annidati. In generale è sconsigliato manipolare xml con regular expression.

    Se sai quali sono i tag puoi semplicemente fare un replace

    Codice PHP:
    echo str_replace(array('<titolo>''</titolo>'),array('<p>','</p>'),$string); 
    da valutare anche l'ipotesi di uno strip_tags che ti cava via tutti i tags (http://php.net/manual/en/function.strip-tags.php)

    Altrimenti usa delle funzioni apposite per parsare una html, tipo http://php.net/manual/en/class.domdocument.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    non sono annidati.
    i tag però sono buttati lì immezzo al testo, quindi non posso semplicemente tagliarli, generalmente rappresentano i titoli dei paragrafi che devo evidenziare in qualche modo.
    Non posso usare strp-tags, uso il tuo preg_replace? anche a me non sembra molto pulita la soluzione, ma se non c'è di meglio mi va bene..

  4. #4
    Dovrebbe funzionare... non garantisco

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    quindi quel \2 dovrebbe essere il secondo (.*?) trovato nella regex?

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    ho provato ad usare questa cosa per recuperare href e testo dei link, sono vuoti entrambi i valori
    codice:
    preg_replace("/<a href=\"(.*?)\">(.*?)<\/a>/i", "<p>\1 -- \2</p>",$str);

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    con questa riesco a prelevare l'href, ma se provo ad aggiungere il tag di chiusura link </a>, anche con l'escape, non funziona

    funziona
    codice:
    preg_replace('/<a href="(.+)">/','--\1--', $str);
    non funziona
    codice:
    preg_replace('/<a href="(.+)">(.+)<\/a>/','--\1--\2--', $str);

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.