Autor Zpráva
Adam501
Profil
Ahoj. Potřeboval bych poradit, jak udělat, aby se nějaký text z jiné stránky zkopíroval na tu moji. Ten samozdřejmě není pořád stejný. Prostě se třeba 1x za týden změní a já potřebuju, aby se při každé změně změnil i na mých stránkách. Jde to nějak udělat? Díky
Taps
Profil
Adam501:
jde to přes php - preg_match popř. preg_match_all + file_get_contents
Adam501
Profil
No. zkusil jsem googlovat a to co na mě vyjelo moc nechápu...přesněji jde o tabulku, která má 9 sloupců a 7 řádků...já potřebuju vytáhnout jenom 2 sloupce a všechny řádky
Keeehi
Profil
preg_match()
file_get_contents()
Klikni a zobrazí se ti manuál k těmto funkcím.

$stranka = file_get_contents("example.com"); //načte zdrojový kód stránky example.com a uloží ho do proměnné $stranka
To je ta jednodušší část. Teď se v proměnné $stranka musí vyhledat ta tvoje tabulka. Jelikož však nevím, jak vypadá ten zdrojový kód, nemůžu ti přesně poradit. Modelový příklad: Na té dané stránce se nalézá jako první tabulka ta tabulka, která tě zajímá. Potom získání celé tabulky se dá udělat takto:
preg_match('~<table>(.*?)</table>~s',$stranka,$nalezy);
echo $nalezy[0];
_es
Profil
Keeehi:
Jelikož však nevím, jak vypadá ten zdrojový kód, nemůžu ti přesně poradit.
Bez zodpovedania tejto otázky by bolo asi lepšie neradiť.
Možno nechce prezradiť zdrojovú stránku, lebo by bolo jasné, že s tým vlastník stránky asi nebude súhlasiť.
Adam501
Profil
Keeehi: Díky. Mrknu na to.
_es: A myslím, že je jedno, jestli to budu přepisovat ručně, nebo jinak zkopíruju.

Stránka s tabulkou: http://www.cvf.cz/souteze.php?action=skupina&id=2806

Když budu potřebovat stejný tabulky z jiný stránky tak jenom přepíšu nějakou věc, ne?
Keeehi
Profil
konkrétně tedy:
$stranka = file_get_contents("http://www.cvf.cz/souteze.php?action=skupina&id=2806"); 
preg_match('~<table width="100%" class="oznac" id="exp2word">.*?</table>~s',$stranka,$nalezy);
echo $nalezy[0];

Adam501:
Když budu potřebovat stejný tabulky z jiný stránky tak jenom přepíšu nějakou věc, ne?
Pravděpodobně bude potřeba přepsat jen adresa.
Adam501
Profil
Zkusil jsem to ťuknout do stránky a hází to tuhle chybu:

Warning: file_get_contents(): URL file-access is disabled in the server configuration in /3w/wz.cz/v/vkmadeta/zkouska.php on line 10

