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

时间:2012-10-28 21:07:15

标签: php regex string preg-match digits

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

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

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

4 个答案:

答案 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。我认为这是未来的证明;)

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

答案 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);