Autor | Zpráva | ||
---|---|---|---|
lukynnn Profil |
#1 · Zasláno: 10. 10. 2010, 12:56:23 · Upravil/a: lukynnn
Jak se dá docílit toho aby funkce: preg_match('~<tbody>(.*?)</tbody>~s',$stranka,$nalezy);
vynechala z $nalezy text např. Odkaz Nahoru. ? Jde to nějak vyloučit aby tento text preskočil? Díky |
||
Keeehi Profil |
#2 · Zasláno: 10. 10. 2010, 13:03:12
Jak vypadá proměnná $stranka a jak přesně má vypadat $nalezy.
Udělat jde všechno, jen je k tomu potřeba mít dostatek informací. |
||
lukynnn Profil |
#3 · Zasláno: 10. 10. 2010, 13:18:41
$stranka = file_get_contents("http://www.example.com/page.html"); preg_match('[^<a]','~<tbody>(.*?)</tbody>~s',$stranka,$nalezy); print_r ($nalezy[0]); a nálezy mají vypadat tak aby z te stránky page.html vybral od: <tbody> TEXt TEXT TEXT </tbody> a zobrazil to. |
||
Keeehi Profil |
#4 · Zasláno: 10. 10. 2010, 13:36:04 · Upravil/a: Keeehi
1) ten preg_match máte špatně zapsaný
'[^<a]', tam nemá co dělat.
2) Nějak nevidím ten problém: $stranka="nějaký text co nás vůbec nezajímá. <tbody> TEXt který chceme TEXT TEXT </tbody>a něco dalšího"; preg_match('~<tbody>(.*?)</tbody>~s',$stranka,$nalezy); echo $nalezy[0]; //výsledkem bude: //<tbody> TEXt //který chceme // TEXT TEXT </tbody> Pokud vstup vypadá jinak, tak byste měl uvést jak a jak by měl vypadat výstup. Na regulární výrazy se nedá použít jedno univerzální řešení, každý výraz se musí psát na míru, takže bez konkrétního příkladu to prostě nepůjde. |
||
lukynnn Profil |
#5 · Zasláno: 10. 10. 2010, 13:44:41
za ten preg_match se omlouvám to [^<a] tam opúravdu nemá co dělat jednalo se jen o testovací řešení a zapomněl sem to smazat. Jinak moc nechápu výsledek co by z toho měl vzniknout. Mě jde jen o to aby na této stránce-. http://www.klanovickeforum.cz/Program.html?page=2 se vynechaly ty všechny odkazy a texty jako KC Beseda a odkazy Objednat a Podrobnosti a to i s tím textem. Jde o to aby to bylo zadáno jako náká vyjímka v tom preg_match. ta proměná stránka má za ukol jen načíst celý zdrojový kod té strnáky a poté ten preg_match z toho vybere jen to co je mezi tagy <tbody></tbody> ale já bych chtěl aby při tom vybírání obsahu mezi <tbody></tbody> vynechal okdazy <a href="...">CK Beseda</a> a <a href......>Podrobnosti</a>. Z duvodu toho že není uvedená celá cesta a proto se to na mých stránkách zobrazuje nekorektně.
|
||
Keeehi Profil |
#6 · Zasláno: 10. 10. 2010, 13:57:50 · Upravil/a: Keeehi
V tom případě:
<?php $stranka = file_get_contents("http://www.klanovickeforum.cz/Program.html?page=2"); preg_match('~<tbody>(.*?)</tbody>~s',$stranka,$nalezy); echo preg_replace(array("~<a href=\".*?\">podrobnosti</a>~","~<a href=\".*?\">\s+?KC Beseda</a>~"),"",$nalezy[0]); ?> |
||
lukynnn Profil |
#7 · Zasláno: 10. 10. 2010, 14:13:48
Díky moc. Funguje to. :)
|
||
lukynnn Profil |
#8 · Zasláno: 10. 10. 2010, 14:32:30
Teď jsem ale chtěl odebrat z té stránky i odkaz objednat vstupenky ale nepodařilo se mi je dát pryč stále se zobrazují
echo preg_replace(array("~<a href=\".*?\">podrobnosti</a>~","~<a title=\".*?\" href=\".*?\">objednat vstupenky</a>~","~<a href=\".*?\">TRAILER</a>~","~<a href=\".*?\">\s+?KC Beseda</a>~"),array("",""),$nalezy[0]); |
||
Keeehi Profil |
#9 · Zasláno: 10. 10. 2010, 15:05:33 · Upravil/a: Keeehi
1)
"~<a title=\".*?\"\s+?href=\".*?\"\s+?>objednat vstupenky</a>~" 2) Jako druhý parametr funkce preg_replace() stačí "" .
3) Naučte se regulérní výrazy. Oficiální manuál: http://www.php.net/manual/en/book.pcre.php Tento odkaz sice není jen o regulérních výrazech, ale rozhodně stojí za to si to přečíst. http://home.pf.jcu.cz/~pepe/Diplomky/turon.pdf |
||
Časová prodleva: 14 let
|
0