如何通过PHP将网站中的整数替换为波斯数字?

时间:2018-11-12 14:22:03

标签: php

如何通过PHP将正文或网站html中的整数替换为波斯数字?
我想用我的网站中的所有页面替换所有数字。

代码:

function ta_persian_num($string) {
  //arrays of persian and latin numbers
  $persian_num = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
  $latin_num = range(0, 9);

  $string = str_replace($latin_num, $persian_num, $string);

  return $string;
}

我的代码适用于客户端:

<script>
    $(document).ready(function(){
    persian={0:'۰',1:'۱',2:'۲',3:'۳',4:'۴',5:'۵',6:'۶',7:'۷',8:'۸',9:'۹'};
    function traverse(el){
        if(el.nodeType==3){
            var list=el.data.match(/[0-9]/g);
            if(list!=null && list.length!=0){
                for(var i=0;i<list.length;i++)
                    el.data=el.data.replace(list[i],persian[list[i]]);
            }
        }
        for(var i=0;i<el.childNodes.length;i++){
            traverse(el.childNodes[i]);
        }
    }
    traverse(document.body);
});
</script>

4 个答案:

答案 0 :(得分:4)

您最好将此功能移至前端使用javascript:

basketDict = {}
shopDict = {"Fruit": {"Apple": "2", "Banana": "3"},
            "Vegetables": {"Lettuce": "5", "Potato": "7"}}

userQuery = input("What food do you want to check for? ")
for category, food in shopDict.items():
    shopCheck = []
    for each in food:
        shopCheck.append(each)

    if userQuery not in shopCheck:
        print("That's not available.")
    else:
        print(userQuery + " added to basket. ")
        basketDict[category] = {userQuery:food[userQuery]}

print(basketDict)

例如:https://codepen.io/anon/pen/rQWGRd

或者您可以将此功能包含在所有页面上的任何js文件中。

您的body标签还应该具有如下所示的onload属性:

<script 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]});
}
window.onload = replaceDigits;
</script>

答案 1 :(得分:4)

在PHP中最好的方法是使用正则表达式:

$string='salam 1 23 12';
$persian_num = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
for($i=0;$i<10;$i++){
    $string = preg_replace("/$i/", $persian_num[$i], $string);
}
print($string);

上面的代码,用您在波斯语中指定的字符替换所有英文数字。

答案 2 :(得分:3)

✅通过以下方式解决了我的问题:

1:使用FontCreator 9或10程序。
2:在FontCreator中打开字体。
3:转到数字标签。
4:在英语数字上粘贴您的RTL语言数字(波斯语/希伯来语/阿拉伯语)。

享受无任何功能...功能/额外处理。

照片: Photo

更新:

最终视图照片 Photo2

答案 3 :(得分:2)

如果您真的想在PHP中执行此操作,则可以将所有text / html输出连接到同一变量,然后最后echo。在最后一个concat和echo之间,您可以在每个.php页面中回显输出,以调用此函数。

<?php
//Code...
$string = ta_persian_num($string);
echo $string;

我个人比较喜欢JS这个问题。