如何将字符串分解为从其列表编号开始的数组,例如字符串中的"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"
)
提前感谢!
附言。我知道这并不容易;
这应该可以做到:
$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);
还不错,一行确实可以完成工作。
<?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
从注释扩展:
在两位或更多位数索引的情况下,您可以在 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
)
现场演示