PHP寻找从字符串中获取值的函数

时间:2014-04-11 05:06:56

标签: php arrays regex function output

我正在寻找PHP中的一个函数,它只能从这个字符串中得到前面带有“ ACTIVE - ”的数字但是忽略前面带有“ CATEGORY-ACTIVE- < /强>“

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

我尝试使用preg_match_all,但它无法正常工作,因为它会返回所有数字。我应该使用什么功能?

谢谢。

2 个答案:

答案 0 :(得分:2)

对连字符使用否定后视?<!-,如果在单词ACTIVE之前找到连字符,那么它就不会匹配。

<?php
$str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9';
preg_match_all('/(?<!-ACTIVE-)(\d+)/', $str, $matches);
echo implode(',',$matches[1]); 

<强> OUTPUT :

6,9

enter image description here

答案 1 :(得分:1)

这只是一个很好的正则表达式问题:

$re = '/(^|,)ACTIVE-(\d+)/'; 
$str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9'; 

preg_match($re, $str, $matches);

匹配 6 9

正则表达式解释:

  1. 第一个括号匹配行字符串start(^ char)或逗号。这样我们就可以摆脱CATEGORY-
  2. 第二个括号与您的号码相匹配,因为\d代表数字字符,+代表一个或多个。
  3. g结尾意味着global旗帜 - 在首场比赛后不要停止。
  4. 您可以在此处阅读有关PHP正则表达式语法的更多信息:http://www.regular-expressions.info/php.html

    您可以在此处使用此正则表达式:http://regex101.com/r/yD6xJ0