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

时间:2017-01-07 22:22:59

标签: php html

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

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

DEMO: http://sandbox.onlinephpfunctions.com/code/1265f3cc25552e7326751c603edab9d12686be5f

此返回为:<div class="span۵" style="margin-right: ۵em;">hi ۷۴ tnx ۵۴۱ o Arabic۵۴۲۳۵۴</div>

我不想要它。

我希望它为:<div class="span5" style="margin-right: 5em;">hi ۷۴ tnx ۵۴۱ o Arabic۵۴۲۳۵۴</div>

当然,这只是一个小例子。

2 个答案:

答案 0 :(得分:0)

然后你需要在添加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;

更短的:

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

答案 1 :(得分:0)

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

使用带有回调的正则表达式。在上面的代码中有regexp可以捕获&lt;之间的所有内容。 &GT;字符或任何单个数字。在doMap回调中,我们可以检查这是一个数字(然后将其映射到所需的字符),还是标记(然后按原样返回)。

演示:http://sandbox.onlinephpfunctions.com/code/ae39a4daaba6456740df846d23f4b5c40d9adf62