2016-11-04 78 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

您还必须获取百分比值 –