Str_split () does not work properly in PHP when using a string with special characters

I am testing the following

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

which gives as output:

 x = 126ยท10โด Array length: 10 Charset: UTF-8 1 2 6     1 0       

I want ยท and โด be 1 character in the array, how can this be done? What I'm trying to achieve is to iterate over all the characters of a string, so any other solution is also welcome.

+5
source share
1 answer

According to the comment in the PHP Manual (Thanks @ Rizier123), the correct way to do this is as follows:

 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); } 
+2
source

Source: https://habr.com/ru/post/1233416/


All Articles