Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PCRE] preg_match_all - Fraza w przeczeniu
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Witam.
Chciałbym wykorzystać w przeczeniu (^), nie pojedynczy znak tylko frazę.
  1. <?php
  2. $source = 'tak asdfafasf tak saafdafaf tak';
  3. $pattern = '#tak([^tak]*)tak#';
  4. preg_match_all($pattern, $source, $matches);
  5. var_dump($matches);
  6. ?>
Tak jak jest powyżej nie działa. Jak napiszę [^(tak)]* też nie działa.
Więc jak to zrobić ?

Ten post edytował orglee 9.01.2008, 15:37:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
starach
post
Post #2





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Ja wiem że można prościej w tym wypadku, ale ja podałem to tylko jako przykład,
ale i tak nie wiesz nawet jak się cieszę że ktoś odpowiedział :P
Chodzi o wielokrotnie zagnieżdżone tagi.

W manual'u PHP znalazłem taki komentarz użytkownika (http://pl.php.net/manual/pl/reference.pcre...yntax.php#78822)
  1. Dla przykładu, jeżeli chcecie wyciąć element <div>.
  2. Dokładnie, od <div> do odpowiadającego mu elementu </div>.
  3. <?
  4. $str = "<dqiv1>1+<div2>2+<div3><b><c>3</c></b></div3>2-</div2>1-</div1>";
  5.  
  6. preg_match("#<div.> ( ".
  7. " ( (?>[^<]*) ( < ( ([^/d]|d([^i]|i[^v])) | /([^d]|d([^i]|i[^v])) ) )? )* ".
  8.  " | (?R) )* </div.>#xi", $str, $m);
  9. var_dump($m[0]);
  10.  
  11. ?>
  12. Dobiera dokładnie od <div2> do </div2>. I, jeśli zmienicie <dqiv1> na <div1>, dopasuje on od <div1> do </div1>

Wszystko cacy, ale mam jeszcze problem ze zrozumieniem niektórych części wzoru odpowiedzialnego za pobranie tagów.
Mianowicie:
(?>[^<]*) - ???
(?R) ) - ???
I dlaczego po ( < ( ([^/d]|d([^i]|i[^v])) | /([^d]|d([^i]|i[^v])) ) ) jest znak zapytania ?
x - ? w manual'u napisali że ignoruje on spacje dzięki niemu, za wyjątkiem spacji w klasach znaków i poprzedzonych \ i znakiem nowej linii, ale pewien nie jestem więc prosiłbym o powiedzenie mi czy dobrze to rozumiem.
i - żeby olewał wielkość liter, to jeszcze wiem ( chyba :P )

Ten post edytował orglee 9.01.2008, 17:45:52
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: 11.10.2025 - 10:45