Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wydobywanie danych z strony, PHP CURL Wyrażenia Regularne
wojtek19115
post
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
 
Start new topic
Odpowiedzi
mstraczkowski
post
Post #2





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ć (IMG:style_emoticons/default/wink.gif)

Ten post edytował mstraczkowski 17.04.2013, 10:25:41
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 18:11