データの文字列があります: 数字、スペース、そして文字、数字、特殊文字、およびスペースを含むことができる単語です。最初の数字のみを分離し、次に単語のみを分離して、データをテーブルに再レンダリングできるようにする必要があります。
1 foo
2 ba_r
3 foo bar
4 fo-o
編集: "^[0-9]+[" "]" でこれを試みていましたが、うまくいきません。
この正規表現を使用して、各行をキャプチャできます。
/^(\d+)\s+(.*)$/m
この正規表現は各行から始まり、1 つ以上の数字をキャプチャし、1 つ以上の空白文字に一致してから、行末まですべてをキャプチャします。
次に、 を使用してpreg_match_all()
、必要なデータを取得できます。
preg_match_all( '/^(\d+)\s+(.*)$/m', $input, $matches, PREG_SET_ORDER);
$matches
次に、次のように、配列からデータを解析できます。
$data = array();
foreach( $matches as $match) {
list( , $num, $word) = $match;
$data[] = array( $num, $word);
// Or: $data[$num] = $word;
}
Aprint_r( $data);
が出力します:
Array
(
[0] => Array
(
[0] => 1
[1] => foo
)
[1] => Array
(
[0] => 2
[1] => ba_r
)
[2] => Array
(
[0] => 3
[1] => foo bar
)
[3] => Array
(
[0] => 4
[1] => fo-o
)
)
$str = <<<body
1 foo
2 ba_r
3 foo bar
4 fo-o
body;
preg_match_all('/(?P<numbers>\d+) +(?P<words>.+)/', $str, $matches);
print_r(array_combine($matches['numbers'],$matches['words']));
出力
Array
(
[1] => foo
[2] => ba_r
[3] => foo bar
[4] => fo-o
)