Autor | Zpráva | ||
---|---|---|---|
Adam501 Profil |
#1 · Zasláno: 3. 10. 2010, 11:56:07
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 |
#2 · Zasláno: 3. 10. 2010, 12:00:25
Adam501:
jde to přes php - preg_match popř. preg_match_all + file_get_contents |
||
Adam501 Profil |
#3 · Zasláno: 3. 10. 2010, 12:11:32 · Upravil/a: Adam501
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 |
#4 · Zasláno: 3. 10. 2010, 12:36:57
preg_match() file_get_contents() $stranka = file_get_contents("example.com"); //načte zdrojový kód stránky example.com a uloží ho do proměnné $stranka preg_match('~<table>(.*?)</table>~s',$stranka,$nalezy); echo $nalezy[0]; |
||
_es Profil |
#5 · Zasláno: 3. 10. 2010, 12:44:58
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 |
#6 · Zasláno: 3. 10. 2010, 19:53:16
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 |
#7 · Zasláno: 3. 10. 2010, 20:23:14 · Upravil/a: Keeehi
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 |
#8 · Zasláno: 3. 10. 2010, 21:57:02 · Upravil/a: Adam501
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 (.*?) |
||
Keeehi Profil |
#9 · Zasláno: 3. 10. 2010, 22:48:13 · Upravil/a: Keeehi
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 |
#10 · Zasláno: 4. 10. 2010, 19:13:29 · Upravil/a: Adam501
Díky. Zkusím napsat na fórko.
|
||
Keeehi Profil |
#11 · Zasláno: 4. 10. 2010, 19:20:37
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 |
#12 · Zasláno: 4. 10. 2010, 19:22:48
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 |
#13 · Zasláno: 4. 10. 2010, 19:22:51
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 |
#14 · Zasláno: 4. 10. 2010, 19:27:08
To ano. Ale nenapadá mě, jak to ošetřit...Ale ono to stejně na webz nefunguje.
|
||
Adam501 Profil |
#15 · Zasláno: 4. 10. 2010, 20:51:09
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 |
#16 · Zasláno: 4. 10. 2010, 20:58:25 · Upravil/a: Keeehi
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 |
#17 · Zasláno: 4. 10. 2010, 22:25:54
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 |
#18 · Zasláno: 5. 10. 2010, 18:18:09
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 |
#19 · Zasláno: 5. 10. 2010, 18:32:01
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 |
#20 · Zasláno: 5. 10. 2010, 19:00:44
Potřeboval bych jen pořadí(to první číslo s tečkou), název, utkání a body.
|
||
Keeehi Profil |
#21 · Zasláno: 5. 10. 2010, 20:25:36 · Upravil/a: Keeehi
$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 |
#22 · Zasláno: 6. 10. 2010, 19:49:47
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 |
#23 · Zasláno: 6. 10. 2010, 20:01:16
Adam501:
To už rovnou můžeš dát odkaz na ty oficiální stránky. ;-) |
||
Adam501 Profil |
#24 · Zasláno: 6. 10. 2010, 20:26:57
:) 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.
|
||
Časová prodleva: 14 let
|
0