这是一个示例代码
$a=array('a,b','cd');
$b=implode(',',$a);
$c=explode(',',$b);
print_r($c);
因为我有','$ [0] print_r($c);
结果
Array ( [0] => a [1] => b [2] => cd
)
是否有任何选项可以在字符串中爆炸忽略','并且我有
Array ( [0] => a,b [3] => b [2] => cd )
或只有解决方案是选择更好的分隔符,例如“* ? - ”
答案 0 :(得分:6)
一旦你用一个已经存在于任何元素中的角色内爆数组,就没有简单的方法来检测它。所以我建议您更改分隔符,否则您最终会将字符串与原始数组进行比较,这将变得一团糟。
答案 1 :(得分:3)
函数implode()
和explode()
完全独立。他们没有彼此的“记忆”或“知识”,也没有彼此所做的事情。
因此,explode()
不知道implode()
使用了将要使用的字符。事实上,对于某些可能是有效用例的人而言,他们希望将所有逗号分开。
使用任何类型的元或转义字符时,这是一个非常标准的问题。当你看到那个角色并且应该在那里时,你会怎么做?你逃脱逃脱角色。带有转义字符的字符串示例:
"\tHello,\nI need something to do\\think about.\n"
这不仅仅是通过简单的爆炸/内爆来完成的。这是通过解析器修复的。
最简单的方法是让分隔符完全独特。它不必是一个字符。或者你可以做更高度复杂的解析。
$separator = 'abcd1234(*&@#@%asdf___jasldfkj'; // something very unlikely to actually exist
$a=array('a,b', 'cd');
$b=implode($separator, $a);
$c=explode($separator, $b);
print_r($c);
结果:
Array
(
[0] => a,b
[1] => cd
)
答案 2 :(得分:2)
您应该选择一个或多个字符,您知道这些字符不会出现在您将要爆炸/爆炸的文本中。如果你有一堆包含逗号的文本,那么你用逗号将它们全部内部崩溃,你将会非常困难地试图将它们全部用逗号进行爆炸。事实上,如果没有原始数据,这可能是不可能的。