PHP preg_match介于无限固体规则之间

时间:2014-12-17 18:29:51

标签: php preg-match infinity

我需要像

这样的东西
  

preg_match((element1)(。*?) if - (Quantity:)([^ 0]) -return-TRUE ,$ str);

但是(.*?)破坏了所有内容,因为他在从(Quantity:)(0)

旁边的另一个元素(Quantity:)([^0])找到(item2)之前跳过每个(element1)
  

element1 随机:随机数量:0 element2 random:random数量:0 item1 random:random数量:0 item2 random:random < strong>数量:999

那么我怎么能说php对(Quantity:)([^0])做严格并返回TRUE,但是如果它(Quantity:)(0)返回FALSE而不是和我一起玩无限再造{{1} } (Quantity:)(0)也是?

更新实时预览这就是我想要的http://www.regexr.com/3a3jn这是我不想发生的事情http://www.regexr.com/3a3jq将其作为文字放在链接示例上,而你#&# 39;我会看到我在说什么

  

{&#34; skuAttr&#34;:&#34; 14:200001438#8; 5:100014064&#34;&#34; skuPropIds&#34;:&#34; 200001438,100014064&#34 ;, &#34; skuVal&#34; {&#34; actSkuBulkCalPrice&#34;:&#34; 3.05&#34;&#34; actSkuBulkPrice&#34;:&#34; 3.05&#34;&# 34; actSkuCalPrice&#34;:&#34; 3.47&#34;&#34; actSkuDisplayBulkPrice&#34;:&#34; US   $ 3.05&#34;&#34; actSkuMultiCurrencyBulkPrice&#34;:&#34; 3.05&#34;&#34; actSkuMultiCurrencyCalPrice&#34;:&#34; 3.47&#34;&#34; actSkuMultiCurrencyDisplayPrice&# 34;:&#34; 3.47&#34;&#34; actSkuMultiCurrencyPrice&#34;:&#34; US   $ 3.47&#34;&#34; actSkuPrice&#34;:&#34; 3.47&#34;&#34; availQuantity&#34;:999,&#34; bulkOrder&#34;:5,&#34 ;库存&#34;:999,&#34; isActivity&#34;:真,&#34; skuBulkCalPrice&#34;:&#34; 3.32&#34;&#34; skuBulkPrice&#34;:&#34 ; 3.32&#34;&#34; skuCalPrice&#34;:&#34; 3.77&#34;&#34; skuDisplayBulkPrice&#34;:&#34; US   $ 3.32&#34;&#34; skuMultiCurrencyBulkPrice&#34;:&#34; 3.32&#34;&#34; skuMultiCurrencyCalPrice&#34;:&#34; 3.77&#34;&#34; skuMultiCurrencyDisplayPrice&# 34;:&#34; 3.77&#34;&#34; skuMultiCurrencyPrice&#34;:&#34; US   $ 3.77&#34;&#34; skuPrice&#34;:&#34; 3.77&#34;}},{&#34; skuAttr&#34;:&#34; 14:200001438#8; 5:100014065& #34;&#34; skuPropIds&#34;:&#34; 200001438,100014065&#34;&#34; skuVal&#34; {&#34; actSkuBulkCalPrice&#34;:&#34; 3.05&# 34;,&#34; actSkuBulkPrice&#34;:&#34; 3.05&#34;&#34; actSkuCalPrice&#34;:&#34; 3.47&#34;&#34; actSkuDisplayBulkPrice&#34 ;: &#34; US   $ 3.05&#34;&#34; actSkuMultiCurrencyBulkPrice&#34;:&#34; 3.05&#34;&#34; actSkuMultiCurrencyCalPrice&#34;:&#34; 3.47&#34;&#34; actSkuMultiCurrencyDisplayPrice&# 34;:&#34; 3.47&#34;&#34; actSkuMultiCurrencyPrice&#34;:&#34; US   $ 3.47&#34;&#34; actSkuPrice&#34;:&#34; 3.47&#34;&#34; availQuantity&#34;:0,&#34; bulkOrder&#34;:5,&#34 ;库存&#34;:0,&#34; isActivity&#34;:真,&#34; skuBulkCalPrice&#34;:&#34; 3.32&#34;&#34; skuBulkPrice&#34;:&#34 ; 3.32&#34;&#34; skuCalPrice&#34;:&#34; 3.77&#34;&#34; skuDisplayBulkPrice&#34;:&#34; US   $ 3.32&#34;&#34; skuMultiCurrencyBulkPrice&#34;:&#34; 3.32&#34;&#34; skuMultiCurrencyCalPrice&#34;:&#34; 3.77&#34;&#34; skuMultiCurrencyDisplayPrice&# 34;:&#34; 3.77&#34;&#34; skuMultiCurrencyPrice&#34;:&#34; US   $ 3.77&#34;&#34; skuPrice&#34;:&#34; 3.77&#34;}}

1 个答案:

答案 0 :(得分:0)

我找到了灵魂

preg_match('/14:200001438#8;5:100014065.*?availQuantity":(\d+)/', $str);

然后我们检查(\d+)是否等于0或任何数字

实际示例 http://www.regexr.com/3a3k0