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
Necsord
post
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 60
Dołączył: 5.10.2010
Skąd: Bydgoszcz

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


Twoje wyrażenie regularne jest błędne ponieważ ciąg znaków typu:
costam <b> cos tam</b>
nie zaczyna się od < tylko od "costam".

  1. $testCases = array(
  2. '<b> costam </b>' => 'true',
  3. '<strong> costam </strong>' => 'true',
  4. '<i> costam </i>' => 'true',
  5. '<i> costam <strong> costam2 </strong> </i>' => 'true',
  6. 'costam<i>cos</i>costam' => 'true',
  7. 'costam <i>cos</i> costam' => 'true',
  8. 'costam <a>cos</a> costam' => 'false',
  9. 'costam <i></i> costam' => 'false', // bo puste
  10. );
  11. $pattern = '#<([b|strong|i])>(?<wartosc>.+)</\1>#';

Z uwagą, że to nie złapie zagnieżdżonych.
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: 6.10.2025 - 11:52