Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z wyrarzeniem regularnym
Forum PHP.pl > Forum > PHP
aki00
Chciałem z pomiędzy dwóch komentarzy w kodzie html wyciągnąć tekst za pomocą php i napisałem taki kod:

  1. <?php
  2. $plik = fopen("test.html", "r");
  3.  
  4. $dane = fread($plik, filesize('test.html'));
  5. preg_match_all("/<!-- edi:html -->(.*)<!-- edi:end -->/", $dane, $tekst);
  6. fclose($plik);
  7. ?>


niestety zmienna $tekst zawiera tylko puste tablice. nie wiem co tutaj mam źle. pomoże ktoś?
rybik
ściągnij program regex coach, pomoże w tym wyrażeniu i w kolejnych smile.gif
aki00
cos nie moge poradzic sobie z tym programem
JoShiMa
Może spróbuj

  1. <?php
  2. preg_match_all("/<!-- ed:html -->(.*?)<!-- ed:end -->/", $dane, $tekst);
  3. ?>


A jak zadziała to dowiedz sie jaka jest różnica między maksymalistycznymi i minimalistycznymi kwantyfikatorami.
aki00
tak juz probowalem i tez nie dziala
JoShiMa
A może slesze przed nawiasami kwadratowymi?
aki00
Jakimi nawiasami kwadratowymi?
JoShiMa
Takimi? < >

Chodziło mi oczywiście o trójkątne. laugh.gif
aki00
niestety nadal nic

a tak przy okazji to sa znaki mniejszoasci i wiekszosci winksmiley.jpg
JoShiMa
W tym zastosowaniu są to trójkątne nawiasy.

To może pokaż tek tekst, który przeczesujesz?
aki00
  1. <p>
  2. <!-- edit:html -->
  3. To jest tekst ;D
  4. <!-- edit:end -->
  5. </p>
Exek
Kod
preg_match_all("/<!-- ed:html -->(.*?)<!-- ed:end -->/s", $dane, $tekst);


Tutaj podaję listę flag, jakby ktoś chciał:

Kod
   i   Case-insensitive matching.
   m   ^ and $ match next to embedded \n.
   s   Dot (.) matches newline.
   x   Ignore whitespace, and allow comments (#) in pattern.
   U   Inverts greediness of all quantifiers: * becomes lazy, and *?
       greedy.
   A   Force match to start at beginning of subject string.
   D   Force $ to match end of string instead of before the string-
       ending newline. Overridden by multiline mode.
   u   Treat regular expression and subject strings as strings of
       multibyte UTF-8 characters.



EDIT:
Zmieniłem flagę w kodzie, nie zauważyłem że aki00 napisał odpowiedź, a nie chciałem już nowego posta tworzyć.
aki00
niestety to również nie pomaga
Shili
A powinno.
Podaj cały kod, który masz, który sprawdza wyrażenie regularne.

@edit
Ale to Joshima powinna dostać plusa, nie ja winksmiley.jpg
aki00
z flaga /s dziala bo wczesniej byla /m to mi nie dzialalo biggrin.gif
Exek
Tak, tak, sorki za zamieszanie, ostatnio regexpa używałem w javie a tam flaga m robi takie cuda winksmiley.jpg

Pomyłka, w javie też s tongue.gif
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.