Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Detekcja UTF-8
Forum PHP.pl > Forum > PHP
kufalo
Potrzebuje wykryc czy string jest w zgodny ze specyfikacja strony kodewej UTF-8 czy nie...
Probowalem do tego uzyc funkcji mb_detect_encoding()
Kod
<?
$z='';
for($x=0;$x<256;$x++){
  $z.=chr($x);
}

print(mb_detect_encoding($z));
?>

ale jak widac stringa utworzonego ze wszystkich kolejno ulozonych 256 znakow wykrywa jako UTF-8, co jest oczywiscie niezgodne ze specyfikacja UTF-8 jezeli chodzi o ulozenie znakow powyzej 127 znaku...
Jak rozwiazac ten probelm questionmark.gif


---
Proszę poprawić bbCode!
Kolejna prośba bedzie razem z ostrzeżeniem.
~mike_mech
Bastion
moze tak :

  1. <?php
  2. function seems_utf8 ($Str) {
  3. for ($i=0; $i<strlen($Str); $i++) {
  4. if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb
  5. elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
  6. elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
  7. elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb
  8. elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb
  9. elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b
  10. else return false; # Does not match any model
  11. for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
  12. if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80))
  13. return false;
  14. }
  15. }
  16. return true;
  17. }
  18. ?>
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.