用前两个空格和逗号PHP分隔字符串

时间:2015-05-12 01:01:47

标签: php parsing

我有一长串的数字和描述,后跟一个逗号,我需要解析为3个字段,例如:

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

基本上,第一个空格结束起始数字,第二个空格结束结束数字,逗号结束描述。

我不确定如何将其写出来以便我可以存储每条记录......任何帮助都将受到赞赏。

2 个答案:

答案 0 :(得分: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+至少是一个数字和连续数字,直到空格为止。 .*?是第一个逗号之前的所有内容。

输出:

  

第一个整数:001秒整数:009描述:肠道传染病
  第一个整数:010秒整数:018描述:结核病
  第一个整数:020秒整数:027描述:人畜共患病细菌疾病
  第一个整数:030秒整数:041描述:其他细菌性疾病

答案 1 :(得分:-1)

在逗号上使用explode首先将其分隔为包含数字和描述的数组。

然后,对于上面的每个字符串,再次使用explode,但是在空格上,限制为3.

http://php.net/explode

对不起。在小型手机上打字,所以不容易给你编码例如。