文字列の先頭にあるすべての数字を取得するにはどうすればよいですか?
文字列の例を次に示します。1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1
上記の例では、 を抽出する必要があり1
ます。
文字列の先頭にあるすべての数字を取得するにはどうすればよいですか?
文字列の例を次に示します。1&days=800&trans=9aq8ojjfka24qnl10ohktibfs1
上記の例では、 を抽出する必要があり1
ます。
preg_match('(^\d+)', $str, $matches);
echo 'Leading digits are: ' . (count($matches) ? $matches[0] : '');
数値が常に文字列の先頭にある場合は、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 の提案に従ってください。私はそれがかなり将来性のある証拠だと思います;)
複数のゼロを含む先頭の数字が必要な場合は、文字列をスキャンして検索できます。存在しない場合、値は次のようになります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);
整数も返します。
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);