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 に答える