Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_match nie zwraca ciągu
red9skull
post 27.02.2010, 11:11:16
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


  1. preg_match( '@<div class="newsContent">(.*)</div>@', $data, $news_kod );


Tym kodem chcę wyciągnąć treść z tego:
  1. <div class="newsContent">
  2. <img src="http://www.dobreprogramy.pl/ImagePublications/News/Static/microsoft.gif" border="0" class="newsIcon" alt="NewsImage" />
  3. <p>Microsoft <a href="http://www.microsoft.com/presspass/press/2010/feb10/02-25MSPanasonicPR.mspx?rss_fdn=Press%20Releases">zawarł umowę</a> z firmą Panasonic o udzieleni licencji na wykorzystanie systemu plików exFAT (Extended File Allocation Table). Szczegóły finansowe porozumienia nie zostały ujawnione. Dodatkowo Microsoft udzielił także licencji na format FAT32 z obsługą długich nazw plików.</p>
  4.  
  5. <p>Według Microsoftu umowa jest przykładem na to, że Microsoft jest chętny do udostępniania wartościowej własności intelektualnej aby zwiększać poziom innowacyjności w państwie (USA). W <a href="http://www.dobreprogramy.pl/Microsoft-chce-popularyzacji-exFAT,Aktualnosc,15697.html">grudniu</a> w ramach popularyzacji formatu exFAT Microsoft udostępnił firmom Canon, Sanyo i SanDisk, pobierając od każdej z nich 300 tysięcy dolarów.</p>
  6.  
  7. <p>exFAT, znany też jako FAT64, oferuje możliwość zapisywania bardzo dużych plików. W jego przypadku limit wynosi 64 ZB, podczas gdy dla FAT32 były to zaledwie 4 GB. Podobnie jak w NTFS możliwe jest ustawianie uprawnień do plików. Jest też większa swoboda zapisywania czasu, może być on zapisywany jako UTC i z rozdzielczością 1/100 sekundy. Opcja ta jest przydatna np. przy wykonywaniu zdjęć seryjnych. Choć jest to dokładność 200 razy większa niż w przypadku FAT32 i jednak i tak daleko jej do NTFS, gdzie czas zapisu/modyfikacji pliku jest zapisywany z rozdzielczością 100 ns. Obsługiwane są też transakcje, które zabezpieczają przed błędami zapisu. Jeśli wystąpi błąd zapisu, jest on wycofywany w całości. Nie ma więc sytuacji w której zapisu dokonano jedynie częściowo.</p>
  8. <div class="newsSource">Źródło: <a target="_blank" href="http://www.theregister.co.uk">The Register</a></div>
  9. </div>
  10. <div class="newsOptions">
  11. <a id="ctl00_phContent_NewsList_repNewsList_ctl00_hpPublicationsLinkComment" class="komentarze" href="http://www.dobreprogramy.pl/Microsoft-udostepnia-exFAT-firmie-Panasonic,Aktualnosc,16824.html#komentarze"><span class="icon">&nbsp;</span>komentarze (23)</a>
  12. <a id="ctl00_phContent_NewsList_repNewsList_ctl00_hpRelated" class="pokrewne" href="http://www.dobreprogramy.pl/Szukaj.html?q=exfat"><span class="icon">&nbsp;</span> podobne</a>
  13. </div>
  14. <div class="clear"></div>
  15. </div>

Ale var_dump($news_kod) zwraca: array(0) { }


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
WebCM
post 27.02.2010, 11:30:11
Post #2





Grupa: Zarejestrowani
Postów: 375
Pomógł: 20
Dołączył: 28.07.2006

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


Wyrażenia regularne nie są odpowiednim narzędziem do wyciągania treści z HTML-a. Kod wyciągnie pierwszy fragment między <div class="newsContent"> a ostatnim </div> w zmiennej. Jeśli się upierasz, musisz dodać parametr s. Wtedy kropka pasuje do każdego znaku, w tym znaku nowej linii. Opcjonalnie i = bez sprawdzania wielkości znaków.
  1. @<div class="newsContent">(.*)</div>@is


Ten post edytował WebCM 27.02.2010, 11:30:55


--------------------
„Jesteśmy różni, pochodzimy z różnych stron Polski, mamy różne zainteresowania, ale łączy nas jeden cel. Cel ten to Ojczyna, dla której chcemy żyć i pracować.” Roman Dmowski
Go to the top of the page
+Quote Post
red9skull
post 27.02.2010, 13:15:19
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(WebCM @ 27.02.2010, 11:30:11 ) *
Wyrażenia regularne nie są odpowiednim narzędziem do wyciągania treści z HTML-a.

To co polecasz?

