| Autor | Zpráva | ||
|---|---|---|---|
| mackopu Profil |
#1 · Zasláno: 16. 8. 2011, 14:02:03
Zdravím,
načítám do stránky soubor s html obsahem, v něm jsou dvě tabulky a potřebuji vypsat jen první z nich: $link = "http://neco.cz";
$contents = str_replace("\r\n", "", file_get_contents($link));
if(preg_match('~<table>.*?</table>~i', $contents, $a)) { // ? = líný kvantifikátor
$table = $a[0];
}
echo $table;Pozn.: Při použití eregi() se sice vypsaly obě tabulky, ale alespoň něco: eregi('<table>.*</table>', $contents, $a) |
||
| Pan X Profil |
#2 · Zasláno: 16. 8. 2011, 15:09:34 · Upravil/a: Pan X
preg_match('~<table>(.*?)</table>~i', $contents, $a)edit: Nemáš tam navíc "i" ? |
||
| mackopu Profil |
#3 · Zasláno: 16. 8. 2011, 15:15:09
To i by mělo ignorovat velikost písmen. Odstranil jsem ho, regulár dal do závorek a stále nic.
|
||
| Majkl578 Profil |
#4 · Zasláno: 16. 8. 2011, 15:23:04
Možná, že kdybys sem dal odkaz na tu stránku, kterou stahuješ, nemuseli bychom věštit.
Zkus přidat modifikátor s, protože v případě, že konce řádků nejsou CRLF (Windows), tedy ty které nahrazuješ, pořád by tam nové řádky byly. Výpis na 6. řádku vypíše chybu úrovně E_NOTICE v případě, že preg_match nic nenajde. $link = 'http://example.com';
if (preg_match('~<table>.+</table>~Uis', file_get_contents($link), $match)) {
$table = $match[0];
} Pan X: Plácáš hlouposti. |
||
| mackopu Profil |
#5 · Zasláno: 16. 8. 2011, 15:42:26 · Upravil/a: mackopu
Majkl578:
Nic nezabírá. Odkaz na stránku není třeba. Když její obsah definuji natvrdo: $contents = 'blabla něco předtím... <table> <tr> <td>aaaaaa</td> </tr></table><p> </p><table> <tr> <td>bbbbbb</td> </tr></table> blabla cokoliv dalšího...'; |
||
| Majkl578 Profil |
#6 · Zasláno: 16. 8. 2011, 15:48:42
mackopu:
Tak to děláš něco špatně, protože tohle funguje: $contents = 'blabla něco předtím... <table> <tr> <td>aaaaaa</td> </tr></table><p> </p><table> <tr> <td>bbbbbb</td> </tr></table> blabla cokoliv dalšího...';
if (preg_match('~<table>.+</table>~Uis', $contents, $match)) {
var_dump($table = $match[0]);
} |
||
| mackopu Profil |
#7 · Zasláno: 16. 8. 2011, 16:07:31
Majkl578:
Máš pravdu. Já jsem pak totiž potřeboval upravit výsledný řetězec fcí preg_replace(): $str = preg_replace('([0-9]{2})/([0-9]{2})/([0-9]{4})', '\\1.\\2.\\3', $table); // převod formátu data
echo $str; |
||
| Majkl578 Profil |
#8 · Zasláno: 16. 8. 2011, 16:16:27
Chybí ti tam delimitery. Ty jsou u PCRE (narozdíl od ereg funkcí) povinné.
$str = preg_replace('~(\d{2})/(\d{2})/(\d{4})~', '\\1.\\2.\\3', $table); |
||
| mackopu Profil |
#9 · Zasláno: 16. 8. 2011, 16:18:54
Majkl578:
Tak to je ono! Teď to chodí jak má. Díky moc! |
||
|
Časová prodleva: 14 let
|
|||
0