2

如何获取字符串开头的所有数字?

这是一个示例字符串:1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1

在上面的示例中,我需要提取1.

4

4 回答 4

4
preg_match('(^\d+)', $str, $matches);
echo 'Leading digits are: ' . (count($matches) ? $matches[0] : '');
于 2012-10-28T21:09:15.430 回答
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

如果您需要前导零,那么您应该按照 Hakre 的建议进行操作。我认为这是未来的证明;)

http://php.net/manual/en/language.types.type-juggling.php

于 2012-10-28T21:12:00.170 回答
4

如果您需要前导数字 - 包括多个零 - 您可以扫描字符串以查找它。如果不存在,则值为NULL

$subject = '1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1';   

sscanf($subject, '%[0-9]', $leadingDigits);

echo 'Leading digits are: ', var_dump($leadingDigits);

输出(演示):

Leading digits are: string(1) "1"

如果您不需要前导零,请执行 vascowhite 建议的操作,这非常简单。除此以外:

sscanf($subject, '%d', $leadingDigits);

也返回一个整数。

于 2012-10-28T21:44:20.067 回答
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);
于 2012-10-28T22:26:23.463 回答