Domanda

I scrivere qualche semplice parser per la mia pagina e avere qualche problema con esso.

testo

HTML:

<p>some text</p><p>another text</p>

Se provo usare qualcosa come:

preg_split("#<p>#",$string);

Ho un risultato senza <p>, e questo è molto molto male. (Solo </p> esistere)

Forse posso dividere questa stringa di array, ma non rimuovere </p>?

È stato utile?

Soluzione

Proprio come Ivan ha detto, è necessario utilizzare (?=<p>). Volevo solo aggiungere che è possibile utilizzare

var $Paragraphs = array_filter(preg_split("/(?=<p>)/", "<p>some text</p><p>another text</p>"));

Quali saranno:

[1] => <p>some text</p>
[2] => <p>another text</p>

Altri suggerimenti

È possibile utilizzare questo (?=<p>) costrutto che è lookahead positivo larghezza zero asserzione . Questo modello non consumerà il testo corrisponde. E 'appena troverà la posizione prima della stringa <p>. Ecco esempio:

preg_split("#(?=<p>)#",$string);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top