使用PHP explode()函数

时间:2012-10-19 15:46:04

标签: php explode

我有一个问题,我想使用explode函数拆分一个字符串变量但是有一个限制,想象下一个字符串变量带有下一个值:

$data = "3, 18, 'My name is john, i like to play piano'";

使用爆炸功能:爆炸(",",$ data),输出将为:

array(
       [0] => 3,
       [1] => 18,
       [2] => 'My name is john,
       [3] => i like to play piano'
      );

我的目标是用逗号分割变量$ data,排除介于'之间的变量。 ' chatacters。

e.g。 array( [0] => 3, [1] => 18, [2] => 'My name is john, i like to play piano' );

如果有人能告诉我这样做的方法,我将不胜感激。

3 个答案:

答案 0 :(得分:8)

这看起来很像CSV数据。您可以使用str_getcsv来解析此问题。

var_dump(str_getcsv("3, 18, 'My name is john, i like to play piano'", ',', "'"));

应该导致:

array(3) {
  [0] =>
  string(1) "3"
  [1] =>
  string(3) " 18"
  [2] =>
  string(12) "My name is john, i like to play piano"
}

您可能希望使用trimarray_map应用于每个数组元素:

$string = "3, 18, 'My name is john, i like to play piano'";
var_dump(array_map('trim', str_getcsv($string, ',', "'")));

答案 1 :(得分:6)

使用: str_getcsv

// set the delimiter with ',', and set enclosure with single quote
$arr = str_getcsv ($data, ',', "'");

答案 2 :(得分:5)

您可以将str_getcsv()功能用作:

$data = "3, 18, 'My name is john, i like to play piano'";
$pieces = str_getcsv($data, ',', "'");

该函数的第一个参数是要拆分的字符串。

第二个参数是您需要拆分的分隔符。

第三个参数是单个字符,当在第一个参数中用作一对(uninsecaped)时,将被视为一个字段,实际上忽略了该字符串之间的分隔符。