Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mb_strlen nieprawidlowo pracuje z utf-8
Forum PHP.pl > Forum > PHP
deirathe
Witam, kiedy uzywam kodowania utf-8: pliki sa w utf zapisane- pracuje na zend studio. To gdy mam:
  1. <?php
  2. class Library {
  3.    public static function simpleUrl($string) {
  4.        for($i = 0; $i < mb_strlen ( $string ); $i ++) {
  5.            echo $string[$i]."<br/>";
  6.            
  7.        }
  8.        
  9.    }
  10. }
  11. ?>

i wykonam :
  1. <?php
  2. Library::simpleUrl("zażółcić gęślą żółć");
  3. ?>

to nie dostaje poszczegolnych liter tylko polskie ogonki sa dzielone na pol, z strlen dzieje sie to samo ;/
Jezeli ktos zna przyczyne to prosze o pomoc. Dzieki z gory
JoShiMa
A czemu nie używasz drugiego parametru określającego kodowanie?
ndx
Ustaw sobie mb_internal_encoding" title="Zobacz w manualu PHP" target="_manual i będzie grało smile.gif
deirathe
nie podzialalo ;/ , ale znalazlem inne rozwiazanie, dzieki. Moze cos z tym zend studio nie dokonca jest wporzadku, ale to juz i tak niewazne smile.gif jeszcze raz dzieki Panowie smile.gif
impressive
mb_strlen($string, 'utf8')
ucho
Nie w porządku jest to
Kod
echo $string[$i]
bo zawsze zwróci tylko jeden bajt, zamiast całego znaku w utf8. Zgaduje że poprawnie by było
Kod
echo mb_substr($string,$i,1)

Podobnie jak w tym komentarzu http://pl2.php.net/manual/pl/function.mb-strwidth.php#80926
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.