index » ラボ&備忘録 » PHP » 直前に¥が付いていないカンマで区切る正規表現 このエントリーを含むはてなブックマーク

直前に¥が付いていないカンマで区切る正規表現

2006.08.25

直前に\が付いていないカンマで区切る。

$str = preg_split('#(?<!\\\),#', $str);

いろいろ出来る。

ただし「preg_split」は「分割する」事しかやっていないので「\,」はそのまま取得されます。
「\」を削除したい場合は以下のように書くか、取得したあとに必要な部分だけ「\」を取る必要があります。

function splitText($str)
{
    return array_map(
        create_function('$s','return preg_replace("#\\\\\,#",",",$s);'),
        preg_split('#(?<!\\\),#', $str)
        );
}

実行

$str = splitText("aaa,bb,cc\,dd,ee");

結果

Array
(
    [0] => aaa
    [1] => bb
    [2] => cc,dd
    [3] => ee
)

部分的に削除

$str = preg_split('#(?<!\\\),#', $str);
$str[3] = preg_replace('#\\\,#', ",", $str[3]);