Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenia regularne
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Chce wydobyć interesujące mnie ceny ze sklepów wraz z nazwami produktów. Oto skrypcik.

  1. <?php
  2. $pattern = '/^[0-9]{2,4},[0-9]{2} zł$/'; //cena w formacie xx.xx zł lub xxx,xx zł lub xxxx,xx zł gdzie x - dowolna cyfra
  3. $pattern1 = '/^<big>(.*)<\/big>$/'; //nazwa produktu umieszczona miedzy znacznikami <big></big>
  4.  
  5. $url = array('http://www.strona1.pl', 'http://www.strona2.pl', 'http://www.strona3.pl'); //lista stron do przeskanowania
  6.  
  7.  
  8.  
  9. for ($i=0; $i<count($url); $i++) {
  10. $zawartosc = file_get_contents($url[$i]);
  11.  
  12. $ile = preg_match_all($pattern, $zawartosc, $matches, PREG_PATTERN_ORDER);
  13. $ile1 = preg_match_all($pattern1, $zawartosc, $matches1, PREG_PATTERN_ORDER);
  14.  
  15. echo 'Produkt to <strong> ' . $matches[0][$i] . ' </strong> cena wynosi <strong> ' . $matches[0][$i] . ' </strong> PLN <br>';
  16. }
  17. ?>


Niestety skrypt nie działa sprawdzałem różne konfiguracje w wyświetlaniem $matches, $zawartosc zwraca OK więc najprawdopodobniej coś nie tak z wyrażeniami.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
AlexDeLarge
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 14
Dołączył: 14.02.2010

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


Nie za bardzo skumałem, ale nie możesz zrobić tak (pseudokod)?
  1. $productPattern = '/<div class="product">(.*)</div>/';
  2. $pricePattern = ...;
  3. $specialPricePattern = ...;
  4. $productNamePattern = ...;
  5.  
  6. $urls = array(...);
  7.  
  8. foreach ($urls as $url) {
  9. $products = array();
  10. $content = file_get...
  11.  
  12. preg_match_all($productPattern, $content, $products, ...);
  13.  
  14. $prods = $products[0]; //masz zawartość divów czy tam czegoś z produktami
  15.  
  16. foreach ($prods as $prod) {
  17. preg_match($productNamePattern, $prod, $pnmatch);
  18. preg_match($pricePattern, $prod, $pmatch);
  19. preg_match($specialPricePattern, $prod, $spmatch);
  20. $add = array();
  21. $add['name'] = $pnmatch[0];
  22. $add['price'] = empty($spmatch[0]) ? $pmatch[0] : $spmatch[0];
  23. $products[] = $add;
  24. }
  25.  
  26. }
  27.  
  28. //W ostateczności masz tablicę np:
  29. $products = array(
  30. array( 'name' => 'ABC', 'price' => '123'),
  31. array('name' => 'CDE', 'price' => '1234')
  32. );


Ja wiem, że mniej optymalne rozwiązanie, ale jak się nie ma co się lubi...

Zdrówka życzę.

Ten post edytował AlexDeLarge 22.06.2010, 14:10:09
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 10.10.2025 - 03:06