我需要在逗号中将我的字符串输入分解为数组。但是,该字符串在引号内包含逗号。
输入:
$line = 'TRUE','59','A large number is 10,000';
$linearray = explode(",",$line);
$linemysql = implode("','",$linearray);
将$ linemysql返回为:
'TRUE','59','A large number is 10','000'
我怎样才能完成此操作,爆炸忽略引号内的逗号?
答案 0 :(得分:53)
由于您使用逗号分隔值,因此可以使用str_getcsv
。
str_getcsv($line, ",", "'");
将返回:
Array
(
[0] => TRUE
[1] => 59
[2] => A large number is 10,000
)
答案 1 :(得分:5)
看来你不想用逗号分隔你的字符串,而是用引号+逗号+引号连续分开?
如果是这样,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)
从此开始,现在需要在调用$line
之前删除preg_split
字符串的第一个和最后一个引号,因为它们是分隔符,并且与分割模式不匹配。
答案 2 :(得分:0)
您可以使用正向前瞻功能使用preg_split()
后跟单引号的逗号进行爆炸。这将保留输出数组中的单引号。
代码:(Demo)
$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'
)