假设在2019年,每个不是UNICODE安全的解决方案都是错误的。在PHP中将字符串转换为UNICODE字符数组的最佳方法是什么?显然,这意味着使用大括号语法访问字节是错误的,以及使用str_split:$arr = str_split($text);来自样本输入,例如:$string = '先éé€??? ?❤️?';我预计:array(16) {[0]=> string(3) "先" [1]=> string(2) "é" [2]=> string(1) "e" [3]=> string(2) "́" [4]=> string(3) "€" [5]=> string(4) "?" [6]=> string(4) "?" [7]=> string(4) "?" [8]=> string(3) "" [9]=> string(1) " " [10]=> string(4) "?" [11]=> string(3) "" [12]=> string(3) "❤" [13]=> string(3) "️" [14]=> string(3) "" [15]=> string(4) "?"}
2 回答
呼如林
TA贡献1798条经验 获得超3个赞
这对我有用,它将unicode字符串分解为字符数组:
//
// split at all position not after the start: ^
// and not before the end: $, with unicode modifier
// u (PCRE_UTF8).
//
$arr = preg_split("/(?<!^)(?!$)/u", $text);
例如:
<?php
//
$text = "堆栈溢出";
$arr = preg_split("/(?<!^)(?!$)/u", $text);
echo '<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
';
print_r($arr);
echo '</body>
</html>
';
?>
在浏览器中,它产生以下结果:
Array ( [0] => 堆 [1] => 栈 [2] => 溢 [3] => 出 )
- 2 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消