PHP:我怎样才能通过逗号分解string,但不是逗号是在引号内?

我需要爆炸我的stringinput到逗号的数组。 但是,该string在引号内包含逗号。

input:

$line = 'TRUE','59','A large number is 10,000'; $linearray = explode(",",$line); $linemysql = implode("','",$linearray); 

将$ linemysql返回为:

 'TRUE','59','A large number is 10','000' 

我怎样才能做到这一点,与爆炸忽略引号内的逗号?

由于您使用的是逗号分隔值,因此可以使用str_getcsv

 str_getcsv($line, ",", "'"); 

将返回:

 Array ( [0] => TRUE [1] => 59 [2] => A large number is 10,000 ) 

看来你不想用逗号分割你的string,而是通过引用+逗号+引号的inheritance?

如果是这样, preg_split函数可能会有所帮助,在这里。

例如,使用这部分代码:

 $line = "'TRUE','59','A large number is 10,000'"; $parts = preg_split("/','/", $line); var_dump($parts); 

我得到以下输出:

 array 0 => string ''TRUE' (length=5) 1 => string '59' (length=2) 2 => string 'A large number is 10,000'' (length=25) 

从那开始,现在就是在调用preg_split之前删除$linestring的第一个和最后一个引号,因为这些是分隔符,并且不匹配拆分模式。

您可以用逗号分隔,然后用正数lookahead与preg_split()紧接在一起。 这将在输出数组中保留您的单引号。

代码:( 演示 )

 $line = "'TRUE','59','A large number is 10,000'"; var_export(preg_split("/,(?=')/",$line)); 

输出:

 array ( 0 => '\'TRUE\'', 1 => '\'59\'', 2 => '\'A large number is 10,000\'', ) 

* fyi,结果数组中的斜线只是var_export()完成转义的结果。

print_r()显示了这个(因为它没有单引号包装它的值):

 Array ( [0] => 'TRUE' [1] => '59' [2] => 'A large number is 10,000' )