Stránka 1 z 1

PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 16:36
od arxeiss
Mám problém. V jednom skriptu potřebuju převést písmena na ASCII kód. Ovšem když převedu např text 'něco' tak mi o vrátí 5x ASCII daného písmene, ale 'ě' to bere jako 2 písmena, i přesto že v ASCII je přímo kód pro 'ě' stejně jako pro 'ů'
Mohl by někdo pomoct please?

Edit:\\ Když např napíšu

Kód: Vybrat vše

$text = "ů";
echo $text[0].$text[1];
tak to vypíše 'ů',
jakmile ale mezi to vložím třeba mezeru tak mi to vyhodí 2x ?

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 17:08
od OndraSter
Pouzij mb_strlen, nebot u (sry, nemam ty ted diakritiku) jsou normalne za klasickym ascii.PHP pouziva utf, kde na tyto znaky (i v jinych, ale dnes se vsude tlaci utf) kde jsou tyto spesl znaky na 2B, schvalne napis u s krouzkem v notepadu, uloz jako utf a uvidis, ze bude mit 2B a pres hexeditor uvidis jednotlive casti.


Pro texty v utf se v php pouzivaji mb_ funkce (tzn mb_strlen, mb_substr atd)

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 17:12
od arxeiss
Teď jsem přišel na to že když to předělám do CP1250 tak to hodí správně. Ale stejně ani to mb_strlen nefičí

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 17:31
od OndraSter
mb_strlen("ů", 'UTF-8'); mi vrací číslo 1 8-)

Samotné mb_strlen("ů") však dva... kdoví, jak to PHP kompilují, jestli ono to není přecijen na latin1 namísto UTF8... Kdoví, PHP je balast nejvyššího kalibru. Myslel jsem, že to je UTF8 či UTF16... Hmm tak asi ne no :D

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 17:38
od arxeiss
aha, díky.
Ale stejně, toto mi tak trochu pomohlo max k tomu že znám skutečnou délku. Ovšem nezjistím skutečný ASCII kód toho 'ů' apod...

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 17:55
od OndraSter

Re: PHP strlen('ů') je 2

Napsal: čtv 18. úno 2010, 18:10
od arxeiss
super, 'ů' je prý 345 ;)