Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenia regularne - znaki nowej lini
bobek358
post 14.01.2013, 21:14:24
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 14.01.2013, 21:22:17
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.]*)


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
bobek358
post 15.01.2013, 10:01:38
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 sad.gif
Go to the top of the page
+Quote Post
CuteOne
post 15.01.2013, 10:11:39
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 15.01.2013, 10:28:42
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'


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
bobek358
post 15.01.2013, 14:50:48
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:48