Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PCRE - poprawa regexpa.
KsaR
post
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Kod
#<t[hd].*HomeNews(Headline|Date|Body).*>(\s|.)+?</t[hd]>#

Co próbuje zrobić:

<td lub <th tu coś tam nastepnie jest HomeNews(i tu: Headline lub Date albo Body) tu znów coś po czym jest > (wszystko tutaj chce wyłapać, są dowolne znaki także nowe linijki) </th> lub </td>

Przykładowe dane wejściowe:
  1. <th class="HomeNewsHeadline" style="width: 238px">........jakiś tytuł</th>
  2. <th class="HomeNewsDate" style="width: 150px;">...jakaś data....</th>
  3. <th class="HomeNewsExpander">-</th>
  4. </tr>
  5. <tr style="">
  6. <td colspan="4" class="HomeNewsBody">jakiś....<br/>
  7. Content...</td>


Ps. Koniecznie regexp, żaden parser dom..

Ten post edytował KsaR 28.05.2016, 19:58:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Może tak:
/<(td|th)(.*?)class="HomeNews(Body|Headline|Date|Expander)"(.*?)>(.*?)<\/(td|th)>/s
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Prawie idealnie,
Kod
#<t[dh].*?class="HomeNews(Body|Headline|Date).*?>(.*?)</t[dh]>#s

Aktualny wynik (testuje na: http://scriptun.com/php/online/preg_match_all)
  1. <?php
  2. // result value:
  3. $result = 3;
  4. // matches array:
  5. $matches = array (
  6. 0 =>
  7. 0 => '<th class="HomeNewsHeadline" style="width: 238px">........jakiś tytuł</th>',
  8. 1 => '<th class="HomeNewsDate" style="width: 150px;">...jakaś data....</th>',
  9. 2 => '<th class="HomeNewsExpander">-</th>
  10.  
  11. </tr>
  12.  
  13. <tr style="">
  14.  
  15. <td colspan="4" class="HomeNewsBody">jakiś....<br/>
  16.  
  17. Content...</td>',
  18. ),
  19. 1 =>
  20. 0 => 'Headline',
  21. 1 => 'Date',
  22. 2 => 'Body',
  23. ),
  24. 2 =>
  25. 0 => '........jakiś tytuł',
  26. 1 => '...jakaś data....',
  27. 2 => 'jakiś....<br/>
  28.  
  29. Content...',
  30. ),
  31. )
  32. ?>


Da się jakoś poprawić żeby złapało tylko drugą tablicę?
  1. 0 => '........jakiś tytuł',
  2. 1 => '...jakaś data....',
  3. 2 => 'jakiś....<br/>
  4.  
  5. Content...')


Ten post edytował KsaR 28.05.2016, 20:52:13
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


?:

<t[dh].*?class="HomeNews(?:Body|Headline|Date).*?>(.*?)<\/t[dh]>
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: 22.08.2025 - 23:34