PHP:字符串的一部分没有爆炸()

时间:2014-07-15 13:02:08

标签: php regex sum explode

我有一些格式为15-37;10-38;5-39;5-XXS;45-XS;的字符串。

-是数量之前,-是大小之后。 ;表示新对的开始。

无需explode()字符串两次,有没有办法可以添加所有数量?

例如,15-37;10-38;5-39;的总数量为30。

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试使用preg_match()

$str ='15-37;10-38;5-39;';
preg_match_all('/(?P<digit>\d+)-/', $str, $matches);

preg_match_all('/(\d+)-/', $str, $matches);
echo array_sum($matches[0]); //30

答案 1 :(得分:1)

我想出了以下代码:

$helper = "15-37;10-38;5-39;";
$sum=0;
for($i=0; $i<$helper.length; $i++){

    if($helper[$i]=="-"){   

        while($helper[$i]!=";")
        $i++;
    }
    else
    {
    if($helper[$i]!=";"){
        $aux="";
        while($helper[$i]!="-" && $helper[$i]!=";"){

            $aux = $aux.$helper[$i];
            //echo $helper[$i]." ";
            $k++;
            $i++;

        }
        $i--;
        echo (int)$aux."<br>";
        $sum = $sum + intval($aux);

    }
    }


}

echo $sum;

您可以在此处测试:http://writecodeonline.com/php/ 最后输出的数字是总和。

希望它有所帮助!