[PHP] Wyrazenia regularne i znak nowej linii

0

Mam problem z zastepywaniem okreslonej frazy w PHP jezeli w tekscie znajduje sie znak nowej linii.

preg_replace($text, ' [poczatek] (.*) [koniec]', '');

Chodzi o zamiane tekstu ktory znajduje sie pomiedzy [poczatek] i [koniec]. Wszystko jest ok, gdy tekst znajdujacy sie pomiedzy nie zawiera znakow nowej linii - wowczas wyrazenie nie wykonuje sie. Na pewno jest jakas maska, ktora to omija, wiec prosze o pomoc...

0

Wydaje mi się iż ta funkcja ma zupełnie inne parametry, w innej kolejności. Efekt który chcesz uzyskać wykona poniższa funkcja:

$text=preg_replace("/\\[poczatek\\]([[:print:][:space:]]*?)\\[\\koniec\\]/i", "***\$1***", $text);
0

Dzieki dziala! Rzeczywiscie pomylilem parametry, ale tylko w posce - w programie pisalem poprawnie ;)

1

Faktyczna odpowiedź to taka, że . nie łapie każdego znaku, . jest równa [^\n] (czyli wszystko oprócz nowej linii). Można to wyłączyć przekazując flagę /s (czyli single-line lub dot-all).

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