0

我正在使用explode 将一串逗号分隔值解析为变量。那里没问题。我遇到的问题是其中一个值是格式中的日期:2013 年 5 月 3 日。所以爆炸是在日期中的逗号上出现的。我有什么办法可以解决这个问题吗?我对源(原始字符串)没有太多控制权,所以我试图想出一种方法来处理我所拥有的东西。

$CONTENT = 'blue,red,purple,May 2, 2013,orange,green';
list($valueA, $valueB, $valueC, $valueD, $valueE, $valueF) = explode(',', $CONTENT);

谢谢!

4

3 回答 3

1

您可以使用正则表达式来拆分您的字符串。这是基于这样的假设,即如果将两个单词用作分隔符,则两个单词之间没有空格。

$CONTENT = 'blue,red,purple,May 2, 2013,orange,green';
$result = preg_split('/,(?! )/', $CONTENT);

您的字符串将正确导致

array(6) {
   [0]=>
      string(4) "blue"
   [1]=>
      string(3) "red"
   [2]=>
      string(6) "purple"
   [3]=>
      string(11) "May 2, 2013"
   [4]=>
      string(6) "orange"
   [5]=>
     string(5) "green"
}

所以一旦你再次使用你的列表表达式,你的变量应该设置正确

list($valueA, $valueB, $valueC, $valueD, $valueE, $valueF) = preg_split('/,(?! )/', $CONTENT);
于 2013-05-02T15:23:27.343 回答
0

通过在数组中查找值并将逗号替换为特殊符号来转义逗号,然后在爆炸后用逗号替换特殊符号。

于 2013-05-02T13:52:31.757 回答
0

我唯一能想到的就是使用正则表达式来查找与日期模式匹配的内容,将逗号替换为其他内容,然后在分解字符串后,再次用逗号替换该特殊字符。

这很混乱,但如果你真的无法控制传入的字符串,那么你可能无能为力。

于 2013-05-02T13:56:57.413 回答