0

我试图找出一种方法来解析包含大约 3-4 列数据的字符串,每个元素之间有可变空格。我想将每一行分成各自的组件。示例如下:

WHITE BLOOD CELL COUNT      10.2        4.0-10.8
HEMOGLOBIN   8.9   ABNORMAL LOW    12-16
PLATELET COUNT     250    160-400

所以在上面的例子中,两行有三个元素,一行有四个元素。我想找到一种方法将它分开。如果第一个元素是一个单词,那将很容易,但是除了遍历每个字符并匹配字母或数字/句点/破折号并以这种方式进行之外,我没有看到一种简单的方法来做到这一点。

4

2 回答 2

1

您的数据可以使用以下方法分成几行:

$rows = explode("\n", $str);

然后,对于每一行,您可以使用以下方法按列拆分数据:

foreach($rows as $i => $row){
    $rows[$i] = preg_split ( '/\s{2,}/' , $row);
}

这是一个演示:http ://codepad.org/BdCHu8PO

于 2013-01-07T07:15:54.383 回答
0
preg_match_all("#(.*?)(?:\s{2,}|\z)#",$str,$matches);

数组将存储在 $matches[0] 中:

IE:

$matches[0][0] 是白细胞计数

$matches[0][1] 是 10.2

... ETC

一个例子在这里: http ://sandbox.onlinephpfunctions.com/code/6e36760e284e1fdc5160755d866b5aaea4df3b16

另一个答案已经很好了,但我想我会包括一步正则表达式。:)

于 2013-01-07T07:28:37.283 回答