代码之家  ›  专栏  ›  技术社区  ›  Saeed Heidarizarei

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

php
  •  6
  • Saeed Heidarizarei  · 技术社区  · 7 年前

    如何通过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 回复  |  直到 7 年前
        1
  •  4
  •   Alex    7 年前

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

    <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>
    

    前任: https://codepen.io/anon/pen/rQWGRd

    或者,您可以在加载到所有页面的任何js文件中包含此函数。

    此外,您的body标记还应具有如下所示的onload属性:

    <body onload="replaceDigits()">
    
        2
  •  3
  •   Saeed Heidarizarei    7 年前

    用这种方法解决了我的问题:

    1:使用FontCreator 9或10程序。

    3:转到号码选项卡。

    享受没有任何F。。。功能/额外处理。

    照片: Photo

    更新:
    阿拉伯语也应该被取代

    Photo2

        3
  •  3
  •   Moradnejad Jason    7 年前

    在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);
    

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

        4
  •  2
  •   Lithilion    7 年前

    如果您真的想在PHP中实现这一点,可以将所有文本/html输出压缩到同一个变量中,然后 echo 最后,我终于明白了。在最后一次干杯和 回声 您可以在每个回显输出的.php页面中调用此函数。

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

    推荐文章