【发布时间】:2013-02-17 08:30:59
【问题描述】:
我仍在尝试找出一种方法来考虑转义引号,例如 "test\";nosplit" 或 'test\';nosplit'
到目前为止,我有这样的事情:
preg_split('#(^;)|(;$)|(?<!["\'\\]);#', $str_to_split);
但它甚至无法处理以下简单的事情:test; 1; 2; '34;34'; wtvr
我希望它在这些上分开:
v v v v
test; 1; 2; '34;34'; wtvr
v v v v
test; 1;2; '34\'34;34'; wtvr
v v v v
test; 1;2; "34\"34;34"; wtvr
v v v v
test; 1;2; '34\"34;34'; wtvr
v v v v
test; 1;2; "34\'34;34"; wtvr
v v v v
test; 1;2; "3 4 \' 3 4 ; 3 4"; wtvr
我怎样才能做到这一点?
【问题讨论】:
-
不确定这是否是“作弊”,但我会先保护引号中的分号,然后正常拆分,最后再放回去。
-
@Floris 您如何找到仅在引号中的分号?
-
'[^\]\'.*;.*[^\]\''应该这样做吗? -
@Floris 你忘了
test; 1;2; '34\\'34;34'; wtvr和test; 1;2; '34\\\'34;34'; wtvr -
是的,我确实忘记了那个案子......
标签: php regex preg-match-all preg-split