我在用户完成了许多步骤后捕获了一些数据。以下面的String格式成功捕获此数据。请注意,由于某些限制,我无法选择以任何其他格式获取此数据。
正在捕获两个计数。一个是一圈,然后在每一圈内,Reps的数量。
Lap 1 Rep 1, 11, Lap 1 Rep 2, 12, Lap 1 Rep 3, 15, Lap 2 Rep 1, 22, Lap 2 Rep 2, 24, Lap 2 Rep 3, 29
我需要在PHP数组中从上面的代码中获取以下值。
请注意,由于用户在此过程中选择了Laps和Reps的数量,因此Laps和Reps也可以达到两位数。但是当我得到上述值时,我也有Laps和Reps的总数。就像在上面的例子中一样,我的Laps为2,每个Lap的Reps为3。
有人可以帮忙吗?
答案 0 :(得分:4)
如评论中所述,您最好运行正则表达式查询(以此为例:Lap \d Rep \d, (\d+)
):
preg_match_all("/Lap \d Rep \d, (\d+)/", $str, $matches);
现在,如果您查看$matches[1]
,您将获得以下信息:
Array (
[0] => 11
[1] => 12
[2] => 15
[3] => 22
[4] => 24
[5] => 29
)
$str
是您在那里的字符串作为示例。
答案 1 :(得分:2)
这将完成你想要的。我首先使用explode函数拆分字符串,然后我只使用mod函数保留所有其他元素并检查值以查看它是否为0:
$info = "Lap 1 Rep 1, 11, Lap 1 Rep 2, 12, Lap 1 Rep 3, 15, Lap 2 Rep 1, 22, Lap 2 Rep 2, 24, Lap 2 Rep 3, 29";
$i = 1;
$keepThese = Array();
foreach(explode(", ", $info) as $value) {
if ($i++ % 2 == 0) {
array_push($keepThese, $value);
}
}
var_dump($keepThese);
PSST:您在示例输出中忘记了15。