如何使用preg_match_all爆炸字符串

时间:2014-05-26 05:28:33

标签: php

我有一个平面文件。我想将其转换为csv。 平面文件格式是

"XXX" "H345" 2 "S" 1 "*" 0 01/03/2001 31/03/2002 "WORK IN PROGRESS" "" "" "" ""

此处字段以空格分隔。

我按照以下步骤进行转换

$file1="job.txt";
$file2="job.csv";
$content=file_get_contents($file1);
$arr=explode("\n",$content);
$f=fopen($file2,'w');   
foreach($arr as $value)
{
  $linearr=explode(' ',$value);
  fputcsv($f, $linearr);            

}

这里的问题是它还会爆炸"正在进行的工作"进入三个不同的领域。 怎么解决这个?如果我使用preg_match_all而不是如何为这种情况制作正则表达式??

1 个答案:

答案 0 :(得分:0)

您的格式几乎是CSV格式,因此您可以使用str_getcsv

等CSV功能
$string = '"XXX" "H345" 2 "S" 1 "*" 0 01/03/2001 31/03/2002 "WORK IN PROGRESS" "" "" "" ""';
                          // v -- there is space
print_r(str_getcsv($string, ' ')); // < -- you should use it
                          // ^ -- it's your custom delimiter
//Array
//(
//    [0] => XXX
//    [1] => H345
//    [2] => 2
//    [3] => S
//    [4] => 1
//    [5] => *
//    [6] => 0
//    [7] => 01/03/2001
//    [8] => 31/03/2002
//    [9] => WORK IN PROGRESS
//    [10] => 
//    [11] => 
//    [12] => 
//    [13] => 
//)

fgetcsv