为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串转换为字符数组-多字节

将字符串转换为字符数组-多字节

PHP
撒科打诨 2021-04-29 17:22:19
假设在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] => 出 )


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信