以下函数将考虑多个前导零并在遇到前导零时转换为字符串:
function check_number($num){
$re = '/[0]+/m';
preg_match_all($re, $num, $matches, PREG_SET_ORDER, 0);
$leading_zero = $matches[0][0] ?? false;
$length = 0;
if( $leading_zero !== false){
$length = strlen($num);
$test = "%'.0{$length}d\n";
return sprintf("%'.0{$length}d\n",$num);
}
return $num;
}
$one = '07';
$one = check_number($one) // returns '07' string with json_encode and JSON_NUMERIC_CHECK flag
$two = '007';
$two = check_number($two) // returns '007' string with json_encode and JSON_NUMERIC_CHECK flag
$num = 7;
$num = check_number($num) // returns 7 int with json_encode and JSON_NUMERIC_CHECK flag