Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Funkcja eregi(), jak działa trzeci parametr?
kaem
post
Post #1





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


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 :|

Ten post edytował kaem 17.07.2008, 13:56:30
Go to the top of the page
+Quote Post
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


  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
Go to the top of the page
+Quote Post
kaem
post
Post #4





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

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


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.

Ten post edytował kaem 17.07.2008, 14:34:40
Go to the top of the page
+Quote Post
l0ud
post
Post #5





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Tak. Pierwsza wartość to całe wyrażenie, a to wyrażenie w tym przypadku jest tylko nawiasem.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post

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 Aktualny czas: 19.08.2025 - 08:56