Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] preg_match - proszę o pomoc
busyboy
post 16.01.2023, 07:52:33
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Witam,

Mam taki kod strony (fragment)

  1. <div class="produkt_opcje" id="produkt_opcje" title="2278"></div>
  2. </div> <!-- meta info -->
  3. </div> <!-- row -->
  4. <div class="description-wrapper clearfix">
  5. <div class="desc-col">
  6. <h3><a href="informacja">Opis podstawowy</a></h3>
  7. <div class="text">
  8. <h3>Cechy</h3>
  9. produkt kontrolowany na nieobecność GMO
  10. <br></div>
  11. <h3><a href="informacja">Nazwa produktu uregulowana prawnie</a></h3>
  12. <div class="text">Konserwa warzywna z ryżem sterylizowana.<br></div>
  13. <h3><a href="informacja">Składniki</a></h3>
  14. <div class="text">ryż gotowany 23%, woda, teksturat <span style='font-weight: bold;'>sojowy</span> 15%, olej rzepakowy, warzywa 14% (cebula, marchewka, papryka, pietruszka), koncentrat pomidorowy 5%, kasza manna (<span style='font-weight: bold;'>pszenica</span>), mąka ryżowa, białko <span style='font-weight: bold;'>sojowe</span>, sól morska, hydrolizat białka roślinnego (<span style='font-weight: bold;'>soja</span>, kukurydza), przyprawy, ekstrakty i olejki eteryczne przypraw, ekstrakt drożdżowy, cukier trzcinowy, aromaty (<span style='font-weight: bold;'>seler</span>)</div>
  15. <h3><a href="informacja">Informacja o wartości odżywczej</a></h3>
  16. <div class="text">
  17. <table border="1">
  18. <tr>
  19. <th></th>
  20. <th>w 100 g produktu:</th>
  21. </tr>


I chciałbym pobrać następujący fragment

  1. <div class="text">ryż gotowany 23%, woda, teksturat <span style='font-weight: bold;'>sojowy</span> 15%, olej rzepakowy, warzywa 14% (cebula, marchewka, papryka, pietruszka), koncentrat pomidorowy 5%, kasza manna (<span style='font-weight: bold;'>pszenica</span>), mąka ryżowa, białko <span style='font-weight: bold;'>sojowe</span>, sól morska, hydrolizat białka roślinnego (<span style='font-weight: bold;'>soja</span>, kukurydza), przyprawy, ekstrakty i olejki eteryczne przypraw, ekstrakt drożdżowy, cukier trzcinowy, aromaty (<span style='font-weight: bold;'>seler</span>)</div>


Coś takiego mam :

  1. preg_match('/Składniki<\/a><\/h3>(.*)<\/div>/i', $strona, $wynik);


Niestety to mi nie zwraca wyniku, proszę o pomoc w tym temacie.
Go to the top of the page
+Quote Post
Salvation
post 16.01.2023, 09:06:18
Post #2





Grupa: Zarejestrowani
Postów: 343
Pomógł: 70
Dołączył: 15.07.2014

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


Zainteresuj się natywną bilioteką: https://www.php.net/manual/en/class.domdocument.php
Albo skorzystaj z componentu Symfony: https://symfony.com/doc/current/components/dom_crawler.html

Ten post edytował Salvation 16.01.2023, 09:06:31
Go to the top of the page
+Quote Post
trueblue
post 16.01.2023, 09:07:23
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  1. $html="<h3><a href=\"informacja\">Składniki</a></h3><div class=\"text\">ryż gotowany 23%, woda, teksturat <span style='font-weight: bold;'>sojowy</span> 15%, olej rzepakowy, warzywa 14% (cebula, marchewka, papryka, pietruszka), koncentrat pomidorowy 5%, kasza manna (<span style='font-weight: bold;'>pszenica</span>), mąka ryżowa, białko <span style='font-weight: bold;'>sojowe</span>, sól morska, hydrolizat białka roślinnego (<span style='font-weight: bold;'>soja</span>, kukurydza), przyprawy, ekstrakty i olejki eteryczne przypraw, ekstrakt drożdżowy, cukier trzcinowy, aromaty (<span style='font-weight: bold;'>seler</span>)</div>";
  2.  
  3.  
  4. $dom = new DOMDocument;
  5. $dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . $html); // jeśli fragment HTML nie ma tego tagu, to należy go załadować w ten sposób
  6. //$dom->loadHTML($html); // jeśli jest kodowanie w dokumencie, to w ten sposób
  7. $dom->encoding = 'UTF-8';
  8. $xpath = new DOMXPath($dom);
  9. $divs = $xpath->query('//h3/a[text()="Składniki"]/../following-sibling::div[1]');
  10. foreach($divs as $div){
  11. echo $div->nodeValue;
  12. }


