2013-03-04 79 views
0

更換波斯位數英語位數由他們的Unicode字符代碼我寫這個PHP函數:符合條件

<?php 

    function persian_digits($text) { 
     $persian_unicode = array(
      "1" => '&#x6F1;', 
      "2" => '&#x6F2;', 
      "3" => '&#x6F3', 
      "4" => '&#x6F4', 
      "5" => '&#x6F5', 
      "6" => '&#x6F6', 
      "7" => '&#x6F7', 
      "8" => '&#x6F8', 
      "9" => '&#x6F9', 
      "0" => '&#x6F0;' 
     ); 
     foreach ($persian_unicode as $key => $value) { 
      $text = str_replace($key, $value, $text); 
     } 
     return $text; 
    } 
?> 

當我給一個輸入給它,這個函數替換所有數字波斯當量。 但輸入的網址如<img src="URL"/>,當替換髮生時,所有URL和HTML標籤都會遇到波斯數字問題。

請幫助我找到一種方法,用簡單的文本替換英文數字和它們的波斯等值,而不是URL和HTML標籤。 謝謝。 (對不起,我的英語)

+0

我忘了一些分號的Unicode代碼後! 3至9位數! – 2013-03-04 05:53:12

回答

1

使用此功能:

<?php 

/* Originally written by Farhadi , www.farhadi.ir */ 

function convertToFarsi($matches) { 
    $mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME); 
    $mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal']; 
    if($mps_jd_decimal == true) 
     //$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>"); 
     $farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫"); 
    else 
     $farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "."); 

    $english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."); 

    $out = ''; 
    if (isset($matches[1])) { 
     return str_replace($english_array, $farsi_array, $matches[1]); 
    } 
    return $matches[0]; 
} 

function farsi_num($num,$fake = null,$fake2=null) { 
    return preg_replace_callback('/(?:&#\d{2,4};)|(\d+[\.\d]*)|(?:[a-z](?:[\x00-\x3B\x3D-\x7F]|<\s*[^>]+>)*)|<\s*[^>]+>/i', 'convertToFarsi', $num); 
} 

function english_num($num) { 
    $mps_jd_optionsDB = get_option(MPS_JD_OPTIONS_NAME); 
    $mps_jd_decimal = $mps_jd_optionsDB['mps_jd_decimal']; 
    if($mps_jd_decimal == true) 
     //$farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "<sub><small>/</small></sub>"); 
     $farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "٫"); 
    else 
     $farsi_array = array("۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹", "."); 

    $english_array = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."); 

    return str_replace($farsi_array, $english_array, $num); 
} 
?> 
3

您可以使用此功能

function translateDigits($str) { 
    $newstring=str_replace(array('0','1','2','3','4','5','6','7','8','9'), array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'), $str); 
    return $newstring; 
}