2013-08-06 4 views
1

J'ai ce code qui prennent la parole et randomize les lettres il fonctionne très bien avec des lettres anglaises, mais avec l'arabe, il ne fonctionne pas bienobtenir des lettres arabes aléatoires de chaîne

<?php 

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



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


} 

?> 

Répondre

0

C'est parce qu'ils ne fonctionnent pas avec unicode (caractère multi-octets). À partir de cette page http://php.net/manual/en/function.str-split.php

Une chaîne de caractères Unicode appropriée;

<?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); 
} 
?> 

Et est ici pour str_shuffle (prise de 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); 
} 
?> 

Exemple:

$str = '日本語'; 
$shuffled = str_shuffle_unicode($str); 
$arr1 = str_split_unicode($shuffled); 

Sortie: 語 本 日

+0

Êtes-vous sûr que cela fonctionne? Y compris un exemple peut aider. –

+0

@AmalMurali Je suis assez sûr. J'ai ajouté le remplacement str_shuffle(). Vous pouvez vérifier les pages d'origine par exemple ou simplement les essayer. – imel96

+0

Je ne savais pas comment utiliser la première fonction s'il vous plaît expliquer comment l'utiliser – johnj

Questions connexes