Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja eregi()
Forum PHP.pl > Forum > Przedszkole
kaem
Witam, przerabiam taki skrypcik z książki, z której się uczę:
  1. <?php
  2. $symbol='AMZN';
  3.  $url="http://www.amex.com/equities/listCmp/EqLCDetQuote.jsp?Product_Symbol=$symbol";
  4.  if(!($zawartosc = file_get_contents($url)))
  5.  {
  6.  echo 'Otwarcie URL niemożliwe';
  7.  exit;
  8.  }
  9.  
  10.  $wzor = '($[0-9 ]+.[0-9]+)';
  11.  
  12.  if(eregi($wzor, $zawartosc, $kurs))
  13.  {
  14.  echo "<p>Ostatni kurs akcji $symbol: ";
  15.  echo $kurs[1];
  16.  echo '</p>';
  17. ?>

Wyświetla:
Cytat
Ostatni kurs akcji AMZN: $71.84

Dlaczego jak wyświetlam to używam $kurs[1]?
W manualu opis tego parametru wyląda tak:
Cytat
$regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.
Ktoś może mi to wytłumaczyć?

EDIT:
na zdrowy rozum powinno chyba chodzić o kolejność wystąpienia dopasowywanego stringu na stronie.
Ale myli mnie trochę to wyrażenie z manuala
Cytat
starts at the first left parenthesis
gdzie parentheisi oznacza nawias. Jaki nawias :|
l0ud
Nawias w wyrażeniu regularnym

Zobacz na kod:
  1. <?php
  2. $wzor = '($[0-9 ]+.[0-9]+)';
  3. ?>


Nawias określa ten blok kodu, który chcesz pobrać. Wyrażenie może składać się z kilku nawiasów, to akurat jest proste i ma jeden winksmiley.jpg
sowiq
  1. <?php
  2. if(eregi($wzor, $zawartosc, $kurs))
  3. {
  4. echo "<p>Ostatni kurs akcji $symbol: ";
  5. echo $kurs[1];
  6. echo '</p>';
  7. }
  8. ?>


Zrób sobie
  1. <?php
  2. print_r($kurs)
  3. ?>
i zobaczysz dlaczego tak, a nie inaczej winksmiley.jpg A tak BTW - stosowanie ereg() nie jest zalecane. Przyjrzyj się temu: http://pl.php.net/preg_match
kaem
Ok, dzięki już czaje z tymi nawiasami snitch.gif Chyba, bo co do tego print_r(), to wyświetliło mi takie same wartości w obu kluczach, bo jest tylko jeden nawias, gdyby były 2 to by wyświetliło co innego jeśli dobrze rozumiem?

Edit:
Właśnie sobie to przetestowałem. Dobrze rozumiem winksmiley.jpg Jeszcze raz thx.
l0ud
Tak. Pierwsza wartość to całe wyrażenie, a to wyrażenie w tym przypadku jest tylko nawiasem.
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.