Autor Zpráva
xxxadam577
Profil
Ahoj,
potřebuji poradit.
Trošku si hraju a nevím si rady. Rád bych z cizí stránky vypsal informaci. Třeba z [url=http://mshokej.xf.cz/Click me[/url] vypsat výsledek u dvojtečky. Vím, že stránku vložím pomocí file_get_contents a pak hledám s preg_replace, ale nějak se mi to nedaří :). Děkuju za pomoc
Taps
Profil
xxxadam577:
já používám file_get_contents + preg_match_all
xxxadam577
Profil
Můžeš prosím uvést příklad pro pochopení? :)
Taps
Profil
xxxadam577:
tady rjwebdesign.cz/blog/PHP/20080612-Ukazujeme-Fotbalove-Tabulky je uvedena spousta příkladů
RastyAmateur
Profil
xxxadam577:
Já se tedy v regulárech také moc neorientuji, ale kdybys stále nevěděl, jak to sestavit, tady je vcelku fungující ukázka... Ovšem můj způsob výběru stránky není moc ideální. Asi by mi to spoustu programátorů totálně zkritizovalo, ale funguje to :) Použij to tedy v případě nouze!
<meta charset="utf-8">
<?php
  $html = file_get_contents("http://mshokej.xf.cz/");
  preg_match_all("/<div class=\'zapas\'>\s*<font class=\'dvojtecka\'>:<\/font>\s*<font class=\'vysledek1\'>([^<]*)<\/font>\s*<font class=\'vysledek2\'>([^<]*)<\/font>\s*<img src=\'([^\']*)\'class=\'vlajka1\'>\s*<img src=\'([^\']*)\' class=\'vlajka2\'>\s*<font class=\'stat1\'>([^<]*)<\/font>\s*<font class=\'stat2\'>([^<]*)<\/font>\s*/", $html, $matches);
  
  foreach($matches[3] as $key => $val){
    echo "<img src=\"http://mshokej.xf.cz".$val."\" height=\"20px\">";
    echo '&nbsp; '.$matches[1][$key].':'.$matches[2][$key].'&nbsp;';
    echo "<img src=\"http://mshokej.xf.cz".$matches[4][$key]."\" height=\"20px\">";
    echo "<br>";
    }
?>
Výsledek
xxxadam577
Profil
Ahoj, v tvém řešení mi to hlásí chybu v foreach :(


Rozhodl jsem se začít něčím jednodušším, tak jsem se rozhodl z webu (jiného) vytáhnout pouze malou část textu.
<?php
 $f = file_get_contents("http://www.pizza-mex.cz/kontakty.php");         
 preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/', $f, $out);       
 $my_table = $out[1];
 echo $my_table;
?>
nefunguje mi ani toto, co by mělo být easy.
( ! ) Notice: Undefined offset: 1 in C:\wamp\www\vypis.php on line 4
Lonanek
Profil
Neřekl bych, že je to foreach, ale v preg_match_all(). Chybí mi tam v čem nahradit (subject) a kam uložit (matches).
Tedy asi takto:
  preg_match_all("/<div class=\'zapas\'>\s*<font class=\'dvojtecka\'>:<\/font>\s*<font class=\'vysledek1\'>([^<]*)<\/font>\s*<font class=\'vysledek2\'>([^<]*)<\/font>\s*<img src=\'([^\']*)\'class=\'vlajka1\'>\s*<img src=\'([^\']*)\' class=\'vlajka2\'>\s*<font class=\'stat1\'>([^<]*)<\/font>\s*<font class=\'stat2\'>([^<]*)<\/font>\s*/", $html, $matches);
xxxadam577
Profil
Lonanek,
zkusil jsem tvé řešení, nehází to chybu, ale ani text. Bílá stránka.
RastyAmateur
Profil
Lonanek:
Omlouvám se, špatně jsem to zkopíroval - odmazával jsem si komentáře...

xxxadam577:
Určitě to musí jít, testoval jsem to...
Lonanek
Profil
xxxadam577:
ale ani text. Bílá stránka.
Chyba v kódu. Co na to log chyb? Kde hostujete?
xxxadam577
Profil
Lonanek, vše mám zpuštěné na localhostu momentálně. Už jsem v polovině, ale pro ulehčení práce jsem trochu upravil postup.
Všeobecné se mi vypisuje toto

Array ( [0] => vysledek0 [1] => vysledek1 [2] => vysledek2 ) 

Co mám dělat, když chchi vypsat pouze vysledek 1?

Omlouvám se, jsem dřevák, ale teprve se učím :)
Lonanek
Profil
echo $matches[1];
pokud jsem správně pochopil o co se snažíte.
xxxadam577
Profil
Ono pod $matches[0] se mi vypíše Array ( [0] => vysledek0 [1] => vysledek1 [2] => vysledek2 )
při $matches[1] se napíše chyba Undefined offset: 1
RastyAmateur
Profil
xxxadam577:
Vyzkoušej $matches[0][1]
xxxadam577
Profil
Děkuju za pomoc, dal jsem to dohromady!! Díky moc !

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: