Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]preg_match, co nie tak?
grzegosh
post 17.06.2009, 16:18:36
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Witam.
Uczę się od paru godzin jak pobrać interesującą mnie część strony. Wybrałem do treningu onet i dział sportowy, który chcę wyciąć i umieścić na testowej stronie.
Wyrażenie reguralne zrobiłem dobrze, sprawdziłem je na stronie regexpal.com - dowód: http://img200.imageshack.us/img200/1530/zrzutq.jpg

Kod php
  1. <?php
  2. $subject = file_get_contents("http://www.onet.pl");
  3. preg_match('|<ul id="nsg_box_sport">.*?(s*?.*?)*?</ul>|', $subject, $matches);
  4.  
  5. echo "<br /><br />";
  6. print_r ($matches);
  7. ?>

Niestety, owy kod wyświetla mi tylko Array(), jeśli zamieniam | na / na początku i na koncu, wyświetla błąd:
Warning: preg_match() [function.preg-match]: Unknown modifier 'l' in ... on line 3

O co chodzi? Zapewne o to, że nie wiem jak wpisać to wyrażenie do funkcji preg_match... To zapewne błachy problem, ale proszę o wyrozumiałość. Dziękuję.
Go to the top of the page
+Quote Post
Wicepsik
post 17.06.2009, 16:23:10
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. <?php
  2. preg_match('/<ul id="nsg_box_sport">.*?(s*?.*?)*?</ul>/', $subject, $matches);
  3. ?>


--------------------
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 16:25:45
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Dzięki za tak szybką odpowiedź smile.gif
Nie wiem gdzie mam oczy, ze nie wziąłem tego backslesha przy </ul>...
Aczkolwiek, dalej nie działa poprawnie, wyświetla tylko Array ( ).
W czym leży błąd?
Go to the top of the page
+Quote Post
ernie242
post 17.06.2009, 16:27:46
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 2.02.2009

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


może też być tak:

