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

このエントリーをはてなブックマークに追加

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

$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]);

Edited on 2016.12.16 Created on 2012.07.16 正規表現PHP
PAGE TO TOP