我正在使用explode将一串逗号分隔值解析为变量。没问题。我遇到的问题是,其中一个值是格式的日期:2013年5月3日。因此爆炸在日期中以逗号为准。我有什么选择可以解决这个问题吗?我对源(原始字符串)没有多少控制权,所以我想找到一种方法来处理我所拥有的。
$CONTENT = 'blue,red,purple,May 2, 2013,orange,green';
list($valueA, $valueB, $valueC, $valueD, $valueE, $valueF) = explode(',', $CONTENT);
谢谢!
答案 0 :(得分: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);
答案 1 :(得分:0)
通过查找数组中的值并使用特殊符号替换逗号来转义逗号,然后在爆炸后用逗号替换特殊符号。
答案 2 :(得分:0)
我唯一能想到的是使用正则表达式查找与日期模式匹配的内容,用其他内容替换逗号,然后在分解字符串后,再次使用逗号替换该特殊字符。
它很乱,但是如果你真的无法控制进入的字符串,你可能做的事情可能不多。