Autor Zpráva
lukynnn
Profil
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
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
$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
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
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
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
Díky moc. Funguje to. :)
lukynnn
Profil
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
1)
"~<a title=\".*?\"\s+?href=\".*?\"\s+?>objednat vstupenky</a>~"
by tomu mělo pomoct

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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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