函数返回数值

时间:2012-10-02 08:26:29

标签: php string

这样做的优雅方式是什么?

我有这个 - > “MC0001”这是输入。它始终以“MC”开头 我输入的输出是“MC0002”。

所以我创建了一个在删除“MC000”后应该返回“1”的函数。我将在稍后将其转换为整数,因此我可以生成“MC0002”,这可能会达到“MC9999”。要做到这一点,我想我需要循环遍历字符串并计算零等等,但我想我会弄得一团糟。

有人有更好的主意吗?

7 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

<?php
$string = 'MC0001';
// extract the part succeeding 'MC':
$number_part = substr($string, 2);
// count the digits for later:
$number_digits = strlen($number_part);
// turn it into a number:
$number = (int) $number_part;
// make the next sequence:
$next = 'MC' . str_pad($number + 1, $number_digits, '0', STR_PAD_LEFT);

答案 1 :(得分:0)

只需使用ltrim删除任何前导字符:http://php.net/manual/en/function.trim.php

$str = ltrim($str, 'MC0');
$num = intval($str);

答案 2 :(得分:0)

使用filter_var可能是最佳解决方案。

echo filter_var("MC0001", FILTER_SANITIZE_NUMBER_INT)."\n";
echo filter_var("MC9999", FILTER_SANITIZE_NUMBER_INT);

会给你

0001
9999

这些可以转换为int或只是原样使用,因为如果你将它们用作数字,PHP将自动转换。

答案 3 :(得分:-1)

<php
// original number to integer
sscanf( $your_string, 'MC%d', $your_number );
// pad increment to string later on
sprintf( 'MC%04u', $your_number + 1 );

答案 4 :(得分:-2)

当有前导零时,不确定是否有更好的方法将字符串解析为整数。

我建议你做以下事情: 1.循环通过字符串(从位置2开始,因为您不需要MC部分) 2.如果找到大于0的数字,请停止,使用当前位置获取子字符串,并使用字符串的长度减去当前位置。转换为整数,返回值。

答案 5 :(得分:-2)

您可以通过对字符串执行substring来删除“MC”标准。

$a = "MC0001";
$a = substr($a, 2); //Lengths of "MC"
$number = intval($a); //1

答案 6 :(得分:-2)

return intval(str_replace($input, 'MC', ''), 10);