我有这个代码,它把单词和字母随机化,它对英文字母很好,但对阿拉伯语就不好用了
<?php
$str = 'علي';
$shuffled = str_shuffle($str);
$arr1 = str_split($shuffled);
foreach($arr1 as $bessah){
echo $bessah.'<br />';
}
?>发布于 2013-08-06 10:06:10
这是因为它们不支持unicode (多字节字符)。从该页面http://php.net/manual/en/function.str-split.php
适当的unicode字符串拆分;
<?php
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);
}
?>这是针对str_shuffle的(摘自http://php.net/manual/en/function.str-shuffle.php):
<?php
function str_shuffle_unicode($str) {
$tmp = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
shuffle($tmp);
return join("", $tmp);
}
?>示例:
$str = '日本語';
$shuffled = str_shuffle_unicode($str);
$arr1 = str_split_unicode($shuffled);输出:語本日
https://stackoverflow.com/questions/18070615
复制相似问题