Preg_match + enter w tekście

0

Witajcie,

Mam taki problem, chcę pobrać tekst za pomocą preg_match z pomiędzy znaczników

i

, wszystko jest ok dopóki w tekście po znaczniku

pojawia się enter.

<p>
Jakis tekst tekst tekst tekst
</p> 

A to mój wzór do preg_match

$pattern_d = '#<p>(.*)</p>#';
2

Normalnie, w wyrażeniach regularnych kropka dopasowuje wszystkie znaki OPRÓCZ znaków nowej linii, czyli \n i \r. Biblioteka PCRE obsługuje na szczęście opcję "DOT_ALL", którą można ustawić dodając modyfikator s (modyfikatory dodaje się na samym końcu wyrażenia regularnego, poza ogranicznikami, czyli u Ciebie poza drugim znakiem # musisz wstawić literkę s).

0

Pojawił się teraz taki problem, że pobiera mi wszystko do końca ,a nie kończy na znaczniku

. Dodam, że pomiędzy tekstem a znacznikiem </p> nie ma ani spacji, ani enteru. Koniec wygląda tak:
teksttekst.</p></p>
1

Wyłącz zachłanność operatora * wstawiając bezpośrednio za nim znak zapytania: ?.

Jeśli to Cię nie usatysfakcjonuje, wstaw najmniejszy przykładowy kod, który generuje ten problem. Chodzi o fragment kodu PHP oraz przykładowy tekst wejściowy -- najmniejszy (w miarę możliwości), w którym ten problem się pojawi. I opisz dokładnie co jest nie tak, tj. co powinno się dziać, a co się dzieje.

To wyrażenie nie może "pobierać wszystkiego do końca", musi się kończyć na znaczniku

. Z zachłannym operatorem * może najwyżej zatrzymać się na ostatnim znaczniku </p>, ale dopasowanie musi się w ten sposób kończyć.</p>
0

Działa, dzięki !

1 użytkowników online, w tym zalogowanych: 0, gości: 1