如何查找由数字和符号组成的字符串,例如“2.“(点后空格)在 PHP 中


How to find string consisting of digit and symbol, like "2. "(space after dot) in PHP?

如何将字符串分解为从其列表编号开始的数组,例如字符串中的"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
)

现场演示