如何获取字符串开头的所有数字?
以下是一个示例字符串:1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1
在上面的示例中,我需要提取1
。
答案 0 :(得分:4)
preg_match('(^\d+)', $str, $matches);
echo 'Leading digits are: ' . (count($matches) ? $matches[0] : '');
答案 1 :(得分:4)
如果数字始终位于字符串的开头,则可以转换为int,PHP将负责其余部分。
var_dump((int)'1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1');
输出: -
int 1
将证明我的观点。会一样
var_dump((int)'7891&days=800&trans=9aq8ojjfka24qnl10ohktibfs1');
输出: -
int 7891
要使用它: -
$myInt = (int)'1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1';
在此处查看http://codepad.viper-7.com/aih2x3
如果您需要前导零,则应do what Hakre suggests。我认为这是未来的证明;)
答案 2 :(得分:4)
如果您需要前导数字 - 包括多个零 - 您可以scan the string获取它。如果不存在,则值为NULL
:
$subject = '1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1';
sscanf($subject, '%[0-9]', $leadingDigits);
echo 'Leading digits are: ', var_dump($leadingDigits);
Outpupt(Demo):
Leading digits are: string(1) "1"
如果你不需要前导零do what vascowhite suggested,那就非常简单了。否则:
sscanf($subject, '%d', $leadingDigits);
也返回一个整数。
答案 3 :(得分:0)
使用PHP内置FAST功能 http://www.php.net/manual/en/function.strspn.php
// int strspn ( string $subject , string $mask [, ...])
$digits=substr($str,0,strspn($str,'0123456789')-1);