カンマ分割でエスケープを管理する必要があります。これは文字列の例です。
var1,t3st,ax_1,c5\,3,last
この分割が必要です:
var1
t3st
ax_1
c5\,3
last
これに注意してください:「c5 \、3」は分割されません。
私はこれで試しました:
$expl=preg_split('#[^\\],#', $text);
しかし、私は各分割の最後の文字を失います。
この正規表現を使用する
$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 )
後ろを振り返ってみてください:
preg_split('#(?<!\\),#', $text);
3フェーズアプローチを実行します
まず、\を\\のような「一意の」ものに置き換えます
「、」で分割します
と置換する \、
これは正規表現ほど良くはありませんが、機能します;)
これでいい ?
<?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 )