2012-10-19 48 views
2

我有一個問題,我想用爆炸功能拆分一個字符串變量,但有一個限制,可以想象其下一個值的下一個字符串變量:使用PHP的爆炸()函數

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

使用爆炸功能:爆炸(「」,$數據),輸出將是:

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

我的目標是通過逗號排除是‘’chatacters之間的那些分割的變量$數據。

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

如果有人能告訴我一個辦法做到這一點,我會很感激。

+0

如果您的數據總是具有相同的結構:爆炸( 「」,$數據,3);其他str_getcsv() –

回答

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, ',', "'"))); 
5

可以使用str_getcsv()功能:

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

該函數的第一個參數是要拆分的字符串。

第二個參數是您需要拆分的分隔符。

而第三個參數是在第一個參數內部作爲一對(unsescaped)使用時的單個字符將被視爲一個字段,實際上忽略了這一對之間的分隔符。

6

用途:str_getcsv

// set the delimiter with ',', and set enclosure with single quote 
$arr = str_getcsv ($data, ',', "'");