我想知道如何根据非0的第一个字符拆分字符串,例如
$ID = ABC-000000160810;
我想拆分id,看起来像这样:
$split_ID = 160810;
我试图获得最后6位数字,但问题是6位数字可能并不总是一致,所以只需要根据第一个非零值进行拆分。实现这一目标的最简单方法是什么?
感谢。
答案 0 :(得分:1)
这是使用正则表达式的方法:
$id = 'ABC-000000160810';
preg_match('/-0*([1-9][0-9]*)/', $id, $matches);
$split_id = $matches[1];
答案 1 :(得分:0)
如果您只想删除前导零,则可以使用ltrim。
$ID = ABC-000000160810;
$split_ID = ltrim($str, '0');
答案 2 :(得分:0)
使用ltrim删除主要字符。
$id = 'ABC-00001234';
$numeric = ltrim(mb_substr($id, mb_strpos($id, '-') + 1), '0');
echo $numeric; // 1234
以上内容要求启用mbstring
扩展名。如果遇到错误,请启用扩展程序或使用非多字节函数substr
和strpos
。可能你应该养成使用mb_
字符串函数的习惯。
这也应该有效:
const CHAR_MASK = 'a..zA..Z-0';
$id = 'ABC-00001234';
$numeric = ltrim($id, CHAR_MASK);
echo $numeric; // 1234
答案 3 :(得分:0)
对于您的示例“ABC-00000016081”,您可以使用与第一部分匹配的正则表达式,直到您遇到不为零,然后使用\K
不包括最终匹配中先前消耗的字符。< / p>
[^-]+
使用否定字符类匹配不是-
一次或多次-
按字面意思匹配0+
匹配一次或多次零(如果您希望匹配不带前导零,则可以使用0*
)\K
重置报告的匹配的起点[1-9][0-9]*
将您的值与数字1 -9 答案 4 :(得分:-1)
您可以将ABC部分删除,然后乘以1使其成为数字。
$ID = "ABC-000000160810";
Echo substr($ID, 4)*1;