2015-05-12 167 views
0

我有很長的一組數字和描述後跟一個逗號,我需要解析成3個字段,例如:獨立串,PHP

001 009 Intestinal Infectious Diseases,010 018 Tuberculosis,020 027 Zoonotic Bacterial Diseases,030 041 Other Bacterial Diseases, 

我需要插入每個逗號前的數據分成數據庫中的3個字段,開始,結束和說明。 2個示例將是:

start: 001; end: 009; Description: Intestinal Infectious Diseases 
start: 010; end: 018; Description: Tuberculosis 

所以基本上,第一空間結束啓動數字,第二空間結束端數字和逗號結束說明。

我不確定我會如何寫出來,所以我可以存儲每條記錄......任何幫助將不勝感激。

+0

你可以用正則表達式來做到這一點。有關如何使用它,請參閱http://php.net/manual/en/function.preg-match.php。 – chris85

+1

使用'preg_match_all'獲取所有匹配項。 – Barmar

+0

當爆炸可以工作時,正則表達式在這裏可能會過度殺傷。 – iWantSimpleLife

回答

-1

在逗號上使用explode首先將其分解爲包含數字和說明的數組。

然後,對於從上方的每個字符串,再次使用爆炸,但在一個空間,具有3

http://php.net/explode

對不起的限制。在小手機上打字,所以不容易給你編碼exampled。

0

這應該做到這一點。

<?php 
$string = '001 009 Intestinal Infectious Diseases,010 018 Tuberculosis,020 027 Zoonotic Bacterial Diseases,030 041 Other Bacterial Diseases,'; 
preg_match_all('~(\d+)\s(\d+)\s(.*?),~', $string, $matches); 
for($i =0; $i < count($matches); $i++) { 
    echo 'First integer: ' . $matches[1][$i] . 
     'Second integer: ' . $matches[2][$i] . 
     'Description: ' . $matches[3][$i] . "\n"; 
} 

這個正則表達式正在尋找值之間的一個空格。如果至少應該有一個空白字符,則添加一個+\d+至少有一個數字和連續數字,直到一個空格。 .*?是第一個逗號之前的所有內容。

輸出:

首先整數:001Second整數:009Description:腸道傳染病
第一個整數:010Second整數:018Description:結核
第一個整數:020Second整數:027Description:人畜共患細菌性疾病
首先整數:030第二整數:041描述:其他細菌性疾病

+0

這個工作適合你嗎?如果是這樣,請將此標記爲已接受,如果有問題,請發帖http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work。 – chris85