2013-03-03 21 views
0

我仍然在試圖找出一種方法來考慮躲過像"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 

我該如何做這項工作?

+0

不知道這是「欺騙」,但我會先保護分號在引號,然後正常分裂,最後把它們放回去。 – Floris 2013-03-03 01:33:02

+0

@弗洛伊斯你如何找到只有引號的分號? – qwertymk 2013-03-03 01:38:42

+0

''[^ \] \'。*;。* [^ \] \'''應該這樣做嗎? – Floris 2013-03-03 01:46:35

回答

0

爲什麼不使用str_getcsv? var_dump(str_getcsv(「test; 1; 2; '34; 34'; wtvr」,「;」,「'」));以及其他數據。

http://ideone.com/JoFkr7#

+0

這隻適用於所有字符串都是單引號的情況,但我希望能夠使用雙引號。 – qwertymk 2013-03-03 01:50:59

+0

嗯...好吧,但它似乎是你重塑CSV,但有不同的規則。 :) – aquinas 2013-03-03 01:54:00