从字符串创建二维数组,但忽略特定字符

时间:2015-10-30 09:00:25

标签: php arrays string explode

这是我的字符串,我希望它转换为2D数组。

mail@mail.com;"Hi ;John";man;405089;

mail@mail.net;Hi Sarah;woman;405089;

我想从中创建数组。我编写了这段代码:

$ret = array_map (
  function ($_) {return explode (',', $_);},
  explode (';', $data)
);

因此,而不是','将是';'而不是';'会是'\ n',对吧?

但它还没有正常工作。如果再看一遍,就会有“嗨; John”..

我想让这段代码忽略“”中的所有内容,因为有一个分号。

2 个答案:

答案 0 :(得分:4)

不要爆炸,而是看看str_getcsv

如果您指定分隔符,这将使用引号内的分号处理您的情况,如此。

str_getcsv($_, ';')

答案 1 :(得分:4)

首先删除“之间的字符”,然后运行您的函数。以下是从您的字符串中删除"Hi ; John"的一行代码:

$result = preg_replace('/\".*?\"/', '', $subject);
  • \"字面匹配字符"
  • .*?匹配任何字符(换行符除外),量词:*?在零和无限次之间,尽可能少,根据需要展开[懒惰]
  • \"字面匹配字符"