Dobra, mam taki ciąg:
  1. <div class="news" id="news_1">
  2. <div class="mainBar">
  3. <a href="#news_2"><img src="http://www.dobreprogramy.pl/App_Themes/Green/Images/content_third_one_arrow.png" class="newsNavigator" alt="Przeskocz" /></a>
  4. <h2 class="title"><a id="ctl00_phContent_NewsList_repNewsList_ctl00_hpPublicationsLink" href="http://www.dobreprogramy.pl/Microsoft-udostepnia-exFAT-firmie-Panasonic,Aktualnosc,16824.html">Microsoft udostępnia exFAT firmie Panasonic</a></h2>
  5. <div class="newsInfo">26.02.2010 20:45, Autor: <a href="OVortalu.html#redakcja">Grzegorz Niemirowski (gniemirowski)</a></div>
  6. </div>
  7. <div class="newsContent">
  8. <img src="http://www.dobreprogramy.pl/ImagePublications/News/Static/microsoft.gif" border="0" class="newsIcon" alt="NewsImage" />
  9. <p>Microsoft <a href="http://www.microsoft.com/presspass/press/2010/feb10/02-25MSPanasonicPR.mspx?rss_fdn=Press%20Releases">zawarł umowę</a> z firmą Panasonic o udzieleni licencji na wykorzystanie systemu plików exFAT (Extended File Allocation Table). Szczegóły finansowe porozumienia nie zostały ujawnione. Dodatkowo Microsoft udzielił także licencji na format FAT32 z obsługą długich nazw plików.</p>
  10.  
  11. <p>Według Microsoftu umowa jest przykładem na to, że Microsoft jest chętny do udostępniania wartościowej własności intelektualnej aby zwiększać poziom innowacyjności w państwie (USA). W <a href="http://www.dobreprogramy.pl/Microsoft-chce-popularyzacji-exFAT,Aktualnosc,15697.html">grudniu</a> w ramach popularyzacji formatu exFAT Microsoft udostępnił firmom Canon, Sanyo i SanDisk, pobierając od każdej z nich 300 tysięcy dolarów.</p>
  12.  
  13. <p>exFAT, znany też jako FAT64, oferuje możliwość zapisywania bardzo dużych plików. W jego przypadku limit wynosi 64 ZB, podczas gdy dla FAT32 były to zaledwie 4 GB. Podobnie jak w NTFS możliwe jest ustawianie uprawnień do plików. Jest też większa swoboda zapisywania czasu, może być on zapisywany jako UTC i z rozdzielczością 1/100 sekundy. Opcja ta jest przydatna np. przy wykonywaniu zdjęć seryjnych. Choć jest to dokładność 200 razy większa niż w przypadku FAT32 i jednak i tak daleko jej do NTFS, gdzie czas zapisu/modyfikacji pliku jest zapisywany z rozdzielczością 100 ns. Obsługiwane są też transakcje, które zabezpieczają przed błędami zapisu. Jeśli wystąpi błąd zapisu, jest on wycofywany w całości. Nie ma więc sytuacji w której zapisu dokonano jedynie częściowo.</p>
  14. <div class="newsSource">Źródło: <a target="_blank" href="http://www.theregister.co.uk">The Register</a></div>
  15. </div>
  16. <div class="newsOptions">
  17. <a id="ctl00_phContent_NewsList_repNewsList_ctl00_hpPublicationsLinkComment" class="komentarze" href="http://www.dobreprogramy.pl/Microsoft-udostepnia-exFAT-firmie-Panasonic,Aktualnosc,16824.html#komentarze"><span class="icon">&nbsp;</span>komentarze (23)</a>
  18. <a id="ctl00_phContent_NewsList_repNewsList_ctl00_hpRelated" class="pokrewne" href="http://www.dobreprogramy.pl/Szukaj.html?q=exfat"><span class="icon">&nbsp;</span> podobne</a>
  19. </div>
  20. <div class="clear"></div>
  21. </div>
  22.  
  23. <div id="ctl00_phContent_NewsList_repNewsList_ctl00_pR" style="margin-top:-40px;margin-bottom:30px;">
  24.  
  25.  
  26. <div style="text-align:center;" class="noPrint">
  27. <div style="width: 300px;" class="rectangle">
  28. <span style="color: #A9A9A9;">r&nbsp;&nbsp;&nbsp;e&nbsp;&nbsp;&nbsp;k&nbsp;&nbsp;&nbsp;l&nbsp;&nbsp;&nbsp;a&nbsp;&nbsp;&nbsp;m&nbsp;&nbsp;&nbsp;a</span>
  29. <script type="text/javascript">
  30. //<![CDATA[
  31. OA_show('z49');
  32. //]]>
  33. </script>
  34. </div>
  35. </div>
  36.  
  37. </div>


Moje wyrażenie regularne:
  1. preg_match( '@<div class="newsContent">([0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ:/ \*&\@!\?\+;,\.-_"\(\)\/=<>]+)</div>@is', $data, $news_kod );

Czego tu brakuje, lub co jest źle?

Ten post edytował red9skull 27.02.2010, 13:14:07


--------------------
zmoderowano - zbyt fajna
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 - 21:48