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

Create two dimensional array from string, but ignore a specific character

这是我的字符串,我希望将其转换为二维数组。

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

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

我想以此创建数组。我找到了这段代码:

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

因此,不是“,”而是“;”而不是';'应该是'\n',对吧?

但它还不能正常工作。再看一遍,有"Hi ; John"..

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

与其爆炸,不如看看 str_getcsv

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

str_getcsv($_, ';')

首先删除“之间的字符(包括”),然后 运行 您的函数。这是从您的字符串中删除 "Hi ; John" 的单行代码:

$result = preg_replace('/\".*?\"/', '', $subject);
  • \" 按字面意思匹配字符 "
  • .*? 匹配任意字符(换行符除外),量词:*? 零次和无限次之间,次数越少越好,按需扩展[懒惰]
  • \" 按字面意思匹配字符 "