将字符串拆分为较小的字符串而不是数组

时间:2014-04-30 12:11:28

标签: php string split

需要一些小问题的字符串拆分。

我正在尝试将序列号分成两部分,在后半部分进行一些计算并将其连接到上半部分。我的问题是下半场以两个零开始,PHP删除前导零。

我认为将变量保持为字符串会保留零,但我似乎无法找到将序列号拆分为较小字符串的方法,我尝试将所有方法拆分为数组。这是我的代码的一部分;

$info1 = nkw549blc003i00021; //this is the serial number.

我想将$info1分成;

$number1 = nkw549blc003i0

$number2 = 0021

然后在for loop上使用$number2

$num = 1;
for ($num=1; $num < $unitsquantity[$key] ; $num++) {
  $sum = $number2+$num;
  $final=$number1.$sum;
  echo "$final<br>";
}

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

$info1 = 'nkw549blc003i00021';

$number1 = substr($info1, 0, -4);
$number2 = sprintf('%1$04d', substr($info1, -4, 4));

答案 1 :(得分:1)

如果字符串总是4个字符长,则可以使用str_pad

for ($num=1; $num < $unitsquantity[$key] ; $num++) {
  echo $number1 . str_pad($number2+$num, 4, '0', STR_PAD_LEFT);
}

答案 2 :(得分:0)

字符串是数组字符,因此您可以通过迭代它们来获取它们的每个字符

define('SERIAL_NUM_LEN', 4);
$info1 = 'nkw549blc003i00021';
$number1 = ''; $number2 = '';
for ($i = 0; $i < strlen($info1)-SERIAL_NUM_LEN; $i++) {
    $number1 .= $info1[$i];
}
for ($i = strlen($info1)-SERIAL_NUM_LEN; $i < strlen($info1); $i++) {
    $number2 .= $info1[$i];
}

var_dump($number1, $number2);

输出:

string 'nkw549blc003i0' (length=14)

string '0021' (length=4)

这样,如果要构建完全不同的字符串,可以跳过所需字符串中的任何字符。或者在中间添加字符。