Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
Manderigon
Witam!
Mam problem, otóż nie wiem (a próbuję) wyciągnąć oceny ze strony dziennika internetowego. Mam taki skrypt:

  1. <html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl">
  2.  
  3. <head>
  4. <title>Pokaz srednia</title>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  6. </head>
  7.  
  8. <body>
  9.  
  10. <?php
  11. $ch = curl_init("http://srednia.gofreeserve.com/ocena.php");
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  13. $source = curl_exec($ch);
  14. curl_close($ch);
  15.  
  16. $wyrazenie = '/^<b>[A-Za-z]:</b>/g';
  17. preg_match_all($wyrazenie, $source, $wynik);
  18. echo $wynik;
  19.  
  20. // $wyrazenie = '/<b>Ocena:</b> [1-6]<br>/';
  21. // preg_match_all($wyrazenie,$source,$wynik);
  22. // echo $wynik;
  23.  
  24. // $wok = GetBetween($source,'<h1> ','</h1>');
  25. // echo $wok;
  26.  
  27.  
  28. // function GetBetween ($text, $s1, $s2) {
  29. // $mid_url = "";
  30. // $pos_s = strpos($text,$s1);
  31. // $pos_e = strpos($text,$s2);
  32. // for ( $i=$pos_s+strlen($s1) ; (( $i<($pos_e)) && $i < strlen($text)) ; $i++ ) {
  33. // $mid_url .= $text[$i];
  34. // }
  35. // return $mid_url;
  36. // }
  37.  
  38. ?>
  39.  
  40. </body>


To co jest zaznaczone w komentarzach to były moje poprzednie próby - funkcją GetBetween oraz próba wyciągnięcia danych ze znaczników <h1> i <b>. W tej chwili czytam różne kursy na temat tych wyrażeń regularnych, ale efekty jak widać nie są zaskakujące. Błąd nie występuje z curlem, bo source mi normalnie pobiera. Proszę o pomoc.
Pozdrawiam.
!*!
  1. '/\<b\>([a-zA-Z0-9\s\:]+)\<\/b\>/'
usb2.0
a nie dziwne jest to, że musisz wyciągać te oceny? przecież chyba nie znalazły się na tej stronie tylko przez html
jeśli wrzucasz je przez php, a zakładam że tak, to chyba możesz się do nich odwołać
Manderigon
Nie bardzo rozumiem, o co Ci chodzi.

@!*! - wyskakuje tylko "Array".
!*!
Cytat(Manderigon @ 24.11.2012, 13:15:38 ) *
@!*! - wyskakuje tylko "Array".


I dobrze, bo tak ma być.

  1. <?php
  2. $link = file_get_contents('http://srednia.gofreeserve.com/ocena.php');
  3. preg_match_all('/\<b\>([a-zA-Z0-9\s\:]+)\<\/b\>/', $link, $match);
  4. echo '<pre>';
  5. print_r($match);
  6. ?>

Manderigon
No okej, wyskakuje mi:

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. )
  6.  
  7. [1] => Array
  8. (
  9. )
  10.  
  11. )


Ale co mi to da? Co to ma do wyciągnięcia danej oceny z przedmiotu? Zielonooo mi. sadsmiley02.gif
!*!
Wyrażenie które Ci podałem, pobiera nazwy przedmiotów, pomiędzy znacznikami <b>, zrób to na tej samej zasadzie tylko tyle że dla ocen.
Manderigon
Okej. Jedno z ostatnich pytań: jak wyświetlić dany przedmiot? print_r($match[0]) nie bardzo działa, bo wyświetla pustą tablicę.

Jestem Ci wdzięczny za chwilę poświęconą dla mnie na pomoc w skrypcie. smile.gif
!*!
  1. echo '<pre>';
  2. print_r($match);


print_r zwróci Ci zawartość całej tablicy, odwołaj się do niej po odpowiednim kluczu.
Manderigon
Z tego co zauważyłem po wejściu na stronę to tablica zwraca pustkę. (porównuję do przykładów z google'a)
!*!
Jakich przykładów?
Manderigon
1.

  1. <pre>
  2. <?
  3. $imiona = Array('Marcin', 100 => 'Daniel', 200 => 'Magda', 'Paulina');
  4. print_r($imiona);
  5. ?>
  6. </pre>

  1. (
  2. [0] &#8658; Marcin
  3. [100] &#8658; Daniel
  4. [200] &#8658; Magda
  5. [201] &#8658; Paulina
  6. )

  1. $imiona = Array('Marcin', 100 => 'Daniel', 200 => 'Magda', 'Paulina');
  2. echo $imiona[0]; // wyświetli Marcin
  3. echo $imiona[200]; // wyświetli Magda
  4. $imiona[201] = 'Katarzyna'; // zmiana wartości
  5. echo $imiona[201]; // wyświetli Katarzyna


2.

  1. <?php
  2.  
  3. $array_tygodnia = array("poniedzialek", "wtorek", "środa",
  4. "czwartek", "piątek", "sobota");
  5. //tworzenie tablicy funkcją array
  6.  
  7. $tablica_tygodnia[] = "poniedzialek";
  8. // tworzenie tablicy za pomocą operatora []
  9.  
  10. $tablica_tygodnia[] = "wtorek";
  11. // dodanie do tablicy kolejnego elementu
  12.  
  13. $array_tygodnia[] = "niedziela";
  14. //dodanie nowego elementu
  15.  
  16. $array_tygodnia[1] = "wtorek";
  17. // zmiana drugiego elementu tablicy
  18.  
  19. print_r($tablica_tygodnia);
  20. //wypis na ekran tablicy
  21.  
  22. echo $array_tygodnia[3].'<br />';
  23. // wypis 4 elementu tablicy - czwartek
  24.  
  25. echo count($array_tygodnia);
  26. ?>


Ogólnie wpisuje w google: "php odwołanie się do tablicy klucz" i szukam, szukam, szukam..
fnt
Jesli dobrze wpisales to co napisal !*! to nie mozliwe jest zeby tablica zwracała pustke
Manderigon
Hmm.. A co mam źle przy tym wyrażeniu?

  1. /\<a href="/mobile/oceny/8372520" \>\([0-6])\<\/a\>/


  1. <a href="/mobile/oceny/8372520" >5</a>


Najlepiej prosiłbym o objaśnienie.


P.S Mógłbym jakoś zrobić, aby zwracało mi tylko jedną tablicę z tym wszystkim lub kilka, gdzie są odpowiednio oddzielone OKRES 1 ; OKRES 2 ; OCENY ROCZNE ?
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.