Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] problem z wyrażeniem regularnym
basstone
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 6
Dołączył: 20.12.2011

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


Witam

Próbuję za pomocą wyrażeń regularnych wyciągnąć treść znajdującą się pomiędzy tagami <b></b>, <strong></strong> oraz <i></i>. Moje wyrażenie wygląda tak:


  1. $wzorzec = '</^<[(b|strong|i|u)]+>[a-zA-Z0-9.\-]+</[(b|strong|i|u)]$/>'; // linia 63
  2. preg_match_all($wzorzec, $kodstrony, $tresc, PREG_PATTERN_ORDER); // linia 64


Na stronie wyrzuca mi błąd:
Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '[' on line 64

Czy ktoś mógłby mi wyjaśnić gdzie popełniam błąd? Czytam tutorial za tutorialem i nadal nie mogę dojść do ładu :/

Ten post edytował basstone 19.02.2012, 19:08:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Zastanów się w jaki sposób przekazujesz tą tablicę. Weź sobie to:

  1. echo "#(^$del,|,$del$)#";


i wyświetl to sobie, a się przekonasz jakie piękne wyrażenie dostajesz i dlaczego nie może zostać dopasowane.

Druga sprawa to jest taka że ciężko ci będzie stworzyć wyrażenie które się domyśli że to jest cały wyraz a nie tylko jego część. Raczej będziesz musiał szukać wyrazu który jest poprzedzony spacją i zakończony spacją lub kropką, lub przecinkiem. Czyli przewidywanie pozytywne.

Do preg_replace, można przekazać tablicę jako argument, ale nie w taki sposób jak ty to robisz.
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 08:35