Vérifier si une chaîne est codé en UTF-8

function seems_utf8($str) {
 $length = strlen($str);
 for ($i=0; $i < $length; $i++) {
  $c = ord($str[$i]);
  if ($c < 0x80) $n = 0; # 0bbbbbbb
  elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb
  elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb
  elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb
  elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb
  elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b
  else return false; # Does not match any model
  for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ?
   if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80))
    return false;
  }
 }
 return true;
}

J'ai eu ce code de WordPress, je ne sais pas beaucoup sur ce sujet, mais je voudrais savoir ce qu'est exactement happing dans cette fonction.

Si quelqu'un sait s'il vous plaît m'aider?

J'ai besoin de l'idée claire sur le code ci-dessus. Si, ligne par ligne, l'explication sera plus utile.

OriginalL'auteur coderex | 2009-09-24