如何在字符串中过滤Just Number,如果数字从零开始,如何添加另一个数字

时间:2016-02-09 03:16:16

标签: php cakephp

我从PHP或cakephp开始。

我有一个案例,当我想获取 Just 代码中的数字类型为字符串时,

这是示例字符串:

PR00006757

我希望在没有 PR 的情况下获得 00006757 的数字

我已经尝试过使用:

$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
pr ($code); exit;

然后我得到结果"00006757"

但我希望+1结果, 是"00006757 + 1" = 00006758

但实际上,我添加1(+ 1)后的结果是6758而不是00006758

如何以这种方式格式化答案?

3 个答案:

答案 0 :(得分:3)

您获得的输出是正确的,因为添加1会自动将$code转换为整数类型。你应该使用str_pad来填充你得到的整数值,加上1使它回到所需长度的字符串。

$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$code +=1;
$code = str_pad($code, 8, '0', STR_PAD_LEFT); //convert to padded string
print_r ($code);

修改:Demo Here

编辑2: 添加了长度的自动检测

$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$len = strlen($code); // store the length of the code
$code +=1;
$code = str_pad($code, $len, '0', STR_PAD_LEFT);
print_r ($code);

Demo Here

答案 1 :(得分:2)

你走在正确的轨道上。使用filter_var是获取所需数字的正确方法。没有办法改变PHP进行基本添加的方式。最好的机会是识别数字上的填充,并在添加后添加填充。以下是对您的代码的更新,可能有所帮助。

$code = filter_var($this->request->data['Price']['code'], FILTER_SANITIZE_NUMBER_INT);
$len = strlen($code);
$newcode = $code + 1;
str_pad($newcode, $len, "0", STR_PAD_LEFT);

在使用您的示例输入进行测试后,我收到了:“00006758”。

答案 2 :(得分:1)

这是另一个例子

<?php
$str_code = 'PR00006757';
$code = filter_var($str_code, FILTER_SANITIZE_NUMBER_INT);
$code +=1;
$num_padded = sprintf("%08d", $code);
echo $num_padded;