Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> preg_match - problem
sparco
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


witam, mam problem z funkcja preg_match, chce pobrac dane ze strony, dokladnie chodzi o dane:

<div class="costam"> dane do pobrania </div>

dane te sa w kilkunastu linijkach

  1. <?php
  2. preg_match('/<div class=\"costam\">(.*)</div>/is', $open_ogl, $match);
  3. ?>


cos takiego nie dziala ;/
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A nie brakuje Ci '\' przed nawiasami trójkątnymi?

  1. <?php
  2. preg_match('/<div class=\"costam\">(.*)</div>/is', $open_ogl, $match);
  3. ?>


Poza tym powinno być *? a nie *

A poza tym co to znaczy, że nie działa. Nic nie zwraca? Źle zwraca?
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Strasznie kombinujecie.

  1. <?php
  2. preg_match('/<div class="costam">(.*)</div>/', $open_ogl, $match);
  3. ?>
Go to the top of the page
+Quote Post
bim2
post
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


webdice, modyfikator "s" i "i" były raczej przydatne. Zgaduję, bo nie widzimy kodu z jakiego to ma zostać pobrane, ale w większości jest potrzebne. Wydaje mi się że np jest <div[2 spacje]class= i dlatego nie łapie.
Go to the top of the page
+Quote Post
sparco
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


taka postac

  1. <?php
  2. preg_match('/<div id=\"item-desc\" class=\"clearfix\">(.*?)</div>/is', $open_ogl, $match);
  3. ?>


zwraca mi tylko pierwsza linijke w tym divie
Go to the top of the page
+Quote Post
bim2
post
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


