PHP正在寻找从字符串中获取值的函数
我正在寻找一个PHP函数,它只能从这个字符串中获取前面带有“ACTIVE-”的数字,但不包含前面带有“CATEGORY-ACTIVE-”的数字 我尝试了PHP正在寻找从字符串中获取值的函数,php,arrays,regex,function,output,Php,Arrays,Regex,Function,Output,我正在寻找一个PHP函数,它只能从这个字符串中获取前面带有“ACTIVE-”的数字,但不包含前面带有“CATEGORY-ACTIVE-”的数字 我尝试了preg\u match\u all,但它不起作用,因为它会返回所有的数字。我应该使用什么函数来代替 谢谢。用消极的眼光看后面的?对于连字符,如果在单词ACTIVE之前找到连字符,则它将不匹配 <?php $str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9'; preg
preg\u match\u all
,但它不起作用,因为它会返回所有的数字。我应该使用什么函数来代替
谢谢。用消极的眼光看后面的
?对于连字符,如果在单词ACTIVE
之前找到连字符,则它将不匹配
<?php
$str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9';
preg_match_all('/(?<!-ACTIVE-)(\d+)/', $str, $matches);
echo implode(',',$matches[1]);
这只是一个好的正则表达式的问题:
$re = '/(^|,)ACTIVE-(\d+)/';
$str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9';
preg_match($re, $str, $matches);
匹配6和9
正则表达式解释:
第一个括号与行字符串开头(字符)或逗号匹配。这样我们就摆脱了类别-
第二个括号与数字匹配,因为\d
代表数字字符,+
代表一个或多个字符
g
结尾表示global
标志-第一次匹配后不要停止
您可以在此处阅读有关PHP正则表达式语法的更多信息:
你可以在这里玩这个正则表达式:谢谢,这很管用,但我希望你能给我一个解释,因为我真的不太理解$re部分。为什么所有这些奇怪的符号都是必要的?“它们是什么意思?”CainNuke补充了解释和一些有用的链接,再次感谢您的详细回答。
6,9
$re = '/(^|,)ACTIVE-(\d+)/';
$str = 'ACTIVE-6,CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-9';
preg_match($re, $str, $matches);