preg_match('%<ul id="nsg_box_sport">.*?(\s*?.*?)*?</ul>%', //itd

oba działają.
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 16:31:45
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Tak, potwierdzam, działa tak samo jak Wicepsika kod, aczkolwiek dalej uzyskuję tylko Array().
Jak uzyskać tę część strony, co robię źle, bo nie mogę dojść...
Go to the top of the page
+Quote Post
Wicepsik
post 17.06.2009, 16:39:21
Post #6





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


U mnie wyświetliło tak smile.gif

  1. Array ( [0] =>
  2.  
  3. * Hiszpania - Irak "akcja po akcji"
  4. * El. ME: dzi mecz ostatniej szansy dla Polakw
  5. * Puchar Konfederacji: Hiszpanie bij gow w iracki mur
  6. * Zawodnik Legii sprzedany do klubu Serie A
  7. * F1: ostateczne stanowisko teamw - "nie chcemy odchodzi, chcemy startowa"
  8. * Pi�� ofert dla polskiego bramkarza Arsenalu
  9. * ATP w Eastbourne: "Matka" i "Frytka" w pfinale
  10. * Angielska prasa broni Howarda Webba
  11.  
  12. [1] => > )


Więc ty masz źle, nie ja smile.gif


--------------------
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 16:43:57
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Wicepsik, mógłbyś wkleić cały Twój kod? Może mam literówkę gdzieś, lub coś w ten deseń...
Moj wygląda tak:
  1. <?php
  2. $subject = file_get_contents("http://www.onet.pl");
  3. preg_match('/<ul id="nsg_box_sport">.*?(s*?.*?)*?</ul>/', $subject, $matches);
  4.  
  5.  
  6. echo "<br /><br />";
  7. print_r ($matches);
  8. ?>
Go to the top of the page
+Quote Post
ernie242
post 17.06.2009, 16:44:29
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 2.02.2009

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


a skąd uruchamiasz ten skrypt ? Problem może być z połączeniem z onet.pl.
var_dump ($subject); żeby zobaczyć czy tak jest.
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 16:46:43
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


localhost. Strona pobiera się wporządku, po dumpie: string(81005) i dalej onet cały.
Go to the top of the page
+Quote Post
ernie242
post 17.06.2009, 17:12:35
Post #10





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 2.02.2009

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


nie ma literówek, o dziwo powinno działać.
Jedyne co przychodzi na myśl to problem z kodowaniem znaków... choć to mało prawdopodobne...

Ten post edytował ernie242 17.06.2009, 17:18:06
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 20:15:08
Post #11





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


No nie działa mi, ani na webservie ani na vertrigo :/ już tego nie rozumiem, co źle robie?
Mógłby ktoś skopiować ów kod i wypróbować u siebie na localhoscie?
Albo mógłby ktoś napisać jakieś inne wyrażenie regularne pobierające dane z jakiejś innej strony, żebym wypróbował u siebie?
Dziwna sprawa...
Go to the top of the page
+Quote Post
cojack
post 17.06.2009, 20:23:49
Post #12





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


  1. <?php
  2.  ini_set("display_errors", 1);
  3. ?>

i sie dowiesz dlaczego masz puste Array


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 20:31:35
Post #13





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


cojack nic sie nie wyświetla. Wklejałem Twój kod na początku skryptu, na końcu - nic się nie wyświetliło prócz Array()
Podmieniłem na wp.pl, zmienilem wyrażenie regularne i dalej Array().
Na prawdę, nie mam pojęcia co może być źle...
Go to the top of the page
+Quote Post
erix
post 17.06.2009, 21:06:38
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Podmieniłem na wp.pl, zmienilem wyrażenie regularne i dalej Array().

Pokaż jak to wyświetlasz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 21:08:19
Post #15





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


  1. <?php
  2. $subject = file_get_contents("http://www.wp.pl");
  3. preg_match('/<ul id="bxSportLista">.*?(s*?.*?)*?</ul>/', $subject, $matches);
  4.  
  5.  
  6. echo "<br /><br />";
  7. print_r ($matches);
  8. ?>

Ten kod, ten wyżej z onetem... ani jeden, ani drugi. Zmieniłem adres na stronę, którą wykonywałem dla firmy, napisana była w htmlu. Chciałem pobrać odpowiednie elementy ale dalej to samo, ani błędu, ani nic, tylko Array(). Nothing else...
Go to the top of the page
+Quote Post
Fifi209
post 17.06.2009, 21:12:41
Post #16





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Może tak:

Kod
'/<ul id=\"bxSportLista\">.*?(\s*?.*?)*?<\/ul>/i'


Ten post edytował fifi209 17.06.2009, 21:12:50


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 21:18:50
Post #17





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Nic... Prócz Array()
  1. <?php
  2. $subject = file_get_contents("http://www.wp.pl");
  3. preg_match(' /<ul id=\"bxSportLista\">.*?(s*?.*?)*?</ul>/i', $subject, $matches);
  4.  
  5.  
  6. echo "<br /><br /><pre>";
  7. print_r ($matches);
  8. echo "</pre>";
  9. ?>

Może to ktoś skopiować i zapisać dokładnie tak jak jest? Wtedy będzie pewne, czy to wina mojego skryptu czy raczej wina np apacha, choć nie wiem dlaczego... bo jak robie echo $subject; wyswietla całą strone... Czyli jakby preg_match cos nie tak robiło, mimo, że zmienna matches ustawia sie jako tablica...
Go to the top of the page
+Quote Post
cojack
post 17.06.2009, 21:28:34
Post #18





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


spróbuj tym http://pl.php.net/manual/en/class.domdocument.php


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
grzegosh
post 17.06.2009, 21:40:27
Post #19





Grupa: Zarejestrowani
Postów: 51
Pomógł: 3
Dołączył: 26.06.2008

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


Oj, nie miałem nigdy styczności z DOM, na razie nie chciałbym się zagłębiać w to, bo wydaje się skomplikowane. Prosiłbym tylko o sprawdzenie tego co wkleiłem wyżej, czy to faktycznie działa i to apache winny jest, czy też wina leży w skrypcie. Podziękować smile.gif
Go to the top of the page
+Quote Post
ernie242
post 17.06.2009, 22:49:56
Post #20





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 2.02.2009

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


dokładnie ten sam kod co podałeś teraz wkleiłem i działa bez problemu z konta. (za kompa nie idzie, pewnie jakieś ustawienie Apache mam nie teges). Wynik:

Cytat
Array
(
[0] =>

* Dwie atrakcyjne oferty dla pi�karza Lecha. Pobij� transferowy rekord Ekstraklasy?!
* PK: niechciany przez Legi� prowadzi do zwyci�stwa!
* LM: decyzja ws kontrowersyjnego pó�fina�u Chelsea - Barca!
* EL. ME: Polska rozbi�a rywali. Awans jest blisko
* Takiej oferty Jerzy Dudek si� nie spodziewa�!
* Agnieszka Radwa�ska wygra�a w 13 minut!
* Szalony trener! Co rok ucieka od niego 7 zawodnikĂłw
* Chelsea w��cza si� do walki o czarodzieja. Ma si� uda�!
* Zaszokowa� szybkim transferem do Polski. Co go skusi�o?
* Niesamowity rekord w Polsce! "Super, super, super"
* Boruc do FC Barcelony? Zaistnia�a niepowtarzalna szansa
* B�d� wzmocnienia z Brazylii dla pi�karskiej kadry Polski


[1] => >
)


Ten post edytował ernie242 17.06.2009, 22:50:48
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 10:28