Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne - znaki nowej lini
bobek358
post
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Witam

Mam mały problem z wyrażeniami regularnymi.
Przez cURL pobieram stronę i wyrażeniami regularnymi pobieram z niej interesujące mnie fragmenty.

Przykład danych które mnie interesują maja postać:

  1. <TR>
  2. <td class="rms_quicklink">1</td>
  3. <td class="rms_quicklink">mmmmm</td>
  4. <td class="rms_quicklink">06/11/2012</td>
  5. <td class="rms_quicklink">15:39:51</td>
  6. <td class="rms_quicklink">
  7. Przesyłka doręczona </td>
  8. <TD class="rms_quicklink">
  9.  
  10.  
  11.  
  12. </TD>
  13. </TR>
  14.  
  15. <TR>
  16. <td class="rms_quicklink">2</td>
  17. <td class="rms_quicklink">Wydanie paczki kurierowi - HH</td>
  18. <td class="rms_quicklink">06/11/2012</td>
  19. <td class="rms_quicklink">07:37:09</td>
  20. <td class="rms_quicklink">
  21. Przesyłka wychodząca z sortowni </td>
  22. <TD class="rms_quicklink">
  23.  
  24.  
  25.  
  26. </TD>
  27. </TR>
  28.  
  29. <TR>
  30. <td class="rms_quicklink">3</td>
  31. <td class="rms_quicklink">Linehaul: przyjęcie</td>
  32. <td class="rms_quicklink">06/11/2012</td>
  33. <td class="rms_quicklink">07:16:48</td>
  34. <td class="rms_quicklink">
  35. Przesyłka wchodząca do sortowni </td>
  36. <TD class="rms_quicklink">KTW
  37.  
  38.  
  39.  
  40. </TD>


I teraz wyciągam je poniższym kodem:
  1. <td class=\"rms_quicklink\">(.*)</td>
  2. <td class=\"rms_quicklink\">(.*)</td>
  3. <td class=\"rms_quicklink\">(.*)</td>
  4. <td class=\"rms_quicklink\">(.*)</td>
  5. <td class=\"rms_quicklink\">
  6. (.*)</td>
  7. <TD class=\"rms_quicklink\">(.*)
  8.  
  9.  
  10.  
  11. </TD>@", $this -> pobrane_dane, $out);


Niestety w tych dwóch ostatnich kolumnach występują znaki nowej linii i nie działa to do końca jak chciałem.
I tutaj pytanie - jak zamienić to wyrażenie aby nie było problemu ze znakami nowej linii?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Tam gdzie może być znak nowej linii daj:

  1. ([\s.]*)
Go to the top of the page
+Quote Post
bobek358
post
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Niestety gdy zmienię (.*) na ([\s.]*) niestety preg_match_all nic nie pobiera (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Więc najpierw usuń entery a dopiero potem potraktuj zwrócony kod preg_*
  1. $string = 'twoj
  2. string';
  3. $strip = strtr($string, array("\r"=>"", "\n"=>"", "\r\n"=>""));
  4. preg_*($strip ..);
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Jeśli ich nie usuniesz i dasz odpowiednio te "\s" to dodaj też do samego prega flagę "s" czyli '@....@s'
Go to the top of the page
+Quote Post
bobek358
post
Post #6





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Najlepiej usunąłem wszystkie entery i znaki tabulacji i jest niby ok.
Mam tylko jeden problem - na lokalnym serwerze jest ok jednak jak wgram na serwer to jednak nie działa do końca ok.
Przy niektórych danych jest ok a a przy innych nie pobiera - są jakies opcje w php.ini które tyczą się wyrażeń regularnych?


Sprawdziłem - wgrałem na inny serwer gdzie jest 5.3 i tak działa jednak na serwerze z php 5.2 niestety raz działa raz nie.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 04:46