使用preg_match_all过滤掉包含此但不包含此字符串的字符串

时间:2014-04-11 02:59:56

标签: php filter

我遇到了preg_match_all的问题。我有这个字符串:

     $product_req = "ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9";

我需要在前面加上“ACTIVE-”而不是“CATEGORY-ACTIVE-”,所以在这种情况下结果应该是6,9。我使用了以下声明:

      preg_match_all("/ACTIVE-(\d+)/", $product_req, $this_act);

然而,这将返回所有数字,因为所有数字实际上都在“ACTIVE-”之前,但这不是我的意思,因为我需要省略那些前面带有“CATEGORY-ACTIVE-”的数字。我如何配置preg_match_all来做到这一点?或者也许还有其他功能可以完成这项工作?

编辑:

我试过了:

      preg_match_all("/CATEGORY-ACTIVE-(\d+)/", $product_req, $this_cat_act);
      preg_match_all("/ACTIVE-(\d+)/", $product_req, $this_act);
      $act_cat = str_replace($this_cat_act[1],"",$this_act[1]);

它有点工作,但我想有更好,更清洁的方法来做到这一点。除此之外,输出也有点奇怪。

谢谢。

0 个答案:

没有答案