Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne - wyraz poprzedzający i następny
Dapi
post 24.08.2013, 11:54:29
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

Ostrzeżenie: (0%)
-----


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


--------------------
www.dapi.net.pl - Wiele technologii, jedna pasja.
Go to the top of the page
+Quote Post
lord2105
post 24.08.2013, 22:21:57
Post #2





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

Ostrzeżenie: (0%)
-----


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

  1. preg_replace('/(?!\[i\])(\[b\].*?\[\/b\])(?!\[\/i\])/', '', $string);


Ten post edytował lord2105 24.08.2013, 22:22:25


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
_Borys_
post 24.08.2013, 22:56:29
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


Kod
'/(?<!<i>)(<b>.*?<\/b>)(?!<\/i>)/si'
Go to the top of the page
+Quote Post
Dapi
post 24.08.2013, 23:00:08
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 13
Dołączył: 7.08.2009

Ostrzeżenie: (0%)
-----


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


--------------------
www.dapi.net.pl - Wiele technologii, jedna pasja.
Go to the top of the page
+Quote Post
fate
post 25.08.2013, 08:56:13
Post #5





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


_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


--------------------
Go to the top of the page
+Quote Post
lord2105
post 25.08.2013, 09:41:27
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

Ostrzeżenie: (0%)
-----


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


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
_Borys_
post 25.08.2013, 12:31:50
Post #7





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

Ostrzeżenie: (0%)
-----


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

Ten post edytował _Borys_ 25.08.2013, 12:39:53
Go to the top of the page
+Quote Post
fate
post 25.08.2013, 14:37:17
Post #8





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzieki
_Borys_
ogarnąłem.
+ dla tego Pana


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 7.05.2024 - 15:24