Visa ett inlägg
Oläst 2014-12-09, 22:46 #14
SimonPs avatar
SimonP SimonP är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2006
Inlägg: 832
SimonP SimonP är inte uppkopplad
Mycket flitig postare
SimonPs avatar
 
Reg.datum: May 2006
Inlägg: 832
I vissa fall går det inte att lita på att datat är UTF-8 även fast det borde vara det.
Jag fick lov att göra egen lösning när jag hade ett liknande problem, men i mitt fall handlade det om data som kom utifrån.
Kod:
if (!is_utf8($strang)) $strang=utf8_encode($strang);

function is_utf8($str)
{
   $c=0; $b=0;
   $bits=0;
   $len=strlen($str);
   for($i=0; $i<$len; $i++)
   {
      $c=ord($str[$i]);
      if($c > 128)
      {
         if(($c >= 254)) return false;
         elseif($c >= 252) $bits=6;
         elseif($c >= 248) $bits=5;
         elseif($c >= 240) $bits=4;
         elseif($c >= 224) $bits=3;
         elseif($c >= 192) $bits=2;
         else return false;
         if(($i+$bits) > $len) return false;
         while($bits > 1)
         {
            $i++;
             $b=ord($str[$i]);
             if($b < 128 || $b > 191) return false;
             $bits--;
         }
      }
   }
   return true;
}
SimonP är inte uppkopplad   Svara med citatSvara med citat