0

如何将字符串分解为从其列表编号开始的数组,例如字符串中的“2.”。

输入:
1. new zealand 0.909991233 2. france and it territories 0.114444444 3. united states 0.99991119991 and so on

输出:

array (
   "1. new zealand 0.909991233",
   "2. france and it territories 0.114444444",
   "3. united states 0.99991119991"
)

提前致谢!

PS。我知道这并不容易;)

4

3 回答 3

1

这应该这样做:

$str = "1. new zealand 0.909991233 2. france and it territories 0.114444444 3. united states 0.99991119991";

$pattern = '/(\d+\.\s)/i';
$replacement = '; $1';
$str = preg_replace($pattern, $replacement, $str);
$arr = explode('; ', $str);

echo implode("<br>", $arr);
于 2013-10-04T03:45:20.623 回答
0

还不错,一条线确实有效。

<?php
// Input
$input = "1. new zealand 0.909991233 2. france and it territories 0.114444444 3. united states 0.99991119991";

// Split the input
$ex = preg_split( "#(?=\d+\.\s+)#", $input);

// (Optional) Lose the empty result
unset( $ex[0] );

// Output
var_dump( $ex );

http://codepad.org/wxtmbU15

于 2013-10-04T03:44:30.320 回答
0

从评论扩展:

在两位或更多位索引的情况下,您可以在 RegExp 中更激进一些:

array_map("trim",preg_split('#(?=\W[0-9]+\.\s+)#',"1. new zealand 0.909991233 22. france and it territories 0.114444444 333. united states 0.99991119991 and so on"))

输出

Array
(
    [0] => 1. new zealand 0.909991233
    [1] => 22. france and it territories 0.114444444
    [2] => 333. united states 0.99991119991 and so on
)

现场演示

于 2013-10-04T04:10:28.627 回答