0

私はこの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 があります。置換が発生すると、すべての URL と HTML タグでペルシャ数字の問題が発生します。

URL や HTML タグではなく、単純なテキストのみで、英語の数字をペルシャ語の同等の数字に置き換える方法を見つけるのを手伝ってください。ありがとう。(私の英語でごめんなさい)

4

2 に答える 2

4

この機能を使用できます

function translateDigits($str) {
    $newstring=str_replace(array('0','1','2','3','4','5','6','7','8','9'), array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'), $str);
    return $newstring;
}
于 2014-06-12T08:56:17.147 に答える
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);
}
?>
于 2013-03-06T17:59:17.567 に答える