Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将拉丁数字转换为阿拉伯语_Php_Html - Fatal编程技术网

PHP将拉丁数字转换为阿拉伯语

PHP将拉丁数字转换为阿拉伯语,php,html,Php,Html,我需要使用PHP将给定HTML页面中出现的所有英文数字转换为阿拉伯语,我尝试了以下代码,但它可以转换所有数字,甚至是元素内部的数字。我只想在元素之间转换数字。怎么样 function number2($srting) { $Persian_Number = str_replace( array('0','1','2','3','4','5','6','7','8','9'), array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'),

我需要使用PHP将给定HTML页面中出现的所有英文数字转换为阿拉伯语,我尝试了以下代码,但它可以转换所有数字,甚至是元素内部的数字。我只想在元素之间转换数字。怎么样

function number2($srting)
{
    $Persian_Number = str_replace(
    array('0','1','2','3','4','5','6','7','8','9'),
    array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'),
    $srting
    );
    return $Number;
}
$html = '<div class="span5" style="margin-right: 5em;">hi 74 tnx 541 o Arabic542354</div>';
echo number2($html);
功能编号2($srting)
{
$Persian\u编号=str\u替换(
数组('0','1','2','3','4','5','6','7','8','9'),
数组(‘۰’、‘۱’、‘۲’、‘۽’、‘۵’、‘۶’、‘۷’、‘۸’、‘۹’),
$srting
);
返回$Number;
}
$html='hi 74 tnx 541 o Arabic542354';
回音号码2($html);
演示:

此报税表为:
hi۷tnx۵ۻo阿拉伯语۵ۼ۳۴

我不想要它

我希望它是:
hi۷tnx۵ۻo阿拉伯语۵ۼ۳۴


当然,这是一个小例子。

那么在添加div容器之前,您需要调用number2farsi,如下所示:

<?php
function number2farsi($srting)
{
    $Persian_Number = str_replace(
    array('0','1','2','3','4','5','6','7','8','9'),
    array('۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'),
    $srting
    );
    return $Persian_Number;
}

$text = 'hi 74 tnx 541 o Arabic542354';
$farsi = number2farsi($text);
$html = '<div class="span5" style="margin-right: 5em;">' . $farsi . '</div>';
echo $html;

我知道,html标签是什么?如果你对整个字符串进行更改,它会更改所有数字。所以span5,5em,所有这些都转换了。您需要在实际文本上进行转换,而不是在要打印在页面上的html文本上进行转换。给我以下消息:
preg\u replace\u callback():在什么版本的PHP下,需要参数2“doMap”作为有效的回调
?您是否复制了所有给定的代码?它在我发布的演示中工作-请再次检查。PHP版本5.6.28,@Mehdi您可以发布您尝试执行的全部代码,但失败了吗?很明显,它在沙盒和我的PHP上工作。
$text = 'hi 74 tnx 541 o Arabic542354';
$html = '<div class="span5" style="margin-right: 5em;">' . number2farsi($text) . '</div>';
echo $html;
<?php
function doMap($input)
{
    if (strlen($input[0]) > 1) {
        return $input[0];
    } else {
        $map = array('0' => '۰', '1' => '۱', '2' => '۲', '3' => '۳', '4' => '۴', '5' => '۵', '6' => '۶', '7' => '۷', '8' => '۸', '9' => '۹');
        return $map[$input[0]];
    }
}

function number2farsi($srting)
{
    $Persian_Number = preg_replace_callback('/\<.*?\>|[0-9]/', 'doMap', $srting);
    return $Persian_Number;
}
$html = '<div class="span5" style="margin-right: 5em;">hi 74 tnx 541 o Arabic542354</div>';
echo number2farsi($html);