Php 我需要提取“无止境”字符串的持续时间

Php 我需要提取“无止境”字符串的持续时间,php,regex,Php,Regex,我有一根这样的绳子 aaa ~120 Sek. 53 Sek. ~~ bbb asdfasf aasdf asdfasdf ~600 Sek.~~ ccc ~60 Sek. 43 Sek. ~~ ddd ~240 Sek. 55 Sek. ~~ 我得把所有的xxx瑞典克朗加起来。这仅仅是几秒钟 有什么好主意吗 将Bruno看作是使用regex的一种方法look-ahead,这样您就可以获得Sek-word后面的所有数字。若你们想对匹配的结果做任何过滤,比如3位数或其他什么,那个么你们可以使用这

我有一根这样的绳子

aaa ~120 Sek. 53 Sek. ~~ bbb asdfasf aasdf asdfasdf ~600 Sek.~~ ccc ~60 Sek. 43 Sek. ~~ ddd ~240 Sek. 55 Sek. ~~
我得把所有的xxx瑞典克朗加起来。这仅仅是几秒钟

有什么好主意吗

将Bruno看作是使用regex的一种方法look-ahead,这样您就可以获得Sek-word后面的所有数字。若你们想对匹配的结果做任何过滤,比如3位数或其他什么,那个么你们可以使用这个函数

$re = '/\d+(?= Sek)/';
$str = 'aaa ~120 Sek. 53 Sek. ~~ bbb asdfasf aasdf asdfasdf ~600 Sek. ~~ ccc ~60 Sek. 43 Sek. ~~ ddd ~240 Sek. 55 Sek. ~~';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
#print_r($matches);
$sum = 0;
foreach ($matches as $item) {
    $sum += $item[0];
}
echo $sum;
编辑:交替计算总和

$sum = array_reduce($matches, function(&$result, $item) {
    return $result + $item[0];
}, 0);


工作演示:

刚刚添加了regex标记,因为这可能是一种有用的方法。“有什么好主意吗?”-请阅读。我们希望您在这里对您的问题/问题投入更多的初始努力,而不仅仅是询问我们的“想法”。这是有效的-如果我在硬编码此字符串$str时使用上面的$str。一旦我将相同的字符串输入MySql数据库并从中检索它:结果不起作用,总和将仅使用53+43。对于mysql中的所有字段内容,我用ä;现在我的代码可以正常工作了。@dh1sbg很高兴现在可以工作了,
$sum= array_sum(array_column($matches,0));