得到随机的阿拉伯字母串

时间:2013-08-06 01:55:44

标签: php arabic

我有这个代码接受单词并随机化字母 它适用于英文字母,但阿拉伯语不能正常工作

<?php

$str = 'علي';
$shuffled = str_shuffle($str);
$arr1 = str_split($shuffled);



foreach($arr1 as $bessah){
   echo $bessah.'<br />'; 


 }

?>

1 个答案:

答案 0 :(得分:1)

这是因为它们不能与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);

输出: 语 本 日