zamień preg_match na preg_match_all (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sparco
post
Post #7





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


niestety to samo, w tresci jest tez sporo innych div`ow

tresc - przyklad

  1. <div id="item-desc" class="clearfix">
  2. <p><div style="text-align: left"><strong><u>!! Przy zakupiewiększej ilości sztuk cena do negocjacji !!</u><br/></strong></div>
  3. <div style="text-align: left"/>
  4. <div style="text-align: left"/>
  5. <div style="text-align: left"/>
  6. <div style="text-align: left"><span style="font-weight: bold">Najlepsza i najbardziej wydajna, polecana szczególnie do wydruków ciągłych (zamówienia, faktury, bilansy, zestawienia, raporty itp).<br/>
  7. Od wielu lat jest czołowym modelem min. w bankach, gdzie ceniona jest jej <span style="text-decoration: underline">szybkość, niezawodność</span> oraz <span style="text-decoration: underline">niskie</span> <span style="text-decoration: underline">koszty</span> <span style="text-decoration: underline">eksploatacji.<br/></span> Dlatego też nowe drukarki tego typu kosztują ciągle około 2000 zł.<span style="text-decoration: underline"><br/></span></span></div>
  8. <br/>
  9. <br/>
  10. <br/>
  11. dane ze strony producenta:<br/>
  12. <br/>
  13. <span style="font-weight: bold">Ilość igieł</span> : 9<br/>
  14. <div class="DetailedBotTextBold"><span style="font-weight: bold">Prędkość drukowania (cps)</span>:</div>
  15. <ul>
  16. <li>435 cps (najwyższa prędkość)</li>
  17. <li>387 cps (w trybie High speed draft @ 10cpi)</li>
  18. <li>290 cps (w trybie Utility @ 10 cpi)</li>
  19. <li>73 cps (w trybie NLQ)</li>
  20. </ul>
  21. <br/>
  22. <div class="DetailedBotTextBold" style="font-weight: bold">Rozdzielczość:</div>
  23. 240 x 216dpi (maks.)<br/>
  24. <br/>
  25. <div class="DetailedBotTextBold" style="font-weight: bold">Pierwsza linia wydruku:</div>
  26. <div class="DetailedBotText">0.5mm od góry strony<br/>
  27. </div>
Go to the top of the page
+Quote Post
danek
post
Post #8





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


Ja do wyciągania powtarzających się danych używam preg_match_all:
Kod
preg_match_all("|<div class=\"costam\">([^<]*?)</div>|",$zrodlo,$dane);

Zwróci Ci to:
$dane[1][0]="pierwsze wystąpienie"
$dane[1][1]="drugie wystąpienie"
$dane[1][2]="trzecie wystąpienie"
Go to the top of the page
+Quote Post
sparco
post
Post #9





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


niestety ale nic mi nie zwrocilo ;/
Go to the top of the page
+Quote Post
danek
post
Post #10





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


to zmień ([^<]*?) na (.*?) , bo założyłem, że tam będzie tylko text, a nie html
Go to the top of the page
+Quote Post
sparco
post
Post #11





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


dalej nic...
Go to the top of the page
+Quote Post
danek
post
Post #12





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


A zależy Ci na załamaniach tekstu, czy może być ciurkiem w 1 linijce?
Go to the top of the page
+Quote Post
sparco
post
Post #13





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


moze byc ciurkiem aby zebralo dene z dokladnie z tego diva, probowalem roznych kombinacji ale pobiera cala strone, a tego nie chce...
Go to the top of the page
+Quote Post
danek
post
Post #14





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


Ja w swoim skrypcie dane wejściowe filtruję:
Kod
$response=str_replace(array("\n", "\r", "\t",), '', $response);

Dzięki czemu otrzymuję tekst bez nowych linii, oraz powtórzonych spacji i tabulatorów...

Ten post edytował danek 5.11.2008, 21:54:19
Go to the top of the page
+Quote Post
sparco
post
Post #15





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


okej ale to dalej nie pomaga w otrzyaniu danych z tego okreslonego div`a
Go to the top of the page
+Quote Post
bim2
post
Post #16





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Coś ty musisz robić źle... Pokaż no cały kod.
Go to the top of the page
+Quote Post
sparco
post
Post #17





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


  1. <?php
  2. $open_ogl = curl_get_file_contents( 'http://.......' );                            
  3. $open_ogl = str_replace(array("\n", "r", "\t",), '', $open_ogl);                            
  4. preg_match('/<div id=\"item-desc\" class=\"clearfix\">(.*?)</div>/is', $open_ogl, $match);
  5. print_r($match);
  6. ?>
Go to the top of the page
+Quote Post
danek
post
Post #18





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


  1. <?php
  2. $response = '<div id="item-desc" class="clearfix">
  3. <p><div style="text-align: left"><strong><u>!! Przy zakupiewiększej ilości sztuk cena do negocjacji exclamation.gif</u><br/></strong></div>
  4. <div style="text-align: left"/>
  5. <div style="text-align: left"/>
  6. <div style="text-align: left"/>
  7. <div style="text-align: left"><span style="font-weight: bold">Najlepsza i najbardziej wydajna, polecana szczególnie do wydruków ciągłych (zamówienia, faktury, bilansy, zestawienia, raporty itp).<br/>
  8. Od wielu lat jest czołowym modelem min. w bankach, gdzie ceniona jest jej <span style="text-decoration: underline">szybkość, niezawodność</span> oraz <span style="text-decoration: underline">niskie</span> <span style="text-decoration: underline">koszty</span> <span style="text-decoration: underline">eksploatacji.<br/></span> Dlatego też nowe drukarki tego typu kosztują ciągle około 2000 zł.<span style="text-decoration: underline"><br/></span></span></div>
  9. <br/>
  10. <br/>
  11. <br/>
  12. dane ze strony producenta:<br/>
  13. <br/>
  14. <span style="font-weight: bold">Ilość igieł</span> : 9<br/>
  15. <div class="DetailedBotTextBold"><span style="font-weight: bold">Prędkość drukowania (cps)</span>:</div>
  16. <ul>
  17. <li>435 cps (najwyższa prędkość)</li>
  18. <li>387 cps (w trybie High speed draft @ 10cpi)</li>
  19. <li>290 cps (w trybie Utility @ 10 cpi)</li>
  20. <li>73 cps (w trybie NLQ)</li>
  21. </ul>
  22. <br/>
  23. <div class="DetailedBotTextBold" style="font-weight: bold">Rozdzielczość:</div>
  24. 240 x 216dpi (maks.)<br/>
  25. <br/>
  26. <div class="DetailedBotTextBold" style="font-weight: bold">Pierwsza linia wydruku:</div>
  27. <div class="DetailedBotText">0.5mm od góry strony<br/>
  28. </div>';
  29. $response=str_replace(array("\n", "r", "\t",), '', $response);
  30. preg_match_all("|<div class=\"DetailedBotTextBold\"[^>]*>(.*?)</div>|",$response,$dane);
  31. $i=0;
  32. while($dane[1][$i])
  33. {
  34. echo htmlspecialchars($dane[1][$i], ENT_QUOTES);
  35. echo"<br>-------------------------------------<br>";
  36. $i++;
  37. }
  38. ?>

Mi daje:
  1. &lt;span style=&quot;font-weight: bold&quot;&gt;Prędkość drukowania (cps)&lt;/span&gt;:<br>-------------------------------------<br>Rozdzielczość:<br>-------------------------------------<br>Pierwsza linia wydruku:<br>-------------------------------------<br>

czyli:
  1. <span style="font-weight: bold">Prędkość drukowania (cps)</span>:
  2. -------------------------------------
  3. Rozdzielczość:
  4. -------------------------------------
  5. Pierwsza linia wydruku:
  6. -------------------------------------


Ten post edytował danek 6.11.2008, 21:11:07
Go to the top of the page
+Quote Post
sparco
post
Post #19





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 20.10.2006

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


ale chodzi o kod z diva: <div id="item-desc" class="clearfix"> kod </div>, czyli wszystko od poczatku do konca co podalem wyzej, to jest wycinek ze strony http://warszawa.olx.pl/drukarka-oki-3320-n...tp-iid-15308669, dokladnie chodzi mi o pobranie tresci ogloszenia.
Go to the top of the page
+Quote Post
danek
post
Post #20





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 1.02.2004
Skąd: warszawa

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


no to w tym momencie musisz na stronie znaleźć 2 charakterystyczne punkty, które się nie powtarzają, po czym wycinasz text spomiędzy nich i go parsujesz...
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: 23.08.2025 - 12:28