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

したがって、上記の例では、2 つの行に 3 つの要素があり、1 つの行に 4 つの要素があります。切り分ける方法を見つけたい。最初の要素が1つの単語であれば簡単ですが、各文字を調べて、文字または数字/ピリオド/ダッシュのいずれかに一致させ、そのようにする以外にこれを行う簡単な方法はわかりません.

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] に格納されます:

すなわち:

$matches[0][0] は白血球数です

$matches[0][1] は 10.2 です

...など

例はここにあります: http://sandbox.onlinephpfunctions.com/code/6e36760e284e1fdc5160755d866b5aaea4df3b16

他の答えはすでにうまく機能していますが、ワンステップの正規表現を含めると思いました。:)

于 2013-01-07T07:28:37.283 に答える