Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_match ignorowanie spacji?
Forum PHP.pl > Forum > Przedszkole
help_mee
Witam.
Nie wiedziałem jak to nazwać sad.gif ale może lepiej wytłumaczę.

oto część strony
  1. <div class="smalltxt">Formularz 1 - </div>
  2. <span class="message">Wysłano</span>
  3. <div class="smalltxt">Formularz 2 - </div>
  4. <span class="message">Wysłano - z błędem (054)</span>
  5. <div class="smalltxt">Formularz 3 - </div>
  6. <span class="message">Wysłano</span>


ponieważ bardzo często Formularz 2 klienci wysyłają z błędem - któremu nie można zapobiec gdyż zależy to do klienta - i jest 31 kodów błędu.
chcę (jeżeli wystąpi błąd) aby spisywał kod błędu - lecz nie wyświetla mi się on, prawdopodobnie dlatego że są spacje i tabulatory w kodzie html- czy da się temu zapobiec - aby ignorował - brał $html jako ciąg ciągły winksmiley.jpg
  1. preg_match('/<div class="smalltxt">Formularz 2 - <\/div><span class="message">(.*?)<\/span>/i', $html, $errcode);
DiH
  1. preg_match_all('#.+|<div.*"smalltxt">(.*?)</div>.*<span.*"message">(.*?)</span>#', "", $matches);

Sprawdzałem i działa, chociaż za piękne to wyrażenie niestety nie jest. Wyniki w tym akurat przypadku Array[0][1-6]

P.S. A nie można by po prostu przechwycić wyników bezpośrednio z funkcji, która je wyświetla?
help_mee
Eh...
To jest tylko wycinek kodu HTML - reszta jest również dynamiczna i raz jest to $matches[55] a raz $matches[155]
Bo rózne wielkości przed i po są. (tak w ogóle to on chyba wszystkie divy dzieli na tabilcę snitch.gif)...



tak więc nie da się ominąć tego snitch.gif

questionmark.gif co_jest.gif
Fifi209
Nie zawsze trzeba używać wyrażeń regularnych ;p

  1. <?php
  2.  
  3. $string = ' <div class="smalltxt">Formularz 1 - </div>
  4. <span class="message">Wysłano</span>
  5. <div class="smalltxt">Formularz 2 - </div>
  6. <span class="message">Wysłano - z błędem (054)</span>
  7. <div class="smalltxt">Formularz 3 - </div>
  8. <span class="message">Wysłano</span>
  9. ';
  10.  
  11. $pos = strpos($string, 'Formularz 2');
  12. $x = substr($string, $pos, strpos($string, 'Formularz 3')-$pos);
  13.  
  14. $pos = strpos($x, 'message')+9;
  15. $y = substr($x, $pos, strpos($x, '</span>')-$pos);
  16.  
  17. echo $y;
  18.  
  19. ?>
help_mee
hehe... też tak próbowałem bo inne dane tak pobieram ... ale on durnieje wtedy - nie wiem czy znaki html spacje i tabulatory to też liczy?
Fifi209
Cytat(help_mee @ 21.02.2010, 10:50:10 ) *
hehe... też tak próbowałem bo inne dane tak pobieram ... ale on durnieje wtedy - nie wiem czy znaki html spacje i tabulatory to też liczy?


"hehe..." tylko, że przykład, który Ci dałem działa. ^^
help_mee
"hehehe... i he..." Tyleż że ja tam mam jeszcze innego badziejstwa... i może dlatego że wszystko w jednym pliku mam gdzieś coś się nakłada na siebie.

W każdym bądź razie jak mówisz że powinno - to se policze - bo potrzebuje bez html'ka czysty txt smile.gif

Pozdrawiam
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.