Php Can';t获取str_pad()以正确替换字符串中的字符

Php Can';t获取str_pad()以正确替换字符串中的字符,php,Php,我试图用stru pad替换字符串中的一些字符,但我根本无法让它工作,我也不知道它为什么不工作 代码: 结果: abcdefghij 我还尝试: $t = sprintf("%04x", $t); 其结果是: 0000 因为您的字符串长度超过四个字符,所以不会向其追加任何内容 如果pad_length的值为负、小于或等于输入字符串的长度,则不进行填充,并返回输入 如果要始终附加四个零,只需将它们连接到字符串上即可: <?php $t = "abcdefghij"; $t = '00

我试图用
stru pad
替换字符串中的一些字符,但我根本无法让它工作,我也不知道它为什么不工作

代码:

结果:

abcdefghij 
我还尝试:

$t = sprintf("%04x", $t);
其结果是:

0000

因为您的字符串长度超过四个字符,所以不会向其追加任何内容

如果pad_length的值为负、小于或等于输入字符串的长度,则不进行填充,并返回输入

如果要始终附加四个零,只需将它们连接到字符串上即可:

<?php
$t = "abcdefghij";
$t = '0000' . $t;
echo $t;
?>

您需要一个不同的函数
str_pad()
添加到字符串中,您需要替换:

$t = substr_replace($t, str_repeat('0', strlen($t)-4), 4);

您要寻找的是一种混合的
stru-pad
substr
,使用如下两种:

echo str_pad(substr($str, 0, 4), strlen($str), '0', STR_PAD_RIGHT);
abcd000000
将为您提供如下输出:

echo str_pad(substr($str, 0, 4), strlen($str), '0', STR_PAD_RIGHT);
abcd000000
但是,您可能需要调整数字以获得所需的结果

以下是您可以使用的函数:

function pad($str, $length, $value= '0', $side = STR_PAD_RIGHT){
    return str_pad(substr($str, 0, $length), strlen($str), $value, $side);
}

echo pad('abcdefghij', 4);

如果您有一个可变长度的字符串,您可以使用下面的

$str = "abcdefghijzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";

$head = substr($str, 0, 4); // construct the first part of your string
$tail = substr($str, 4); // get the second part of the string

print $head . str_repeat('0',strlen($tail));

// or all in one go
$number = 4;
print substr($str, 0, $number) . str_repeat('0',strlen(substr($str, $number)));

//will output
//abcd0000000000000000000000000000000000000

替换字符串中除第一个
x
字符以外的所有字符。

那么我误解了函数的用途。我想得到的是:
abcd000000
而不是
$t=$t'00000';但您的最终问题是字符串长度。您期望的结果是什么?您可能想看看preg_replace()