Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]preg_match_all wyrażenia regularne - pomocy
adi456
post 25.07.2011, 10:38:01
Post #1





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


Witam, proszę o pomoc

ciąg do przetworzenia to

  1. <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"274\">
  2. <colgroup>
  3. <col />
  4. <col />
  5. </colgroup>
  6. <tbody>
  7.  
  8. <tr height=\"53\">
  9. <td height=\"53\" style=\"height:53px;width:148px;\">
  10. nazwa</td>
  11. <td style=\"width:127px;\">
  12. data</td>
  13. </tr>
  14. <tr height=\"42\">
  15. <td height=\"42\" style=\"height:42px;\">
  16.  
  17. &nbsp;</td>
  18. <td>
  19. &nbsp;</td>
  20. </tr>
  21. <tr height=\"17\">
  22. <td height=\"17\" style=\"height:17px;\">
  23. a</td>
  24. <td>
  25.  
  26. 1010</td>
  27. </tr>
  28. <tr height=\"17\">
  29. <td height=\"17\" style=\"height:17px;\">
  30. aa</td>
  31. <td>
  32. 230</td>
  33.  
  34. </tr>
  35. <tr height=\"17\">
  36. <td height=\"17\" style=\"height:17px;\">
  37. aaa</td>
  38. <td>
  39. 1672</td>
  40. </tr>
  41. <tr height=\"17\">
  42.  
  43. <td height=\"17\" style=\"height:17px;\">
  44. aaaa</td>
  45. <td>
  46. 826</td>
  47. </tr>
  48. <tr height=\"17\">
  49. <td height=\"17\" style=\"height:17px;\">
  50. aaaaa</td>
  51.  
  52. <td>
  53. 150</td>
  54. </tr>
  55. <tr height=\"17\">
  56. <td height=\"17\" style=\"height:17px;\">
  57. aaaaaa</td>
  58. <td>
  59. 304</td>
  60.  
  61. </tr>
  62. <tr height=\"17\">
  63. <td height=\"17\" style=\"height:17px;\">
  64. aaaaaaa</td>
  65. <td>
  66. 168</td>
  67. </tr>
  68. <tr height=\"17\">
  69.  
  70. <td height=\"17\" style=\"height:17px;\">
  71. &nbsp;</td>
  72. <td>
  73. &nbsp;</td>
  74. </tr>
  75. <tr height=\"17\">
  76. <td height=\"17\" style=\"height:17px;\">
  77. aaaaaaaa</td>
  78.  
  79. <td>
  80. 4360</td>
  81. </tr>
  82. <tr height=\"17\">
  83. <td height=\"17\" style=\"height:17px;\">
  84. aaaaaaaaa</td>
  85. <td>
  86. 8710</td>
  87.  
  88. </tr>
  89. </tbody>
  90. </table>


i z tego ma być tablica z wszystkimi słowami i liczbami (pomijając formatowanie tabeli)
więc trochę poczytałem i stworzyłem coś takiego

  1. preg_match_all('/^\>\s[0-9][A-Z][a-z]\s\<\/td\>$/', $tresc,
  2. $out, PREG_PATTERN_ORDER);
  3.  
  4. print_r($out);


no i nie działa bo w wyniku dostaje
  1. Array ( [0] => Array ( ) )
Go to the top of the page
+Quote Post
DiH
post 25.07.2011, 10:42:51
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


#<td.*>(.*?)</td>#is

Poczytaj o pattern modifiers.

Ten post edytował DiH 25.07.2011, 10:43:15
Go to the top of the page
+Quote Post
adi456
post 25.07.2011, 10:48:49
Post #3





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


dzięki za odp ale gdy zrobiłem tak:

  1. preg_match_all('#<td.*>(.*?)</td>#is', $tresc,
  2. $out, PREG_PATTERN_ORDER);


dostałem

  1. Array ( [0] => Array ( [0] => nazwa data a 1010 aa 230 aaa 1672 aaaa 826 aaaaa 150 aaaaaa 304 aaaaaaa 168 aaaaaaaa 4360 aaaaaaaaa 8710 ) [1] => Array ( [0] => 8710 ) )


czyli w wyniku nie ma już formatowania ale wynik nie jest rozbity na tablice
i już się zabieram do czytania pattern modifiers
Go to the top of the page
+Quote Post
DiH
post 25.07.2011, 11:07:00
Post #4





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


No tak, mój błąd. Powinno być:
#<td[^>]*>(.*?)</td>#is
Go to the top of the page
+Quote Post
adi456
post 25.07.2011, 11:17:19
Post #5





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


dzięki już jest prawie ok

  1. Array ( [0] => Array ( [0] => nazwa [1] => data [2] => [3] => [4] => a [5] => 1010 [6] => aa [7] => 230 [8] => aaa [9] => 1672 [10] => aaaa [11] => 826 [12] => aaaaa [13] => 150 [14] => aaaaaa [15] => 304 [16] => aaaaaaa [17] => 168 [18] => [19] => [20] => aaaaaaaa [21] => 4360 [22] => aaaaaaaaa [23] => 8710 ) [1] => Array ( [0] => nazwa [1] => data [2] => [3] => [4] => a [5] => 1010 [6] => aa [7] => 230 [8] => aaa [9] => 1672 [10] => aaaa [11] => 826 [12] => aaaaa [13] => 150 [14] => aaaaaa [15] => 304 [16] => aaaaaaa [17] => 168 [18] => [19] => [20] => aaaaaaaa [21] => 4360 [22] => aaaaaaaaa [23] => 8710 ) )


i co zrobić żeby spacji nie zamieniało na tablice?
tak pozatym to gdzie gdzie mogę poczytać żeby opanować te wyrażenia regularne?
Go to the top of the page
+Quote Post
DiH
post 25.07.2011, 11:24:55
Post #6





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Dużo googlać i samemy próbować. Do samodzielnych prób polecam: xrg.es, na górze tej strony jest też mały Help

Edit: co do spacji, to są one poprawnym wynikiem tego wyrażenia - po prostu znajdują się między <td></td>. Usunąć je możesz na kilka sposobów, albo przed preg_match_all, zrobić jeden preg_replace usuwający encję nbsp  a do tego usuwający też same \s+ (białe znaki). Żeby usunąć je "po", możesz przeszukać każdy element tablicy jakąś funkcją i usuwać niechciane dane. Najprościej jednak będzie chyba wygenerowanie tej tabelki tak, żeby nie trzeba było tego wszystkiego robić.

Ten post edytował DiH 25.07.2011, 11:28:48
Go to the top of the page
+Quote Post
adi456
post 25.07.2011, 12:06:33
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

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


ok będę czytać i próbować, dzięki za pomoc ciężko teraz o wyrozumiałego użytkownika, a tak jeszcze na marginesie to dlaczego wynik jest 2 razy tzn tablica z tablicą zawierającą to samo co pierwsza?
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: 12.06.2025 - 17:00