Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyrażenie regularne
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mam taki ciąg
Kod
START bla bla bla END inneblabla inneblabla

Chcę zamienić wszystko między START a END na coś innego, włącznie ze START i END.
No to piszemy proste wyrażenie:
  1. $text = 'START bla bla bla END inneblabla inneblabla';
  2. $text2 = preg_replace('/^START\s.*?\sEND/','#zamienione#',$text);
  3. echo $text2;

W rezultacie otrzymamy:
Kod
#zamienione# inneblabla inneblabla

Proste.
Sprawa się komplikuje, gdy pomiędzy START i END włożym podSTART i pod END
Kod
START bla bla bla START blablaW END bla3 END inneblabla inneblabla

W wyniku naszego wyrażenia otrzymamy
Kod
#zamienione# bla3 END inneblabla inneblabla

A powinniśmy otrzymać to samo co w pierwszym przypadku.
No to powiecie: zamien .*? na .* i po sprawie. No nie do końca, bo jest jeszcze jeden przypadek, ze START i END pojawi nam się też rownożędnie do pierwszego, czyli np:
Kod
START bla bla bla START blablaW END bla3 END inneblabla START ccc xxx END inneblabla

Zrobie .* da nam
Kod
#zamienione# inneblabla

a mi chodzi, by uzyskac
Kod
#zamienione# inneblabla START ccc xxx END inneblabla


Podsumowując:
ma być zamienione tylko pierwsze główne START END, nawet jeśli ma w sobie inne START END, ale nie można już ruszych późniejszych START END
Idzie to zrobić wyrażeniem regularnym?
Go to the top of the page
+Quote Post

Posty w temacie
- nospor   wyrażenie regularne   28.09.2010, 07:57:31
- - kreciko   Musisz w środku tego wyrażenia dodać bardzo podobn...   28.09.2010, 08:18:58
- - nospor   Juz myslalem ze bedzie dobrze ale nie [PHP] pobier...   28.09.2010, 08:25:06
- - kreciko   [PHP] pobierz, plaintext $text2 = preg_replace...   28.09.2010, 09:06:58
- - nospor   kreciko ale wowczas łyknie też tego ostatniego END...   28.09.2010, 09:08:07
- - wookieb   preg_replace_callback i trochę rekurencyjnych wywo...   28.09.2010, 09:08:45
|- - kreciko   Cytat(wookieb @ 28.09.2010, 10:08:45 ...   28.09.2010, 09:33:09
- - nospor   CytatNie możesz się posługiwać operatorami kontrol...   28.09.2010, 09:12:44
- - wookieb   "?" to operator leniwego wybierania znak...   28.09.2010, 09:14:24
- - nospor   To ja wiem, pytam sie ciebie czy twoj ostatni post...   28.09.2010, 09:17:04
- - wookieb   Stwierdzenie, że nie możesz go używać   28.09.2010, 09:19:56
- - nospor   why, wookieb why?   28.09.2010, 09:24:26
- - wookieb   Dobra może powiedz mi po co chcesz to zrobić? Wies...   28.09.2010, 09:30:20
- - nospor   CytatDobra może powiedz mi po co chcesz to zrobić?...   28.09.2010, 09:33:16
- - wookieb   Cytat(nospor @ 28.09.2010, 10:33:16 )...   28.09.2010, 09:35:29
- - nospor   Taką jak opisałem. Obszedłem to troszke i mam roz...   28.09.2010, 09:39:55
- - Noidea   @nospor Twój kod sypnie się, jeśli START END będzi...   28.09.2010, 10:58:07
- - nospor   Cytatwój kod sypnie się, jeśli START END będzie za...   28.09.2010, 11:25:29
- - Noidea   Ogólnie to: 1: Dopasuj START 2: Najpierw spróbuj d...   28.09.2010, 11:25:42
- - nospor   CytatNo ty w swoich kwiatkach też masz wyrażenia r...   28.09.2010, 11:36:10
- - Methestel   Chcesz robić walidacja poprawności tekstu (czy lic...   28.09.2010, 14:15:09
- - nospor   Nie wiem jak bardzo trzeba po chinsku czytac by do...   28.09.2010, 18:49:23
- - Methestel   Nie doszedłem do takiego wniosku tylko zapytałem c...   28.09.2010, 20:01:39
- - nospor   CytatPrzepraszam, że chciałem podzielić się doświa...   28.09.2010, 20:08:18
- - Methestel   Nie będe   28.09.2010, 20:09:52


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:49