Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z preg_match_all
Forum PHP.pl > Forum > Przedszkole
wree
Witam,

Od rana nie mogę wymęczyć jednego prega. Mam taki oto kod:

  1. <?
  2. $story = '
  3.  
  4. <div style="float: left; margin-left: 8px;">
  5.  
  6. <!-- jeden -->
  7. <div>
  8. <div class="1dklasa fix">
  9. <img style="border-width:0px;" src="rts/2.png" class="rton" id="cort">
  10. <h5 id="ctvent">
  11. <a href="detail.aspx?id=106" id="ctlvent">Sprawdz</a></h5>
  12. </div>
  13. <div class="clearfix">
  14. daf dafa adsf ada fadg
  15. </div>
  16. <div class="clear">
  17. </div>
  18. </div>
  19. <table cellspacing="0" cellpadding="0" border="0">1,1 random text rayrrsd ret af</table>
  20. <table cellspacing="0" cellpadding="0" border="0">1,2 random text yhh fadfa d</table>
  21. <table cellspacing="0" cellpadding="0" border="0">1,3 random text dsag dae ew </table>
  22. <table cellspacing="0" cellpadding="0" border="0">1,4 random text dss 3tjh a34</table>
  23. <table cellspacing="0" cellpadding="0" border="0">1,5 random text ddsf g 23r3</table><!-- koniec jeden -->
  24. <hr style="width: 100%; height: 1px;">
  25.  
  26. <!-- dwa -->
  27. <div>
  28. <div class="2dklasa fix">
  29. <img style="border-width:0px;" src="rts/2.png" class="rton" id="cort">
  30. <h5 id="ctvent">
  31. <a href="detail.aspx?id=106" id="ctlvent">Sprawdz</a></h5>
  32. </div>
  33. <div class="clearfix">
  34. daf dafa adsf ada fadg
  35. </div>
  36. <div class="clear">
  37. </div>
  38. </div>
  39. <table cellspacing="0" cellpadding="0" border="0">2,1 random text dasf5 43 t43 34</table>
  40. <table cellspacing="0" cellpadding="0" border="0">2,2 random text dsaf cz 432 2r5</table><!-- koniec dwa-->
  41.  
  42. <!-- trzy -->
  43. <div>
  44. <div class="3dklasa fix">
  45. <img style="border-width:0px;" src="rts/2.png" class="rton" id="cort">
  46. <h5 id="ctvent">
  47. <a href="detail.aspx?id=106" id="ctlvent">Sprawdz</a></h5>
  48. </div>
  49. <div class="clearfix">
  50. daf dafa adsf ada fadg
  51. </div>
  52. <div class="clear">
  53. </div>
  54. </div>
  55. <table cellspacing="0" cellpadding="0" border="0">3,1 random text dasf 3w2r432 dsf</table><!-- koniec trzy -->
  56.  
  57. <!-- cztery -->
  58. <div>
  59. <div class="dklasa fix">
  60. <img style="border-width:0px;" src="rts/2.png" class="rton" id="cort">
  61. <h5 id="ctvent">
  62. <a href="detail.aspx?id=106" id="ctlvent">Sprawdz</a></h5>
  63. </div>
  64. <div class="clearfix">
  65. daf dafa adsf ada fadg
  66. </div>
  67. <div class="clear">
  68. </div>
  69. </div>
  70. <table cellspacing="0" cellpadding="0" border="0">4,1 random text 232 2 3 24 dsf</table>
  71. <table cellspacing="0" cellpadding="0" border="0">4,2 random text dsaf das dsfa3 2</table><!-- koniec cztery -->
  72. </div>';
  73.  
  74.  
  75. preg_match_all('#(.*<table.*>.*<\/table>.*\n){1,}#',$story, $div);
  76. print_r($div[0]);
  77. ?>


Jak widać pobiera wszystkie table do tablicy. Problem w tym, że potrzebuję pobrać jeszcze wszystkie div-y które znajdują się przed początkiem pobierania tych table. Zaznaczyłem w kodzie co powinna zawierać tablica, czyli od:

<!-- jeden --><div> do ostatniego </table> przed <!-- dwa -->
<!-- dwa --><div> do ostatniego </table> przed <!-- trzy -->
itd..

początkiem zawsze jest sam pusty (bez klasy ani id) <div>

a nie mogę dać od (<div>.+?<div>) co byłoby najprostrzym rozwiązaniem, ponieważ po ostatnim table nie występuje już sam czysty <div> tylko dalej leci inna treść i mi nie pobiera ostatniego. Tekst $story jest tylko przykładowy, liczba table jest zawsze zmienna ale zawsze przed table występuje czysty div który jest powiedzmy nazwą kategorii. Potrzebuje by preg pobrał całość razem z html. Czyli wynikiem tego przykładu powinna być tablica zawierająca 4 rekordy.

Proszę o wskazówki lub pomoc.
BartixPL
Czy w ogóle jest to możliwe do zrobienia (z pomocą fopen() jest łatwo) ale z curl widze że mało kto umie sobie poradzić...
wree
już znalazłem:

  1. preg_match_all('#(<.*?div>.*?<\/table>.*?)(?:<.*?div>)#is',$story, $div);


temat można zamknąć, 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.