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?![]()
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?![]()
Se il testo è semplice, ovvero se non ci sono tag annidati, puoi usare qualcosa tipo:
questa cosa non funziona con tag diversi annidati. In generale è sconsigliato manipolare xml con regular expression.Codice PHP:
$res = preg_replace('/<(.*?)>(.*?)<\/\1>/','<p>\2</p>',$string);echo $res;
Se sai quali sono i tag puoi semplicemente fare un replace
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)Codice PHP:
echo str_replace(array('<titolo>', '</titolo>'),array('<p>','</p>'),$string);
Altrimenti usa delle funzioni apposite per parsare una html, tipo http://php.net/manual/en/class.domdocument.php
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..![]()
quindi quel \2 dovrebbe essere il secondo (.*?) trovato nella regex?
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);
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
non funzionacodice:preg_replace('/<a href="(.+)">/','--\1--', $str);
codice:preg_replace('/<a href="(.+)">(.+)<\/a>/','--\1--\2--', $str);