Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wydobywanie danych z strony, PHP CURL Wyrażenia Regularne
wojtek19115
post 16.04.2013, 16:42:11
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 24.07.2010

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


Witajcie mam problem otóż jestem na praktykach, dostałem zadanie by skopiować z strony www do worda kilkadziesiąt stron ( zostało z ~70)
Chciałbym aby mój skrypt na razie tylko wydobywał z kodu tekst
  1. <?php
  2. $url = "http://bip.bojanow.pl/rada/uchwały-rady/2010-2014/2087-uchwała-nr-xvii-148-2012-rady-gminy-bojanów-z-dnia-28-grudnia-2012-roku-w-sprawie-przyjęcia-gminnego-programu-profilaktyki-i-rozwiązywania-problemów-alkoholowych-do-realizacji-na-2013-rok.html";
  3.  
  4. $ch = curl_init();
  5. curl_setopt($ch, CURLOPT_URL,$url);
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  7. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  8. $wejscie = curl_exec($ch);
  9. curl_close($ch);
  10.  
  11. preg_match('/<div class="item-page">(.+?)<\/div>/ism', $wejscie, $wyjscie);
  12.  
  13. print_r($wyjscie);
  14. ?>

kod działa ale problem jest z wyrażeniem regularnym nie wiem jak poradzić sobie z kilkoma zakończeniami </div> pojawiającymi się w tekście.
Go to the top of the page
+Quote Post
matiit
post 16.04.2013, 16:54:41
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Uprość sobie życie: http://simplehtmldom.sourceforge.net/
Go to the top of the page
+Quote Post
Majcon
post 16.04.2013, 19:21:17
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

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


nie łatwiej użyć file_get_contents(); ?


  1. preg_match('/<div class=(.*)>(.+?)<\/div>/ism', $wejscie, $wyjscie);


tak spróbuj ;p
Go to the top of the page
+Quote Post
mstraczkowski
post 17.04.2013, 01:47:24
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


@Offtopic
Tak mi się przypomniało, patrząc na ten url w kodzie, że pierwotnie seo friendly linki miały za zadanie ułatwić ludziom zapamiętywanie adresów.
Tymczasem w tym przypadku jest jeszcze gorzej niż zapamiętanie np. samego ID artykułu w postaci query stringa ?id=514712 wink.gif

@Ontopic
Dla przyjemniejszego pisania i testowania wyrażeń regularnych polecam narzędzie online:
http://gskinner.com/RegExr/


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
Go to the top of the page
+Quote Post
semafor1985
post 17.04.2013, 07:25:22
Post #5





Grupa: Zarejestrowani
Postów: 61
Pomógł: 3
Dołączył: 18.10.2012
Skąd: Zagłębie Dąbrowskie

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


Cytat(mstraczkowski @ 17.04.2013, 02:47:24 ) *
Dla przyjemniejszego pisania i testowania wyrażeń regularnych polecam narzędzie online:
http://gskinner.com/RegExr/


dzięki fajna rzecz
tylko jedna sprawa: nie znalazlem modyfikatora "U" zmieniającego zachłanność kwantyfikatorów
źle szukam czy faktycznie nie ma?

Ten post edytował semafor1985 17.04.2013, 07:26:19
Go to the top of the page
+Quote Post
mstraczkowski
post 17.04.2013, 10:21:10
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


Modyfikator "U" w PHP nie jest kompatybilny z Perlem, o czym informuje sama dokumentacja:
Cytat
U (PCRE_UNGREEDY)
This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by ?. It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern or by a question mark behind a quantifier (e.g. .*?).

To narzędzie nie jest ukierunkowane na PHP tylko na ogólnie wyrażenia regularne - dlatego nie ma tam modyfikatora "U"
Dla spostrzegawczych na tej stronie jest także modyfikator "g", który nie występuje w regexpach w php.

Swoją droga zabawne, że nazywa się to PCRE_UNGREEDY, a w opisie znajduje się informacja It is not compatible with Perl.
Gdyż sam akronim PCRE oznacza: Perl Compatible Regular Expressions, ale na temat nazewnictwa w php można długo rozmawiać wink.gif

Ten post edytował mstraczkowski 17.04.2013, 10:25:41


--------------------
Jeżeli moja wypowiedź Ci pomogła użyj przycisku
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: 13.06.2025 - 08:50