كنت قدمت موضوعا سابقا عن كيفية دعم محارف الأرقام العربية في المتصفحات التي تعتمد على محرك موزيللا الشهير Gecko وما توافق معه.
http://www.swalif.net/softs/swalif54/softs205651/
الآن أقدم طريقة لإلزام ظهور الأرقام العربية على المتصفحات المختلفة التي تدعم Unicode حتى لو كانت محارف الأرقام غير مفعلة في إعدادات المستخدم في نظامه أو متصفحه.
كود PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>استبدال الأرقام العربية</title>
<script type="text/javascript">
// Arabic numbers support for any web browser by Unicode.
// alMubarmij [at] gmail [dot] com
// Don't forget to add: onload="replaceDigits()" in <body> tag.
var map =
[
"&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
"&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
]
var replaceDigits = function() {
document.body.innerHTML =
document.body.innerHTML.replace(
/\d(?=[^<>]*(<|$))/g,
function($0) { return map[$0] }
);
}
window.onload = replaceDigits
</script>
</head>
<body onload="replaceDigits()">
<br />
<hr />
<div dir="rtl"><strong>
الأرقام العربية: 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 <br />
0123456789, 987654321 & 0011223344556677889900. <br />
</strong></div>
<hr />
<strong>
Arabic Digits: 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 <br />
It works even it's in an English phrase: 0123456789, 987654321 & 0011223344556677889900. <br />
</strong>
<hr />
</body>
</html>
الفكرة ببساطة قائمة على استبدال محارف الأرقام داخل وسم معين ـ وهو هنا <body> ـ إلى رموزها المقابلة من اليونيكود.
يمكن استخدام وسم آخر غير <body> أو CSS Class آخر مُعرَّف لدعم الأرقام العربية ضمن جزء معين من الصفحة فحسب.
يمكن تجربة الملف المرفق وهو ملف HTML يحتوي على النص البرمجي السابق كاملا.
المتصفحات الداعمة: كل المتصفحات التي تدعم Unicode و JavaScript.