2

問題があります。explode関数を使用して文字列変数を分割したいのですが、制限があります。次の値を持つ次の文字列変数があると想像してください。

$data = "3, 18, 'My name is john, i like to play piano'";

explode関数:explode( "、"、$ data)を使用すると、出力は次のようになります。

array(
       [0] => 3,
       [1] => 18,
       [2] => 'My name is john,
       [3] => i like to play piano'
      );

私の目標は、変数$ dataを、''チャタクターの間にあるものを除いてコンマで分割することです。

例えばarray( [0] => 3, [1] => 18, [2] => 'My name is john, i like to play piano' );

誰かが私にこれを行う方法を教えてくれるなら、私は感謝するでしょう。

4

3 に答える 3

8

これはCSVデータのように見えます。str_getcsvを使用してこれを解析できます。

var_dump(str_getcsv("3, 18, 'My name is john, i like to play piano'", ',', "'"));

結果は次のようになります。

array(3) {
  [0] =>
  string(1) "3"
  [1] =>
  string(3) " 18"
  [2] =>
  string(12) "My name is john, i like to play piano"
}

trim次を使用して、各配列要素にも適用することをお勧めしますarray_map

$string = "3, 18, 'My name is john, i like to play piano'";
var_dump(array_map('trim', str_getcsv($string, ',', "'")));
于 2012-10-19T15:49:20.770 に答える
6

使用:str_getcsv

// set the delimiter with ',', and set enclosure with single quote
$arr = str_getcsv ($data, ',', "'");
于 2012-10-19T15:49:52.710 に答える
5

str_getcsv()関数は次のように使用できます。

$data = "3, 18, 'My name is john, i like to play piano'";
$pieces = str_getcsv($data, ',', "'");

関数の最初の引数は、分割される文字列です。

2番目の引数は、分割する必要のある区切り文字です。

そして、3番目の引数は、最初の引数内でペア(エスケープされていない)として使用される場合、このペア間の区切り文字を事実上無視して、1つのフィールドとして扱われる単一の文字です。

于 2012-10-19T15:49:34.160 に答える