2017-07-03 6 views
0

TSV文字列を分割したい。構造は次のとおりです。preg_split:空のフィールドを含む

abc\tdef\tghi\tjklm 

\ tはタブ文字です。

私は、このような文字列$ I

$field=preg_split("/\t/", $i); 

$フィールドを分割するpreg_splitを使用する場合は、[3] jklmです。

私は別の文字列

abc\tdef\t\t 

$フィールドを持っている場合は、[3]の有効なインデックスではありません。

すべての$フィールド配列のインデックスが同じであるように、空のフィールドを$フィールドに強制するにはどうすればよいですか?ただタブ区切り値データを抽出するためのあなたの問題は、あなたがPHP関数(fgetcsv())で 組み込まれて使用できるかどう

+3

これは正常な動作でなければなりません。あなたの例は、2と3が空の文字列である4つの要素で配列を戻します。 doc http://php.net/manual/de/function.preg-split.phpによれば、PREG_SPLIT_NO_EMPTYというフラグがあります。このフラグは、空の要素を戻したい場合には設定してはいけません。 – user1915746

+1

なぜpreg splitを使用するのですか?これは正規表現の問題ではない '\ t'は静的なので正規表現を使う理由は? – Andreas

答えて

0

。それは私たち自身の機能を使うよりも安定しています。試してみてください

if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    // extract csv using tab delimiter 
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 
     print_r($data); 
    } 
    fclose($handle); 
} 
関連する問題