Web制作メモ -トップへ-

[PHP] 文字列から数字を抽出する

PHP2015.02.05 15:34

preg_replace()を使えば文字列から数字をお手軽に抽出できます。

preg_replace()は正規表現で文字列で置き換え、結果を返す関数です。

第一引数で正規表現で置き換える文字列を指定し、マッチした場合、第二引数の文字列に置き換えられます。

第三引数は対象の文字列を指定します。

正規表現で数字は[0-9]と表します。

数字以外は[^0-9]と表します。

この指定を使って文字列から数字だけ、もしくは数字以外をお手軽に抽出できます。

文字列から数字以外を抽出

$str = 'File01';
echo preg_replace('/[0-9]/', '', $str);
//結果:「File」と表示される

ただし、実際は文字列を抽出しているわけではなく、数字を削除しているだけなので、文字列が数字を挟み込んでいる場合は注意が必要です。

文字列が数字を挟み込んでいる場合

$str = 'File01-old';
echo preg_replace('/[0-9]/', '', $str);
//結果:「File-old」と表示される

このように数字の前方と後方の文字列がどちらも残ります。

逆に、数字を抽出するには、[^0-9]を使います。

文字列から数字を抽出

$str = 'File01';
echo preg_replace('/[^0-9]/', '', $str);
//結果:「01」と表示される

この場合も、数字が文字列を挟み込んでいるような場合には注意が必要です。

数字が文字列を挟み込んでいる場合

$str = 'File01-old02';
echo preg_replace('/[^0-9]/', '', $str);
//結果:「0102」と表示される