php真正的多字节字符串随机播放功能?

标签 php multibyte chars

我对多字节字符串有一个独特的问题,需要能够以一定程度的随机性随机排列 PHP 中的长 UTF-8 编码多字节字符串,而不会丢失、丢失或重复任何字符。

在 str_shuffle 下的 PHP 手册中,有一个多字节函数(第一个用户提交的函数)不起作用:如果我使用一个字符串,例如字符串长度为 120 的所有日文平假名和片假名字符,我返回了一个 119 个字符或 118 个字符的字符串。有时我会看到重复的字符,即使原始字符串中没有它们。所以这不起作用。

为了使这更复杂,如果可能的话,我还需要包括日语 UTF-8 换行符、换行符和标点符号。

任何有使用 UTF-8 mb 字符串处理多种语言经验的人都可以帮忙吗? PHP 是否有任何内置函数来执行此操作? str_shuffle 正是我想要的。我只需要它也能处理多字节字符。

非常感谢!

最佳答案

尝试使用 mb_strlen 拆分字符串和 mb_substr创建一个数组,然后使用 shuffle在再次将其重新组合在一起之前。 (编辑:正如@Frosty Z 的回答中所展示的那样。)

来自 PHP 交互式提示的示例:

php > $string = "Pretend I'm multibyte!";
php > $len = mb_strlen($string);
php > $sploded = array(); 
php > while($len-- > 0) { $sploded[] = mb_substr($string, $len, 1); }
php > shuffle($sploded);
php > echo join('', $sploded);
rmedt tmu nIb'lyi!eteP

您需要确保在适当的地方指定编码。

关于php真正的多字节字符串随机播放功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411060/

相关文章:

php - 从MySql的两个表中计算带有0的值

php - 从 Laravel 中的 JSON 字符串中删除添加的反斜杠

c++ - 我如何在我的代码中同时支持 Unicode 和多字节字符集?

php - strpos 在 PHP 中搜索 unicode(并处理内联 UTF-8)

Java - 从文件中的特定索引中提取相关字符串/字符

php - 从远程服务器运行 PHP 代码?

php - 使用隐藏输入类型的 3 个选项进行搜索不起作用

PHP - 为所有支持的语言替换所有非字母数字字符

java - 在 Java 中对字符进行求和和相减,并且始终得到 ASCII 范围内的结果

JQuery load() 和国家字母(如 ę、ą、ć)