2015-10-10 5 views
5

Staram się następującestr_split() nie działa prawidłowo w PHP przy użyciu ciąg znaków specjalnych

$x = "126·10⁴"; 
$array = str_split($x); 
echo "x = " . $x . "<br>"; 
echo "Array length: " . count($array) . "<br>"; 

echo "Charset: " .mb_detect_encoding($x)."<br>"; 

foreach($array as $i) 
    echo $i . " "; 

który daje na wyjściu:

x = 126·10⁴ 
Array length: 10 
Charset: UTF-8 
1 2 6 � � 1 0 � � � 

chcę być · i 1 znak w tablicy, jak to zrobić? Próbuję dotrzeć do iteracji wszystkich znaków ciągu, więc każde inne rozwiązanie również jest mile widziane.

+2

pierwszy komentarz w instrukcji: http://php.net/manual/en/function .str-split.php # 107658 – Rizier123

+0

Nie zamieszczaj odpowiedzi na swoje pytanie – Rizier123

Odpowiedz

2

Według comment in the PHP Manual (dzięki @ Rizier123), właściwy sposób to zrobić w następujący sposób:

function str_split_unicode($str, $l = 0) { 
    if ($l > 0) { 
     $ret = array(); 
     $len = mb_strlen($str, "UTF-8"); 
     for ($i = 0; $i < $len; $i += $l) { 
      $ret[] = mb_substr($str, $i, $l, "UTF-8"); 
     } 
     return $ret; 
    } 
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY); 
} 
+0

Ta funkcja pomaga mi w ciągu 'base64_decode'. Dzięki za tę odpowiedź !! – Saty

Powiązane problemy