Warning: file_get_contents(http://www.cvf.cz/souteze.php?action=skupina&id=2806): failed to open stream: no suitable wrapper could be found in /3w/wz.cz/v/vkmadeta/zkouska.php on line 10


A ještě jeslit byste mi někdo mohl prosím vysvětlit ty značky
(.*?)
. Děkuju
Keeehi
Profil
Problém je v tom, že na severu mají nastavené allow_url_fopen off. Proto nefunguje ta funkce. Můžete třeba zkusit jiný hosting. Na ic.cz to funguje.

(.*?) -> . znamená jakýkoliv znak, * znamená libovolný počet opakování (0 až nekonečno) a ? dělá z hvězdičky nepožíravou hvězdičku (takto se vyhledává k prvnímu výskytu </table>, kdyby tam nebyl, vyhledávalo by se k poslednímu výskytu)

a ty závorky ohraničují subvýraz. Nějak se mi tam dostali navíc. Nejsou tam podstatné. V [#7] jsem to upravil.
Adam501
Profil
Díky. Zkusím napsat na fórko.
Keeehi
Profil
Můžeš to zkusit, ale nejspíš s tím nikdo nic neudělá, protože se jedná o freehosting. Nikdo pro tebe nemusí udělat nic (ale může).
Adam501
Profil
Teď mě ještě napadlo použít funkci "fopen". Myslím toto. Pouze čtení ze souboru. Důležitý je, jestli se zachovají mezery mezy slovy v řádku. Pořád je myslím jednodušší smazat kus sedmi řádků, než to přepisovat po jednom.
_es
Profil
Adam501:
Ten odkaz si mohol dať hneď, aby sa ostatným lepšie radilo.
Myslím, že pri takýchto informáciách a dátach je automatické sťahovanie raz za týždeň v poriadku.
Hlavne, aby nedochádzalo k automatickému sťahovaniu cez PHP pri každej návšteve stránky, to by sa nemuselo vlastníkovi tej zdrojovej stránky páčiť.
Adam501
Profil
To ano. Ale nenapadá mě, jak to ošetřit...Ale ono to stejně na webz nefunguje.
Adam501
Profil
Zkusil jsem to podle toho dokumentu v odkazu. Napsal jsem to takhle http://vkmadeta.wz.cz/fopen.php . A, jak je vidět, píše to chybu: Parse error: parse error, expecting `T_VARIABLE' or `'$'' in /3w/wz.cz/v/vkmadeta/fopen.php on line 11
Keeehi
Profil
Adam501:
To není chyba serveru, ale tvoje. V scriptu máš chybu ty. A PHP ti dokonce řekne kde. Stačí si přečíst tu chybovou hlášku.

parse error, expecting `T_VARIABLE' or `'$'' in /3w/wz.cz/v/vkmadeta/fopen.php on line 11
volný překlad: expecting = očekává, variable = proměnnou, in fopen.php = v souboru fopen.php, on line 11 = na řádku 11

Podle tohoto jistě už najdeš.
Adam501
Profil
Aha. Díky. Já nevěděl, že proměnná musí být na každém řádku.

Tak funguje!! Teď to zkopíruju do stránky, na kterou se odkazuje. Díky za pomoc.
Adam501
Profil
Na WZ někdo psal, jak povolit to file_get_contents v .htaccess. Akorát by mě zajímalo, jestli v tom jdou vytýhnout jen některé sloupce a zmenšit tabulku. Zkoušel jsem upravit procenta a když jsem napsal 50%, tak se nezobrazilo nic.
Keeehi
Profil
Adam501:
Zkoušel jsem upravit procenta a když jsem napsal 50%
Ten výraz takto upravit nemůžeš, neboť se podle něj vyhledává. A jelikož ve zdrojovém kódu té stránky tabulka s 50% nikde nenení, nemůže se nic najít a proto se nic nezobrazí

A o které sloupce ti jde?
Adam501
Profil
Potřeboval bych jen pořadí(to první číslo s tečkou), název, utkání a body.
Keeehi
Profil
$stranka = file_get_contents("http://www.cvf.cz/souteze.php?action=skupina&id=2806");
preg_match('~<table width="100%" class="oznac" id="exp2word">.*?</table>~s',$stranka,$matches);
preg_match_all("~<tr><td>(\d+?\.)</td><td><a href=\"\?action=druzstvo&subint=2806&id=.*?\">(.*?)</a></td><td>(\d+?)</td><td>\d+?</td><td>\d+?</td><td>\d+?</td><td>\d+?:\d+?</td><td>\d+?:\d+?</td><td>(\d+?)</td></tr>~",$matches[0],$nalezy);
array_shift($nalezy);
print_r($nalezy);

Hledané hodnoty jsou uložené v poli $nalezy. V tomto příkladu jsou narychlo vypsány funkcí print_r(); která zobrazí strukturu pole, avšak k normálnímu použití není. Pro vypsání na stránku si budeš muset zjisti něco o práci s poli. Není to vůbec nic těžkého. Doporučil bych použít foreach(){}.
Adam501
Profil
Díky. Ale asi si to nechám, až trochu zestárnu. Teď použiju ten první kód a dám ho na samostatnou stránku, na kterou bude odkaz. Díky moc!
Keeehi
Profil
Adam501:
To už rovnou můžeš dát odkaz na ty oficiální stránky. ;-)
Adam501
Profil
:) jo to je pravda, ale tohle je pro mě zajímavější :D Ne opravdu, teď trochu začínám nestíhat se školou(sice jen sedmá třída, ale...). A nebo si to nechám na volnou chvíli, o víkendu nebo tak.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0