我有一个字符串如下:
$product_req = "CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-6,ACTIVE-9";
我需要一个只返回前面带有" CATEGORY-ACTIVE - "的数字的函数。 (不带引号)换句话说它应该返回:8,4并将其他所有内容保留。
有没有可以执行此操作的php函数?
谢谢。
答案 0 :(得分:3)
使用Preg_match_all
并提取第一场比赛
$input_lines="CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-6,ACTIVE-9"
preg_match_all("/CATEGORY-ACTIVE-(\d+)/", $input_lines, $output_array);
print_r(join(',',$output_array[1]));
<强>输出强>
8,4
答案 1 :(得分:2)
有没有可以执行此操作的php函数?
<?php
$str = 'CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-6,ACTIVE-9';
$str=explode(',',$str);
$temparr=array();
foreach($str as $v)
{
if(strpos($v,'CATEGORY-ACTIVE-')!==false)
{
$temparr[]=str_replace('CATEGORY-ACTIVE-','',$v);
}
}
echo implode(',',$temparr); //"prints" 8,4
implode
它atlast(首选方式..)<?php
$str = 'CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-6,ACTIVE-9';
preg_match_all('/CATEGORY-ACTIVE-(.*?),/', $str, $matches);
echo implode(',',$matches[1]); //8,4
答案 2 :(得分:1)
我使用外观断言来实现这一目标:
(?<=CATEGORY-ACTIVE-)(\d+)
<强>可视化:强>
<强>代码:强>
$str = 'CATEGORY-ACTIVE-8,CATEGORY-ACTIVE-4,ACTIVE-6,ACTIVE-9';
preg_match_all('/(?<=CATEGORY-ACTIVE-)(\d+)/', $str, $matches);
print_r($matches[1]);
<强>输出:强>
Array
(
[0] => 8
[1] => 4
)
答案 3 :(得分:0)
是的,请随意探索正则表达式的精彩世界!
我建议你自己做一些阅读,因为&#34;得到答案&#34;当谈到正则表达式是一种罪恶,你从中学不到任何东西。
我自己并不是经验丰富,但这是你必须学习的事情之一,而且理论在这里不会削减它。< / p>
答案 4 :(得分:0)
$ str = 84838493849384938;
preg_match_all(/ [8.4] /,$ str);
您也可以在这个网站http://www.phpliveregex.com/
上玩REgex