2013-10-04 57 views
0

如何將字符串拆分爲從列表編號開始的數組,例如字符串中的「2.」。如何查找由數字和符號組成的字符串,如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" 
) 

提前感謝!

PS。我知道它不是很容易;)

+3

[足夠關閉?](http://3v4l.org/hgIol) – Passerby

+0

THX的迴應!現在我有一個方向去哪裏!我正在對數據集進行測試,看起來在第10次上市後的正則表達式開始打破它不應該的數字。我會做更多的測試,並會更新這篇文章。 Thx再次! –

回答

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); 
+0

你做到了男人!謝謝! –

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

+0

@jogesh_pi當第一個字符被分割時,分割是如何工作的。它將第一部分之前的所有內容(這裏沒有)發送。我已更新我的帖子以將其刪除。 – DACrosby

+0

謝謝你的努力。 –

0

comment擴展:

在兩位數以上指標的情況下,你可以是一個小的正則表達式更積極:

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 
) 

Live demo

相關問題