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
之前删除$line
string的第一个和最后一个引号,因为这些是分隔符,并且不匹配拆分模式。
您可以用逗号分隔,然后用正数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' )