Php 将10位数字的前4位替换为x

Php 将10位数字的前4位替换为x,php,Php,我试图用X替换数字的前4位,例如: $num= 1234567890 我希望输出显示如下:xx567890 我已经尝试了以下功能: $new = substr($num, 0, -4) . 'xxx'; $num = 1234567890; print_r(substr_replace($num, 'XXXX', 0, 4)); // XXXX567890 但是它只删除了最后4位数字,那么我该怎么做呢?您可以在相反的位置使用相同的数字 $num= 1234567890; $new

我试图用X替换数字的前4位,例如:

$num= 1234567890
我希望输出显示如下:xx567890

我已经尝试了以下功能:

 $new = substr($num, 0, -4) . 'xxx';
$num = 1234567890;
print_r(substr_replace($num, 'XXXX', 0, 4));    // XXXX567890

但是它只删除了最后4位数字,那么我该怎么做呢?

您可以在相反的位置使用相同的数字

$num= 1234567890;
$new = 'xxxx' . substr($num, 4);
echo $new;
第二个参数表示字符串的起点,奇偶校验(正或负)表示方向。正数表示字符串右侧,负数表示字符串左侧


您可以在相反的位置使用相同的选项

$num= 1234567890;
$new = 'xxxx' . substr($num, 4);
echo $new;
第二个参数表示字符串的起点,奇偶校验(正或负)表示方向。正数表示字符串右侧,负数表示字符串左侧


我认为这一点有助于实现预期的产出

解决方案1:


我认为这一条有助于实现所需的输出

解决方案1:


如果您已经编写了一个小函数来执行这样的任务

function hide_details($str, $num = 4, $replace = 'x') {
    return str_repeat($replace, $num).substr($str, $num);
}
echo hide_details('1234567890');

如果你已经写了一个小函数来完成这样的任务

function hide_details($str, $num = 4, $replace = 'x') {
    return str_repeat($replace, $num).substr($str, $num);
}
echo hide_details('1234567890');

使用
substr\u replace
功能:

 $new = substr($num, 0, -4) . 'xxx';
$num = 1234567890;
print_r(substr_replace($num, 'XXXX', 0, 4));    // XXXX567890

使用
substr\u replace
功能:

 $new = substr($num, 0, -4) . 'xxx';
$num = 1234567890;
print_r(substr_replace($num, 'XXXX', 0, 4));    // XXXX567890

另一种解决方案是使用str_pad,它用“X”将字符串“填充”到10个元素

或者,如果字符串长度并非始终为10,请使用:

Echo str_pad(substr($num,4), strlen($num), "X",STR_PAD_LEFT);

另一种解决方案是使用str_pad,它用“X”将字符串“填充”到10个元素

或者,如果字符串长度并非始终为10,请使用:

Echo str_pad(substr($num,4), strlen($num), "X",STR_PAD_LEFT);

数字的可能重复是固定长度吗?数字的可能重复是固定长度吗?考虑到有一个本机函数
substr\u replace
?@Progrock,我给出了两个解决方案
1.
操作码的更正<代码>2。
是动态的,不需要显式地提供
X
的数量,如果您将
$totalDigits
更改为3,它也将动态工作3。@Progrock我认为这不是应该做什么的问题。这是OP喜欢什么的问题。有时候,我们可能认为这不是OP喜欢的一个好的解决方案。@Progrock耶,你是对的。我试着给出最好的解决方案。考虑到有一个本机函数
substr\u replace
?@Progrock我给出了两个解决方案
1.
操作代码的更正,他们为什么要这样做呢<代码>2。
是动态的,不需要显式地提供
X
的数量,如果您将
$totalDigits
更改为3,它也将动态工作3。@Progrock我认为这不是应该做什么的问题。这是OP喜欢什么的问题。有时候,我们可能认为这不是OP喜欢的一个好的解决方案。@Progrock耶,你是对的。我试着给出最好的解决方案,这是一个很好的答案。从未考虑过
substr\u replace
。我想我需要更新我的函数。这是一个很好的答案。从未考虑过
substr\u replace
。我想我需要更新我的功能。