PHP では、正規表現と preg_match_all()
関数を使用して文字列から数値を抽出できます。文字列からすべての数値を抽出する方法の例を次に示します。
$my_string = "There are 15 Oranges and 3 Bananas.";
preg_match_all('/[0-9]+/', $my_string , $matches);
print_r($matches[0]);
これにより以下が出力されます:
Array ( [0] => 15 [1] => 3 )
説明:
/[0-9]+/
は、1 つ以上の連続する数字を検索します。preg_match_all()
関数は、正規表現が出現するすべての文字列を検索し、一致したものを $matches
配列に保存します。print_r()
関数は配列の内容を表示するために使用されます。preg_replace()
関数を使用して、文字列から数字以外の文字を削除し、数字のみを保持することもできます。
$string = "There are 15 Oranges and 3 Bananas.";
$numbers = preg_replace('/D/', '', $string);
echo $numbers;
これにより以下が出力されます:
15 3
説明:
/D/
は、数字以外の文字に一致します。preg_replace()
関数は、数字以外の文字をすべて空の文字列に置き換え、文字列から事実上削除します。別の方法もありますが、上記の 2 つのオプションのように信頼性は高くありません。 PHP 組み込み関数 filter_var()
を使用して文字列から int を抽出できます。
$string = "There are 15 Oranges and 3 Bananas.";
// extract numbers from string
$my_int = (int)filter_var($string ,FILTER_SANITIZE_NUMBER_INT);
echo $my_int;
これにより以下が出力されます:
153