2

カンマ分割でエスケープを管理する必要があります。これは文字列の例です。

var1,t3st,ax_1,c5\,3,last

この分割が必要です:

var1
t3st
ax_1
c5\,3
last

これに注意してください:「c5 \、3」は分割されません。

私はこれで試しました:

$expl=preg_split('#[^\\],#', $text);

しかし、私は各分割の最後の文字を失います。

4

4 に答える 4

2

この正規表現を使用する

$str = 'var1,t3st,ax_1,c5\,3,last';
$expl=preg_split('#(?<!\\\),#', $str);

print_r($expl);  // output Array ( [0] => var1 [1] => t3st [2] => ax_1 [3] => c5\,3 [4] => last )

実例http://codepad.viper-7.com/pWSu3S

于 2013-02-25T11:37:29.277 に答える
1

後ろを振り返ってみてください:

preg_split('#(?<!\\),#', $text);
于 2013-02-25T11:35:32.587 に答える
0

3フェーズアプローチを実行します

まず、\を\\のような「一意の」ものに置き換えます

「、」で分割します

と置換する \、

これは正規表現ほど良くはありませんが、機能します;)

于 2013-02-25T11:36:01.110 に答える
0

これでいい ?

<?php

$text = "var1,t3st,ax_1,c5\,3,last";
$text = str_replace("\,", "#", $text);
$xpode = explode(",", $text);
$new_text = str_replace("#", "\,", $xpode);
print_r($new_text);

?>

出力

Array ( [0] => var1 [1] => t3st [2] => ax_1 [3] => c5\,3 [4] => last ) 
于 2013-02-25T11:39:42.863 に答える