从PHP中的字符串中提取特定数据

时间:2017-03-13 05:00:27

标签: php arrays

我在用户完成了许多步骤后捕获了一些数据。以下面的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数组中从上面的代码中获取以下值。

  1. 11
  2. 12
  3. 15
  4. 22
  5. 24
  6. 29
  7. 请注意,由于用户在此过程中选择了Laps和Reps的数量,因此Laps和Reps也可以达到两位数。但是当我得到上述值时,我也有Laps和Reps的总数。就像在上面的例子中一样,我的Laps为2,每个Lap的Reps为3。

    有人可以帮忙吗?

2 个答案:

答案 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。