2016-11-04 77 views
-1

我正在尋找一種方法來查找PHP字符串中的模式。我知道preg_match function但只返回1或0在字符串中查找模式PHP

我有這樣的

一些交易「5折寶貝文具」

「$ 10關閉提供訂單超過$ 50」

'$ 5關購物滿$ 30'

'$ 7.50關閉訂單超過$ 40'

「5% ˚F您的訂單 '

'11折任何購買'

'$ 5折訂單超過$ 50'

'10折所有訂單

'$ 10關閉提供訂單超過$ 100'

'$航運購物滿'

我所試圖做的就是$ x或$ XX或者$ XXX或x%或XX%或XX x從交易文本。

我想獲取實際值而不是檢查模式是否存在。

例如,從

'$ 10關閉提供訂單超過$ 100',

我想獲得$ 10和$ 100,並將它們保存在一個變量。

+0

你試過了什麼?你的樣品包含兩個字符串,例如。 $ ##,那麼應該匹配什麼?第一,最後,所有? – nozzleman

回答

0

函數preg_match_all()可用於將匹配存儲到另一個變量(函數的第三個參數)。

$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示例不包含小數值,所以您可能根本不需要匹配它們。否則,您可以使用數字部分的[[0-9] +(?:\。[0-9] +)?'。 –

+0

編輯我的答案。剛把第一個'+'改成'*'。一些OP的例子確實包含像$ 7.50這樣的十進制值。 –

+0

您還必須獲取百分比值 –