Oznámení

Provoz fóra byl ukončen

Chyby pri mbstring function overload

před 12 lety

ujojozef
Člen | 3

Používam mbstring.func_overload = 7 a žial zistujem, že inak fantastické Texy! je pri tejto konfugurácii prakticky nepoužitelné… Vie sa o tom?

před 12 lety

David Grudl
Nette Core | 6806

Co zkusit nastavit mb_internal_encoding('ISO-8859-1') nebo něco takového?

před 12 lety

ujojozef
Člen | 3

Ďakujem, pomohlo to! Dôvod bude, že preg_* funkcie to nepreťažuje? Alebo sa mýlim?

před 12 lety

David Grudl
Nette Core | 6806

Spíš jde o ty funkce, které přetěžuje, takže třeba substr, strlen apod.

před 12 lety

ujojozef
Člen | 3

Tak potom mi to uniká… Ja som totiž mal interný encoding na UTF-8. Kedže str preťažuje, tak tam by som si myslel, že mu bude jedno aký je interný encoding – poradí si s ním. Ale kedže preg* to nepreťažuje (a Texy! preg* používa) to by som videl ako kameň úrazu.

Podpora UTF-8 je jedna zo slabin PHP, to je isté.

před 12 lety

David Grudl
Nette Core | 6806

Problém je v tom, že preg, ačkoliv podporu pro UTF-8 má (modifikátor u), tak parametr offset přijímá a následně vrací „v bajtech“, nikoliv „ve znacích“. V bajtech pracují tak funkce str*, protože UTF-8 nepodporují.

Jakmile začnou pracovat „ve znacích“, tj. po přetížení na chytřejší mb_str* funkce se zapnutou podporou UTF-8, tak vznikne nesoulad mezi str* a preg* a je to … někde ;)

Do Texy jsem přidal detekci, jestli náhodou není func_overload a UTF-8 aktivní.