2015-10-10 15 views
5

tôi đang cố gắng ra saustr_split() không hoạt động đúng trong PHP khi sử dụng chuỗi với ký tự đặc biệt

$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 . " "; 

mang đến cho như đầu ra:

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

Tôi muốn · được 1 ký tự trong mảng, làm thế nào điều này có thể được thực hiện? Điều tôi đang cố gắng tiếp cận là lặp qua tất cả các ký tự của một chuỗi, vì vậy bất kỳ giải pháp nào khác cũng được hoan nghênh.

+2

bình luận đầu tiên trong cuốn hướng dẫn: http://php.net/manual/en/function .str-split.php # 107658 – Rizier123

+0

Không đăng câu trả lời trong câu hỏi của bạn – Rizier123

Trả lời

2

Theo một comment in the PHP Manual (Nhờ @ Rizier123), cách thích hợp để làm điều này là như sau:

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

Chức năng này giúp tôi trong chuỗi 'base64_decode' của tôi. Cảm ơn câu trả lời này !! – Saty

Các vấn đề liên quan