Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydobywanie danych z strony
Forum PHP.pl > Forum > PHP
wojtek19115
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.
matiit
Uprość sobie życie: http://simplehtmldom.sourceforge.net/
Majcon
nie łatwiej użyć file_get_contents(); ?


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


tak spróbuj ;p
mstraczkowski
@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/
semafor1985
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?
mstraczkowski
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.