PHP で文字列から数字を抽出する方法

Minahil Noor 2023年1月30日
  1. PHP で文字列から数値を抽出するために preg_match_all() 関数を使用する
  2. PHP で文字列から数値を抽出するための filter_var() 関数の使用法
  3. PHP で文字列から数値を抽出するには preg_replace() 関数を使用する
PHP で文字列から数字を抽出する方法

この記事では、PHP で文字列から数字を抽出する方法を紹介します。

  • preg_match_all() 関数を使用する
  • filter_variable() 関数を使用する
  • preg_replace() 関数を使用する

PHP で文字列から数値を抽出するために preg_match_all() 関数を使用する

組み込みの関数 preg_match_all() を用いて文字列から数値を抽出することができます。この関数は文字列から指定されたパターンをグローバルに検索します。この関数を利用するための正しい構文は以下の通りです。

preg_match_all($pattern, $inputString, $matches, $flag, $offset);

組み込み関数 preg_match_all() は 5つのパラメータを持ちます。パラメータの詳細は以下の通りです。

パラメータ 説明
$pattern 必須 これは与えられた文字列の中でチェックしたいパターンです。
$inputString 必須 与えられたパターンを検索したい文字列です。
$matches オプション このパラメータが与えられた場合、この関数はマッチング処理の結果を格納します。
$flags オプション このパラメータには 2つのオプションがあります。PREG_OFFSET_CAPTUREPREG_UNMATCHED_AS_NULL です。このパラメータの説明はこちらを参照してください。
$offset オプション どこからマッチング処理を開始するかの機能を伝えます。通常、検索は最初から始まります。

この関数は Boolean 変数を返します。与えられたパターンが存在すれば真を返します。

以下のプログラムは、preg_match_all() 関数を用いて与えられた文字列から数値を抽出する方法を示しています。

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
preg_match_all('!\d+!', $string, $matches);
print_r($matches); 
?> 

!\d+!パターンを使用して、文字列から数値を抽出しました。

出力:

Array
(
    [0] => Array
        (
            [0] => 4
            [1] => 6
        )

)

PHP で文字列から数値を抽出するための filter_var() 関数の使用法

また、文字列から数値を抽出するには、filter_var() 関数を使用することもできます。この関数を使用するための正しい構文は以下の通りです。

filter_var($variableName, $filterName, $options)

関数 filter_var() は 3つのパラメータを受け付ける。パラメータの詳細は以下の通りです。

パラメータ 説明
$variableName 必須 これはフィルタリングする変数です。
$filterName 必須 変数に適用されるフィルタの名前です。デフォルトでは FILTER_DEFAULT です。
$options 必須 このパラメータは使用するオプションを指定します。

ここでは FILTER_SANITIZE_NUMBER_INT フィルタを利用しています。文字列から数値を抽出するプログラムは以下のようになります。

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
$int = (int) filter_var($string, FILTER_SANITIZE_NUMBER_INT);  
echo("The extracted numbers are: $int \n"); 
?> 

出力:

The extracted numbers are: 46 

PHP で文字列から数値を抽出するには preg_replace() 関数を使用する

PHP では、文字列から数値を抽出するために preg_replace() 関数を使用することもできます。この関数を使用するための正しい構文は以下の通りです。

preg_replace($regexPattern, $replacementVar, $original, $limit, $count)

関数 preg_replace() は 5つのパラメータを受け付けます。パラメータの詳細は以下の通りです。

パラメータ 説明
$regexPattern 必須 これは元の stringarray で検索するパターンです。
$replacementVar 必須 これは検索された値の置換に用いる 文字列 または 配列 です。
$original 必須 これは、値を見つけて置換したい 文字列 または 配列 です。
$limit オプション このパラメータは置換の数を制限します。
$count オプション このパラメータは、元の stringarray に対して行われた総置換数を示します。

ここでは、文字列から数値を求めるためにパターン /[^0-9]/ を用いることにします。文字列から数値を抽出するプログラムは以下の通りです。

<?php 
$string = 'Sarah has 4 dolls and 6 bunnies.';
$outputString = preg_replace('/[^0-9]/', '', $string);  
echo("The extracted numbers are: $outputString \n"); 
?> 

出力:

The extracted numbers are: 46 

関連記事 - PHP String