Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne - wyraz poprzedzający i następny
Forum PHP.pl > Forum > Przedszkole
Dapi
Witam.

Próbuję napisać wyrażenie regularne, które przykładowo usunie mi pogrubione wyrazy, ale zostawi w spokoju wyrazy pogrubione i pochylone (z założeniem, że pochylenie będzie przed pogrubieniem => <i><b>Lorem ipsum</b></i>). Brzmi może zawile, dlatego mały przykładzik.

Przed:
aaabbbcccdddeeefff

Po:
aaacccdddfff

  1. $string1 = preg_replace("/(?![i\])[b\](.*?)[\/b\](?![\/i\])/si", '', $string);
  2. $string2 = preg_replace("/([i\]){0}([b\]){1}(.*?)([\/b\]){1}([\/i\]){0}/si", '', $string);

Ani jedno, ani drugie działa tak jak bym chciał, usuwając za dużo.

Jak powinno wyglądać poprawne wyrażenie, spełniające moje wymagania?

Pozdrawiam
lord2105
Proszę, ale na przyszłość pokombinuj sam...

  1. preg_replace('/(?!\[i\])(\[b\].*?\[\/b\])(?!\[\/i\])/', '', $string);
_Borys_
Kod
'/(?<!<i>)(<b>.*?<\/b>)(?!<\/i>)/si'
Dapi
lord2105, troszeczkę za szybko chciałem odpisać, że działa, ale niestety po testach jednak działa tak jak moje kody, czyli usuwa za dużo sad.gif
_Borys_, Twój kod działa dokładnie tak jak chcę, przynajmniej na razie wink.gif Reszta wyjdzie w praniu, ale miejmy nadzieję, że będzie dobrze smile.gif

Dzieki Wam obu
fate
_Borys_
Wytlumaczylbys edukacyjnie dlaczego 5 znak mianowice < jest tam potrzebny?
Na moje laickie spojrzenie jest jakby podwójnie ale bez tego nie działa jaknależy..

Dzieki
lord2105
Cytat(Dapi @ 25.08.2013, 00:00:08 ) *
lord2105, troszeczkę za szybko chciałem odpisać, że działa, ale niestety po testach jednak działa tak jak moje kody, czyli usuwa za dużo sad.gif
_Borys_, Twój kod działa dokładnie tak jak chcę, przynajmniej na razie wink.gif Reszta wyjdzie w praniu, ale miejmy nadzieję, że będzie dobrze smile.gif

Dzieki Wam obu


Usuwa za dużo to znaczy? Podaj swoją pełną wartość zmiennej string
_Borys_
Cytat(fate @ 25.08.2013, 09:56:13 ) *
_Borys_
Wytlumaczylbys edukacyjnie dlaczego 5 znak mianowice < jest tam potrzebny?
Na moje laickie spojrzenie jest jakby podwójnie ale bez tego nie działa jaknależy..

Dzieki

(?<!aaa)(bbb) - zamień bbb gdy aaa nie występuje przed bbb
How to Use Regular Expressions
fate
Dzieki
_Borys_
ogarnąłem.
+ dla tego Pana
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.