在字符串PHP中查找模式
我正在寻找一种在PHP字符串中查找模式的方法。我知道在字符串PHP中查找模式,php,regex,Php,Regex,我正在寻找一种在PHP字符串中查找模式的方法。我知道preg_match函数,但它只返回1或0 我有一些这样的交易 “婴儿文具5%折扣” “50美元以上订单10美元折扣” “30美元以上订单5美元折扣” “超过40美元的订单折扣7.50美元” “您订单的5%折扣” “购买任何商品均可享受11%的折扣” “50美元以上订单5美元折扣” “所有订单都打九折” “100美元以上订单10美元折扣” “$3随购随付” 我想做的是从交易文本中获得$x或$xx或$xxx或x%或xx%或xxx% 我想得到实际值
preg_match函数
,但它只返回1或0
我有一些这样的交易
“婴儿文具5%折扣”
“50美元以上订单10美元折扣”
“30美元以上订单5美元折扣”
“超过40美元的订单折扣7.50美元”
“您订单的5%折扣”
“购买任何商品均可享受11%的折扣”
“50美元以上订单5美元折扣”
“所有订单都打九折”
“100美元以上订单10美元折扣”
“$3随购随付”
我想做的是从交易文本中获得$x或$xx或$xxx或x%或xx%或xxx%
我想得到实际值,而不是检查模式是否存在
例如,从
“100美元以上的订单可享受10美元折扣”
我想得到$10和$100并将它们保存在一个变量中。函数
preg\u match\u all()
可用于将匹配项存储到另一个变量(函数的第三个参数)
你试过什么?您的示例包含两个字符串,例如$###,那么应该匹配什么?首先,最后,全部?请注意,您的模式目前不匹配
$5
,OPs示例不包含十进制值,因此您可能根本不需要匹配它们。否则,您可以对数字部分使用[0-9]+(?:\[0-9]+)?
。编辑我的答案。刚刚将第一个+
更改为*
。OP的一些示例确实包含十进制值,如$7.50
well@MateiMihai:如何获取正则表达式中的%值。如果我必须在100美元的基础上打10%的折扣,我怎么才能拿到呢。
$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