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


Can't get str_pad() to properly replace characters in a string

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

代码:

<?php
$t = "abcdefghij";
$t = str_pad($t, 4, "0");
echo $t;
?>

预期:

abcd000000

结果:

abcdefghij 

我也试过:

$t = sprintf("%04x", $t);

结果是:

0000

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

$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以外的所有字符。

因为您的字符串超过四个字符,所以str_pad()不会向其附加任何内容。

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

如果你想总是附加四个零,只需将它们连接到你的字符串上:

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

您要查找的是str_padsubstr的混合,使用以下两种方法:

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_pad()添加到字符串中,并且您想要替换:

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