2016-03-30 6 views
0

私はレンジ機能の入力としてアラビア語のアルファベットの文字を使用したい:どのようにPHPの範囲でアラビア文字を使用する()

foreach (range('ا', 'ی') as $letter) { 
    echo $letter; 
} 

私はどんな解決策を見つけることができませんでした。

それはASCII文字で純粋に動作しますが、あなたは、この「アルファベット()」機能と似たような行うことができますので、あなたはこの使用範囲を()、行うことはできません
+0

問題は何ですか?あなたはそれを印刷することはできませんか、またはすべてのアルファベットを印刷する必要がありますか? –

答えて

0

/* 
* By Darien Hager, Jan 2007... Use however you wish, but please 
* please give credit in source comments. 
* 
* Change "UTF-8" to whichever encoding you are expecting to use. 
*/ 
function ords_to_unistr($ords, $encoding = 'UTF-8') { 
    // Turns an array of ordinal values into a string of unicode characters 
    $str = ''; 
    for ($i = 0; $i < count($ords); $i++) { 
     // Pack this number into a 4-byte string 
     // (Or multiple one-byte strings, depending on context.) 
     $v = $ords[$i]; 
     $str .= pack("N",$v); 
    } 
    $str = mb_convert_encoding($str,$encoding,"UCS-4BE"); 
    return($str); 
} 

function unistr_to_ords($str, $encoding = 'UTF-8') { 
    // Turns a string of unicode characters into an array of ordinal values, 
    // Even if some of those characters are multibyte. 
    $str = mb_convert_encoding($str,"UCS-4BE",$encoding); 
    $ords = array(); 

    // Visit each unicode character 
    for ($i = 0; $i < mb_strlen($str,"UCS-4BE"); $i++) { 
     // Now we have 4 bytes. Find their total 
     // numeric value. 
     $s2 = mb_substr($str,$i,1,"UCS-4BE"); 
     $val = unpack("N",$s2); 
     $ords[] = $val[1]; 
    } 
    return($ords); 
} 

function alphabet($firstCharacter = 'A', $lastCharacter = 'Z') { 
    $firstCharacterValue = unistr_to_ords($firstCharacter)[0]; 
    $lastCharacterValue = unistr_to_ords($lastCharacter)[0]; 

    if ($firstCharacterValue < $lastCharacterValue) { 
     for ($character = $firstCharacterValue; $character <= $lastCharacterValue; ++$character) { 
      yield ords_to_unistr(array($character)); 
     }; 
    } else { 
     for ($character = $firstCharacterValue; $character >= $lastCharacterValue; --$character) { 
      yield ords_to_unistr(array($character)); 
     }; 
    } 
} 

をしてから

を使用
foreach (alphabet('ا', 'ی') as $letter) { 
    echo $letter; 
} 

Demo

0

ページ、データベース、サーバーの主要なエンコーディングとしてUTF-8を使用(それはあなたが任意の言語だけでなく、アラビア!! egchiniesを使用することができます) サードパーティーのサーバーを使用していてサーバーの構成を変更できない場合は、常にPHPでエンコードを強制できます header( 'Content-Type:text/html; charset = utf-8 '); データベースがUTF-8をサポートしていない場合は、バイナリ形式のテキストを使用できます

関連する問題