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

  1. PHP で文字列から数値を抽出するために preg_match_all() 関数を使う
  2. PHP で文字列から数値を抽出するための filter_var() 関数の使用法
  3. PHP で文字列から数値を抽出するには preg_replace() 関数を使う

この記事では、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

  • PHP で URL の文字列からパラメータを取得する方法
  • comments powered by Disqus