Autor | Zpráva | ||
---|---|---|---|
capricorn76 Profil * |
#1 · Zasláno: 31. 3. 2013, 18:37:28
Dobrý den,
tento regulár funguje, když před a za tabulkou jsou bílé znaky. Když před a za tabulkou nejsou bílé znaky, tak nefunguje. Potřeboval bych poradit, jak docílím toho, aby ten regulár fungoval v obou případech, bez bílých znaků a s bílými znaky. Děkuji. preg_match('~(?:\s*)?(?:\s+)<table(.*?)>(.*?)</table>(?:\s+)?(?:\s*)~is', $files, $table_html) |
||
Tori Profil |
#2 · Zasláno: 31. 3. 2013, 18:40:45
Nestačilo by tohle?
preg_match('~<table(.*?)>(.*?)</table>~is', $files, $table_html)
První část hledá nula nebo víc mezer, které tam ale nemusí být. Druhá hledá jednu nebo více mezer povinně (a to je to, co vám překáží). |
||
capricorn76 Profil * |
#3 · Zasláno: 31. 3. 2013, 18:48:27
Tori:
tohle jsem taky zkoušel, ale když jsou bílé znaky, tak to nefunguje. preg_match('~<table(.*?)>(.*?)</table>~is', $files, $table_html) |
||
DJ Miky Profil |
#4 · Zasláno: 31. 3. 2013, 19:18:29
Můžeš poslat nějaký ukázkový vstup, na kterém to nefunguje? Chyba může být někde jinde.
|
||
capricorn76 Profil * |
#5 · Zasláno: 31. 3. 2013, 19:46:12
DJ Miky:
$files = '<table style="height: 182px;" border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td>Test1</td></tr></table>'; $files .= ' <table><tr><td>Test2</td></tr></table> '; $files .= ' <table> <tr> <td>Test3</td> </tr> </table>'; if(preg_match('~<table(.*?)>(.*?)</table>~is', $files, $table_html)){ print_r($table_html[0]); } Vypíše 'Test1', ale mělo by se vypsat vícerozměrné pole, kde budou řádky z těch tří tabulek |
||
Tori Profil |
#6 · Zasláno: 31. 3. 2013, 19:51:56
|
||
capricorn76 Profil * |
#7 · Zasláno: 31. 3. 2013, 20:22:31
Tori:
Proč to nepůjde pouze přes preg_match ?
|
||
DJ Miky Profil |
#8 · Zasláno: 31. 3. 2013, 20:47:59
preg_match hledá pouze první výskyt (= testuje, jestli zadaný řetězec vyhovuje zadanému reg. výrazu), preg_match_all naproti tomu hledá všechny výskyty.
|
||
Časová prodleva: 11 let
|
0