在 php 中格式化整数或字符串

Format integer or string in php

很抱歉问了一个菜鸟问题,但我想知道你是否可以用逗号或破折号格式化 php 中的字符串,像这样:

例如。 #1

Sample Input: 123456789
Formatted Output: 123,456,789 or 123-456-789

例如。 #2

Sample Input: 0123456789
Formatted Output: 012,3456,789 or 012-3456-789

如果有人能帮助我,那将不胜感激。

您可以在此处使用正则表达式替换:

function formatNum($input, $sep) {
    return preg_replace("/^(\d{3})(\d+)(\d{3})$/", "".$sep."".$sep."", $input);
}

echo formatNum("123456789", ",");   // 123,456,789
echo "\n";
echo formatNum("0123456789", "-");  // 012-3456-789

如果只是将初始字符串拆分为 3 个字符段并将它们与特定字符连接起来,您可以使用 str_split() 和每个段中所需的字符数,然后 implode() 带有您需要的分隔符的结果...

$test = '012345678';

echo implode("-", str_split($test, 3));
    $number = 133456789;
    $number_text = (string)$number; // convert into a string
    if(strlen($number_text) %3 == 0){
        $arr = str_split($number_text, "3"); 
        // $price_new_text = implode(",", $arr);  
        $number_new_text = implode("-", $arr);  
        echo $number_new_text; 
    }
    else{
        
        if(  preg_match( '/(\d{3})(\d{4})(\d{3})$/', $number_text,  $matches ) )
        {
            $number_new_text = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
            $number_new_text = $matches[1] . ',' .$matches[2] . ',' . $matches[3];
            echo $number_new_text;
        }
    }