我尝试使用str_pad
替换字符串中的某些字符,但我无法让它工作,我不知道它为什么不起作用。< / p>
代码:
<?php
$t = "abcdefghij";
$t = str_pad($t, 4, "0");
echo $t;
?>
预期:
abcd000000
结果:
abcdefghij
我也尝试过:
$t = sprintf("%04x", $t);
结果是:
0000
答案 0 :(得分:2)
因为您的字符串长度超过四个字符,所以str_pad()
不会附加任何内容。
如果pad_length的值为负,小于或等于输入字符串的长度,则不会发生填充,并且将返回输入。
如果你想总是追加四个零,只需将它们连接到你的字符串上:
<?php
$t = "abcdefghij";
$t = '0000' . $t;
echo $t;
?>
答案 1 :(得分:2)
如果你有一个可变长度的字符串,你可以使用下面的
$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
个字符以外的所有内容。
答案 2 :(得分:1)
您需要不同的功能。 str_pad()
添加到字符串中,您想要替换:
$t = substr_replace($t, str_repeat('0', strlen($t)-4), 4);
答案 3 :(得分:1)
您正在寻找的是str_pad
和substr
的混合,使用这两个:{/ p>
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);