firstUpper() se chova na localhostu a na serveru jinak

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ras
Člen | 135
+
0
-

Ahoj vsem,

dnes me trochu prekvapil server pote, co jsem na nej nahral aplikaci odladenou na localhostu. Kromy jinych veci, ktere jsou logicke se mi deje i jedna nepochopitelna.
vstup, napr. praha

use  Nette\Utils\Strings;
Strings::firstUpper($mesto["nazev"])

Vystup skrze sablonu na:

  • localhostu napr: Praha
  • serveru napr: P

Pouzivam nette.min

const NAME = 'Nette Framework',
	VERSION = '2.0-beta',
	REVISION = '8a3182e released on 2011-10-11';

Mate nekdo podobnou zkusenost ci najeky hezky napad na reseni …nemyslim ucfirst(), to funguje, ale myslim reseni „nastaveni“, abych to Strings::firstUpper() mohl pouzivat ;o)

Diky.

Radek

Pavel Kouřil
Člen | 128
+
0
-

Zeptám se takhle; co ti vrátí mb_strtoupper(‚praha‘, ‚UTF-8‘); ?

ras
Člen | 135
+
0
-

mb_strtoupper(‚praha‘, ‚UTF-8‘) vraci PRAHA na obou strojich (logicky)

Jan Tvrdík
Nette guru | 2595
+
0
-

Zkus

mb_strtoupper(mb_substr($s, 0, 1), 'UTF-8') . mb_substr($s, 1, mb_strlen($s, 'UTF-8'));
ras
Člen | 135
+
0
-

Jasne, to funguje … stejne jako ucfirst(), pres ktery jsem si to osetril … ale nechapu, proc mi nejde ten Strings::firstUpper(), proc to urezava. Strings::lower / upper / capitalize jsou OK ;o)

Fakt to moc nechapu … podle me na to ani nemuze mit vliv najake nastaveni na serveru, at jiz Apache ci PHP.

Cache jsem tady smazal ;o), vyzkouseno na vice prohlizecich, takze ani tim to neni.

Nicmene v Chrome a Opere (ve Firefoxu bezne delam) mi to haze

session_start(): session_start(): Cannot send session cache limiter - headers already sent (output started at ...blabla../web_temp/cache/_Nette.FileTemplate/_Homepage.default.latte-09736f3ce7aa867e14aac27a9176294f.php:12)

na radku z presenteru

$form->addProtection('Prosím stikněte tlačítko ještě jednou (bezpečnostní prvek vypršel).');

Takze zkusenejsi to uz mozna trklo, me to zatim jeste nedobehlo, ackoliv zacinam tusit … ;o)

ras
Člen | 135
+
0
-

Mno, kdyz ten radek s $form->addProtection() a zaremuji, tak je vse OK a Strings::firstUpper() svoje divne chovani nezmenil …

Ma nekdo nejake napady?

Diky, Radek

duke
Člen | 650
+
0
-

Divné chování firstUpper souvisí s bugem v mb_string rozšíření na 64-bitových platformách (kde funkce tohoto rozšíření interpretují PHP_INT_MAX jako 0). V poslední vývojové verzi Nette by k tomu už nemělo docházet, neboť to řeší tento commit: https://github.com/…ce029a0c32fd.