我有数据字符串:数字,空格,然后是一个可以包含字母,数字和特殊字符以及空格的单词。我只需要隔离第一个数字,然后只需要单词,这样我就可以将数据重新渲染到表格中。
1 foo
2 ba_r
3 foo bar
4 fo-o
编辑:我试图用“^ [0-9] + [”“]”尝试这个,但这不起作用。
答案 0 :(得分:3)
您可以使用此正则表达式捕获每一行:
/^(\d+)\s+(.*)$/m
此正则表达式从每一行开始,捕获一个或多个数字,然后匹配一个或多个空格字符,然后捕获任何内容直到行尾。
然后,使用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;
}
print_r( $data);
will print:
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
)
)
答案 1 :(得分:2)
$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
)