Autor | Zpráva | ||
---|---|---|---|
preg Profil * |
#1 · Zasláno: 20. 5. 2010, 17:32:01
Ahoj jaká je maximální velikost řetězce, který může najít preg match? Mám teď totiž problém, že srkz něj protahuju delší text, přibližně 10KB a nefunguje. Pokud ale kus toho textu umažu, tak to funguje bez problému. Vím že to nezpůsobuje nějaký speciální znak v tom textu, je jedno kterou jeho část umažu, prostě jak je ten text delší než určitá délka tak to nefunguje... čím to může být a jak to můžu vyřešit? Žádnou chybu to nehází. Díky.
|
||
Majkl578 Profil |
#2 · Zasláno: 20. 5. 2010, 17:37:54
Podívej se na preg_last_error() a na konfiguraci. Zřejmě se jedná o backtrack_limit.
|
||
preg Profil * |
#3 · Zasláno: 20. 5. 2010, 17:56:46
Zkusil sem použít tu fnkci preg_last_error, ale nic mi nevrátila zkusil sem jí tím způsobem jak jí tam mají napsanou, a pak i tak že sem jen podmínkou zkusil jestli vůbec cokoliv vrátí, ale ani ťuk
|
||
Majkl578 Profil |
#4 · Zasláno: 20. 5. 2010, 19:00:00
Tak to zřejmě není chyba při vykonávání, ale v reguláru. Jinak by vrátila číselné označení chyby.
|
||
preg Profil * |
#5 · Zasláno: 20. 5. 2010, 19:07:12
Nemam tam nastavený žádný limit délky... normálně jen kde výraz začíná, kde končí a vše mezi tím beru pomocí .* a hvězdička je nekonečno ne? Pokud by byla nějaká chyba v tom reguláru, tak by nezáleželo na délce textu.. nemůžu na to přijít, proč to blbne :(
|
||
mckay_ Profil * |
#6 · Zasláno: 20. 5. 2010, 19:23:53
preg:
Občas se hodí ukázka zdrojáku... |
||
preg Profil * |
#7 · Zasláno: 20. 5. 2010, 20:06:06
Tady je ten výraz:
Má za úkol rozsekat a vrátit soubor s html kódem (je to část velice jednoduchého šablonovacího skriptu) preg replace: /\[if *(!?)([a-z0-9_]+)(?:\[([0-9a-z]+)\])? *(=?|<?|>?|!=?) *([a-z0-9ěščřžýáíéůúĚŠČŘŽÝÁÍÉÚŮ]*)\](.*)\[\/if \\2(?:\[\\3\])?\]/isU funguje to tak že v tom html souboru mám něco ve stylu třeba [if test] bla bla [/if test] výraz mi všechny tyhle podmínky najde, pak udělám hokus pokus ve skriptu a případně tu podmínku [if] smažu pomocí str_replace (tomu předám co ten preg_match našel).. a právě v tom odstranění to selhává pokud je zpracovávaný text moc dlouhý ten preg_replace protahuju cyklem while dokud nezpracuje všechny IFka v tom html souboru |
||
sarojan Profil |
#8 · Zasláno: 21. 5. 2010, 07:42:20
Zkus si vepsat na začátek dokumentu
error_reporting('E_ALL'); |
||
preg Profil * |
#9 · Zasláno: 22. 5. 2010, 10:17:48
to také nic nevypsalo bohužel
|
||
Časová prodleva: 14 let
|
0