PHP:如何用逗号分解字符串,但不是逗号在引号内?

时间:2011-02-27 10:00:31

标签: php string explode

我需要在逗号中将我的字符串输入分解为数组。但是,该字符串在引号内包含逗号。

输入:

$line = 'TRUE','59','A large number is 10,000';

$linearray = explode(",",$line);
$linemysql = implode("','",$linearray);

将$ linemysql返回为:

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

我怎样才能完成此操作,爆炸忽略引号内的逗号?

3 个答案:

答案 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'
)