Polecam: https://kawalekkodu.pl/the-tag-is-out-there...domxpath-s01e01

Ten post edytował trueblue 16.01.2023, 09:14:27


--------------------
Go to the top of the page
+Quote Post
busyboy
post 16.01.2023, 09:47:47
Post #4





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Dziękuje za wskazówki

  1. <?php
  2. $html = file_get_contents('http://www.eskleplewiatan.pl/product-pl-2115-Dr-Oetker-Krem-do-tortow-i-ciast-smak-waniliowy-120-g.html');
  3.  
  4. $dom = new DOMDocument;
  5. //$dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . $html); // jeśli fragment HTML nie ma tego tagu, to należy go załadować w ten sposób
  6. $dom->loadHTML($html); // jeśli jest kodowanie w dokumencie, to w ten sposób
  7. $dom->encoding = 'UTF-8';
  8. $xpath = new DOMXPath($dom);
  9. $divs = $xpath->query('//h3/a[text()="Składniki"]/../following-sibling::div[1]');
  10. foreach($divs as $div){
  11. echo $div->nodeValue;
  12. }
  13.  
  14. ?>


Wynik pokazuje ale wcześniej sypie błędami sad.gif

  1. Warning: DOMDocument::loadHTML(): Misplaced DOCTYPE declaration in Entity, line: 1 in /!/test_www.php on line 5
  2.  
  3. Warning: DOMDocument::loadHTML(): htmlParseStartTag: misplaced <html> tag in Entity, line: 2 in /!/test_www.php on line 5
  4.  
  5. Warning: DOMDocument::loadHTML(): htmlParseStartTag: misplaced <head> tag in Entity, line: 2 in /!/test_www.php on line 5
  6.  
  7. Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 25 in /!/test_www.php on line 5
  8.  
  9. Warning: DOMDocument::loadHTML(): Tag header invalid in Entity, line: 119 in /!/test_www.php on line 5
  10.  
  11. Warning: DOMDocument::loadHTML(): ID def already defined in Entity, line: 133 in /!/test_www.php on line 5
  12.  
  13. Warning: DOMDocument::loadHTML(): ID szukaj_input already defined in Entity, line: 134 in /!/test_www.php on line 5
  14.  
  15. Warning: DOMDocument::loadHTML(): ID szukaj_btn already defined in Entity, line: 135 in /!/test_www.php on line 5
  16.  
  17. Warning: DOMDocument::loadHTML(): ID img_01 already defined in Entity, line: 178 in /!/test_www.php on line 5
  18.  
  19. Warning: DOMDocument::loadHTML(): Unexpected end tag : span in Entity, line: 186 in /!/test_www.php on line 5
  20.  
  21. Warning: DOMDocument::loadHTML(): Unexpected end tag : span in Entity, line: 187 in /!/test_www.php on line 5
  22. cukier, syrop glukozowy, olej roślinny palmowy całkowicie utwardzony, skrobia modyfikowana, emulgatory (mono- i diglicerydy kwasów tłuszczowych, mono- i diglicerydy kwasów tłuszczowych estryfikowane kwasem octowym), żelatyna, białka MLEKA, stabilizator (fosforany potasu), aromat, naturalny aromat wanilii bourbon, barwnik (karoteny), sól


Ten post edytował busyboy 16.01.2023, 09:48:14
Go to the top of the page
+Quote Post
trueblue
post 16.01.2023, 10:40:54
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Masz do czynienia z documentem HTML5.
Dodaj:
  1. libxml_use_internal_errors(true);
  2. $dom->loadHTML(....
  3. libxml_use_internal_errors(false);

albo użyj: https://github.com/ivopetkov/html5-dom-document-php


--------------------
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: 25.04.2024 - 13:08