Autor Zpráva
preg
Profil *
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
Podívej se na preg_last_error() a na konfiguraci. Zřejmě se jedná o backtrack_limit.
preg
Profil *
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
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 *
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 *
preg:
Občas se hodí ukázka zdrojáku...
preg
Profil *
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
Zkus si vepsat na začátek dokumentu
error_reporting('E_ALL');
preg
Profil *
to také nic nevypsalo bohužel

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0