在字符串中查找模式PHP
我正在寻找一种方法来查找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,并将它们保存在一个变量。
函数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
请注意,您的模式不符合'$ 5',OPs示例不包含小数值,所以您可能根本不需要匹配它们。否则,您可以使用数字部分的[[0-9] +(?:\。[0-9] +)?'。 –
编辑我的答案。刚把第一个'+'改成'*'。一些OP的例子确实包含像$ 7.50这样的十进制值。 –
您还必须获取百分比值 –
你试过了什么?你的样品包含两个字符串,例如。 $ ##,那么应该匹配什么?第一,最后,所有? – nozzleman