preg_split kullanarak metin ayrıştırma ile ilgili sorunlar

2 Cevap php

Benim sayfa için bazı kolay ayrıştırıcı yazmak ve onunla bir sorunum var.

HTML metni:

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

Ben gibi bir şey kullanmak deneyin:

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

I <p> olmayan bir sonuç var ve bu çok çok kötü. (Sadece </p> var)

Belki diziye bu dize bölebilirsiniz, ama çıkarmayın </p>?

2 Cevap

Ivan dediği gibi, kullanmak gerekir (?=<p>). Sadece kullanabilirsiniz eklemek istedim

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

Olacak:

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

Bu yapıyı kullanabilirsiniz (?=<p>) hangi positive lookahead zero-width assertion. Bu deseni eşleşen metni tüketmek olmaz. Bu sadece <p> dizesi önce pozisyon bulacaksınız. Burada örnek:

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