2016-11-04 8 views
-1

私はPHP文字列でパターンを見つける方法を探しています。私はpreg_match functionの認識していますが、それは唯一私が文字列内のパターンを見つけるPHP

'$ 50以上のご注文オフ$ 10' 'ベビーステーショナリー5%OFF' これら

のようないくつかの取引を持っている1または0

を返します。

「5% '$ 40以上のご注文オフ$ 7.50'

'$ 30以上のご注文オフ$ 5' Fご注文 '

どれ購入オフ

'11%'

'10%オフ '$ 50以上のご注文オフ$ 5'

すべての注文

'$ 100以上のご注文オフ$ 10'

私がやろうとしています何

'どれを購入すると$ 3出荷は' $ xまたは$ XXまたは$ XXXまたはX%またはXX%以下またはXXを得ることです取引テキストからx%。

パターンが存在するかどうかを調べるのではなく、実際の値を取得したいと考えています。

から例えば

、 '$ 100以上のご注文オフ$ 10'、

私は$ 10と$ 100取得し、変数に保存します。

+0

何を試しましたか?あなたのサンプルには、例えば2つの出現文字列が含まれています。 $ ##、それに一致するものは?最初、最後、すべて? – nozzleman

答えて

0

関数preg_match_all()を使用して、一致を別の変数(関数の3番目のパラメータ)に格納できます。

$str = '$10 Off Orders Over $100'; 
$matches = []; 
$pattern = '/\$[0-9]*\.{0,1}[0-9]+/'; 
preg_match_all($pattern, $str, $matches); 

echo $matches[0][0]; // $10 
echo $matches[0][1]; // $100 
+0

あなたのパターンは確実に '$ 5'にマッチしないことに注意してください.OPsの例は10進値を含んでいないので、それらをまったく照合する必要はありません。それ以外の場合は、数字部分に '[0-9] +(?:\。[0-9] +)?'を使用できます。 –

+0

私の答えを編集しました。最初の '+ 'を' * 'に変更しました。 OPの例の中には、 '$ 7.50'のような小数の値が含まれています。 –

+0

またパーセント値も取得する必要があります –

関連する問題