[PHP] Wyrazenia regularne i znak nowej linii

[PHP] Wyrazenia regularne i znak nowej linii
Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
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...

M6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 374
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:

Kopiuj
$text=preg_replace("/\\[poczatek\\]([[:print:][:space:]]*?)\\[\\koniec\\]/i", "***\$1***", $text);
Adam Boduch
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11950
0

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

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
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).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.