2016-07-28 10 views
0

Ich verwende das folgende JavaScript, um alle englischen Zahlen, die auf meiner Website angezeigt werden, in Persisch zu konvertieren.Konvertieren von englischen Zahlen in Persisch

Ich weiß, dass es mehrere Möglichkeiten gibt, um darüber zu gehen, und ich habe online geschaut und ein paar versucht, aber dieses Skript macht was ich will, und es war wirklich einfach zu implementieren, außer ich möchte die Telefonnummer und Datum in meiner Fußzeile von der Konvertierung ausgeschlossen werden und bleiben Englisch.

Nicht sicher, wie ich das in meiner PHP/HTML-Seite gehe.

Auf der zweiten Notiz, wenn meine Website für ein paar Sekunden geladen wird, erscheinen die Zahlen in Englisch und schnell in Persisch konvertieren. Ich frage mich, ob es einen Weg gibt, diese Verzögerung zu reduzieren?

Hier ist mein Code:

<script language="JavaScript" type="text/javascript"> 
 
var replaceDigits = function() { 
 
var map = 
 
[ 
 
"&\#1776;","&\#1777;","&\#1778;","&\#1779;","&\#1780;", 
 
"&\#1781;","&\#1782;","&\#1783;","&\#1784;","&\#1785;" 
 
] 
 
document.body.innerHTML = 
 
document.body.innerHTML.replace(
 
/\d(?=[^<>]*(<|$))/g, 
 
function($0) { return map[$0] } 
 
); 
 
} 
 
</script> 
 

 
<script type="text/javascript"> 
 
window.onload = replaceDigits 
 
</script>

Antwort

5

Hier ist die PHP-Funktion:

function toPersianNum($number) 
    { 
     $number = str_replace("1","۱",$number); 
     $number = str_replace("2","۲",$number); 
     $number = str_replace("3","۳",$number); 
     $number = str_replace("4","۴",$number); 
     $number = str_replace("5","۵",$number); 
     $number = str_replace("6","۶",$number); 
     $number = str_replace("7","۷",$number); 
     $number = str_replace("8","۸",$number); 
     $number = str_replace("9","۹",$number); 
     $number = str_replace("0","۰",$number); 
     return $number; 
    } 

Verwendung:

$fa_num = toPersianNum(1234); // It returns ۱۲۳۴ 
$fa_date = toPersianNum('2016/05/10'); // It returns ۲۰۱۶/۰۵/۱۰ 

JavaScript

Und hier ist die JavaScript-Funktion:

function toPersianNum(num, dontTrim) { 

    var i = 0, 

     dontTrim = dontTrim || false, 

     num = dontTrim ? num.toString() : num.toString().trim(), 
     len = num.length, 

     res = '', 
     pos, 

     persianNumbers = typeof persianNumber == 'undefined' ? 
      ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'] : 
      persianNumbers; 

    for (; i < len; i++) 
     if ((pos = persianNumbers[num.charAt(i)])) 
      res += pos; 
     else 
      res += num.charAt(i); 

    return res; 
} 

Verwendung:

var fa_num = toPersianNum(1234) // It returns ۱۲۳۴ 
var fa_date = toPersianNum('2016/05/10'); // It returns ۲۰۱۶/۰۵/۱۰ 

:)

UPDATE

Be Happy Her e sind toEnglishNum() ebenso.

PHP:

function toEnglishNum($number) 
{ 
    $number = str_replace("۱","1",$number); 
    $number = str_replace("۲","2",$number); 
    $number = str_replace("۳","3",$number); 
    $number = str_replace("۴","4",$number); 
    $number = str_replace("۵","5",$number); 
    $number = str_replace("۶","6",$number); 
    $number = str_replace("۷","7",$number); 
    $number = str_replace("۸","8",$number); 
    $number = str_replace("۹","9",$number); 
    $number = str_replace("۰","0",$number); 
    return $number; 
} 

Javascript:

function toEnglishNum(num, dontTrim) { 
    var i = 0, 
     j = 0, 
     dontTrim = dontTrim || false, 
     num = dontTrim ? num.toString() : num.toString().trim(), 
     len = num.length, 
     res = '', 
     pos, 
     persianNumbers = typeof persianNumber == 'undefined' ? 
      [ '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹' ] : 
      persianNumbers; 

    for (; i < len; i++) 
     if (~(pos = persianNumbers.indexOf(num.charAt(i)))) 
      res += pos; 
     else 
      res += num.charAt(i); 
    return res; 
}; 

Good Luck

+0

Verdienter 1 Punkt für JavaScript, das ist auch geeignet, um zuEnglishNumber Funktion hinzuzufügen. – QMaster

+1

@QMaster Vielen Dank für Ihren Vorschlag. 'toEnglshNumber()' hinzugefügt. –

+0

Ihre Begrüßung @hamed, Vielen Dank für die Verbesserung der Antwort und ich frage mich, wenn Sie sich das an: https://Stackoverflow.com/a/45541282/1830909 beantworten und schreiben Sie Ihren Gedanken, Nochmals vielen Dank. – QMaster

0

Sie Ihre replaceDigits Funktion window.onload Aufruf, die ausgeführt wird, wenn die Seite geladen wird. Deshalb bemerken Sie die Verzögerung beim Konvertieren.

es gibt einige Möglichkeiten, um es mit Javascript zu umgehen, aber ich denke, der beste Weg wäre die Zahlen in PHP-Seite konvertieren.

0

Sie sind hier :)

function toFarsiNumber(n) { 
    const farsiDigits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; 

    return n 
     .toString() 
     .split('') 
     .map(x => farsiDigits[x]) 
     .join(''); 
    } 

Eine andere Version!

Verwandte Themen