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

用前两个空格和逗号分隔字符串,PHP,php,parsing,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: Intesti

我有一组很长的数字和描述,后跟一个逗号,我需要将其解析为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
所以基本上,第一个空格结束起始数字,第二个空格结束结束数字,逗号结束描述


我不确定我将如何写出来,以便我可以存储每个记录。。。任何帮助都将不胜感激。

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

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

对不起。在一个小手机上打字,所以不容易给你编码的例子。

这应该可以做到

<?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";
}

您可以使用正则表达式执行此操作。有关如何使用它的信息,请参阅。使用
preg\u match\u all
获取所有匹配项。当explode可以工作时,正则表达式在这里可能是一种过度使用。explode无法识别OP想要的确切模式。“第一个空格结束起始数字,第二个空格结束结束数字,逗号结束描述”。这可以用一个正则表达式来完成,
(\d+)\s+(\d+)\s+(.*),
。这对你有用吗?如果是,请将此标记为已接受,如果有问题,请发布。