Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][cURL] preg_match
Forum PHP.pl > Forum > Przedszkole
Trecco
Witam, mam mały problem ze skryptem, niby wszystko śmiga, ale pokazuje mi się ten błąd:
  1. Warning: preg_match() expects at least 2 parameters, 1 given in /home/trecco/public_html/test.php on line 9

na początku lini, na dole pokazuje wszystko tak jak ma być, oto kod:

  1. <?php
  2. $qwe = '/<html>(.+?)</html>/';
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_HEADER, 0);
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($curl, CURLOPT_VERBOSE, 1);
  7. curl_setopt($curl, CURLOPT_REFERER, 'http://strona.pl');
  8. curl_setopt($curl, CURLOPT_URL, 'http://strona.pl/sb.htm');
  9. preg_match($qwe);
  10. $google = curl_exec($curl);
  11. print_r($google);
  12. curl_close($curl);
  13. ?>


I jeszcze jedno, jak ściągnąć do pokazanego wyniku kod css?
mortus
Funkcja preg_match wymaga co najmniej dwóch parametrów. Pierwszy, to wzór do wyszukania, a drugi to przeszukiwany tekst.
thek
Dziwisz się... Ustaliłeś w preg_match co ma zrobić... Ale nie określiłeś GDZIE ma to zrobić winksmiley.jpg Popatrz sobie na manuala tej funkcji, a doznasz olśnienia, bo byk masz wypisany jak na dłoni. Aż dziw, że sam najpierw tam od siebie nie zajrzałeś.
Trecco
Teraz została tylko sprawa wyświetlenia kodu z podanej strony, jak zaznaczyć aby wyszukało od
  1. <table class="table_lst table_lst_stp">
do następnego zamknięcia table? Gdzie mogę dostać jakieś instrukcje naprowadzające z tymi znakami? Jak na razie kod wygląda tak:
  1. <?php
  2. $pattern = '/\<table class="table_lst table_lst_stp"\>([^\/]*)\<\/table\>/';
  3. $subject = "abcdef";
  4. $curl = curl_init();
  5. curl_setopt($curl, CURLOPT_HEADER, 0);
  6. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($curl, CURLOPT_VERBOSE, 1);
  8. curl_setopt($curl, CURLOPT_REFERER, 'http://strona.com');
  9. curl_setopt($curl, CURLOPT_URL, 'http://www.strona.com/serverek/dannte/');
  10. preg_match( $pattern , $subject , $matches , PREG_OFFSET_CAPTURE , 3 );
  11. $google = curl_exec($curl);
  12. print_r ( $google );
  13. curl_close($curl);
  14. ?>
semper
W gruncie rzeczy po co używasz wyrażeń regularnych do tego typu zadania? Nie lepiej zassać ten plik HTML i odnaleźć dane z tablicy za pomocą wbudowanego parsera DOM ? Tutaj masz przykład z tabelą, a pełna dokumentacja jest tu.
Trecco
Generalnie nie ma potrzeby pobierać całego kodu, tak chyba będzie najwygodniej, po za tym skrypt już jest, ale potrzebuję pomocy w wskazaniu pola przez preg_match http://www.gametracker.com/server_info/77.220.185.29:27179/ tu mam link do kodu, chcę pobrać przed ostatnią tabelkę po lewej jak mam ją wskazać?
thek
Ja bym się mimo wszystko skłaniał do użycia Xpath, co jest w tym wypadku banalne, a co zresztą Ci już w PW napisałem.
Top10 -> /html/body/div[6]/div[4]/div[5]/table
Online Players -> /html/body/div[6]/div[4]/div[5]/div/table

Tak po kolejnym PW ponownie zajrzałem na stronkę. Ponownie poleciłem Xpath zamiast preg_match i nakierowałem oprócz tego na jeden fakt:dane są w pewnej części usługami typu AJAX. Niech rozkmini jak się przy pomocy wskazywanego przez Firebuga ajax_requests.php dobrać do danych i je rozkodować to dostanie zapewne choć część danych bez zabawy z DOM i Xpath.
Trecco
no ale jak ten xpatch użyć na pliku zewnętrznym? szukałem mniej więcej, ale znalazłem same funkcje z przykładami xml, napisałem coś takiego:
  1. <?php
  2. load('http://www.gametracker.com/server_info/193.33.177.15:27106/');
  3.  
  4. $xpath = new DOMXPath($doc);
  5. $arts = $xpath->query("/html/body/div[6]/div[4]/div[5]/div/table");
  6.  
  7. foreach ($arts as $art)
  8. {
  9. echo $art->nodeValue."";
  10. }
  11. ?>


ale mi wywala
  1. Fatal error: Call to undefined function load() in /home/bgtest/domains/1245896/public_html/test3.php on line 2
thek
A to istnieje w php funkcja load? Pierwsze słyszę o niej smile.gif Ja znam fopen czy filegetcontents i to nimi raczej sie posługuj przy pobieraniu pliku z netu winksmiley.jpg Jeśli już skądś drzesz przykłady to chyba najlepiej popatrz tutaj -> http://pl.php.net/manual/pl/class.domxpath.php <- i przemyśl to co oni jako example dają oraz przerób do własnych potrzeb winksmiley.jpg
Trecco
ehh, no nie mam pojęcia jak to zrobić, na manualu jest masa przykładów z html'a i xml ale wewnatrz pliku. probowalem mieszać xpatch z curl sam xpatch z przykładami ale ciągle błędy, zresztą sam widzę, że to co pisze jest bez sensu. moze jakaś propozycja?
thek
Zacznij więc od pierwszego, bazowego zadania... Pobierz plik i zobacz jak wygląda on w środku by móc ocenić czy tam są te dane które chcesz. Jesli tak, zobacz strukturę. Jesli nie, to znaczy, że to ktoryś z plików AJAXowych i musisz wiedzieć ktory, oraz jak go obrobić.
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.