2009-12-08 50 views
0

我在頁面上有一個textarea。用戶將按行和逗號鍵入項目。按行和逗號分析項目php

例如,

data1, data1info 
data2, data2info 
data3, data3info 

有每行2項。

我該如何解析它們每行,並獲得單獨的項目每行。

日Thnx

回答

0
$x='data1, data1info 
data2, data2info 
data3, data3info'; 

foreach(explode("\n",$x) as $line){ 
    $item=explode(",",$line); 
    //echo $item[0].$item[1]; 
} 
0

使用使preg_split上破換行字符的線條,然後再次打破行成2個部分。

例如:

$lines = preg_split("[\r\n]", $_POST[ 'TextArea' ]); 
foreach($lines as $line) 
{ 
    list($data, $info) = preg_split(",\s+", $line, 2); 
    // Use $data and $info... 
} 
+0

thx它似乎很好,但如果用戶沒有輸入$ info或逗號(他只輸入$ data) ,$ info是空的嗎? – 2009-12-08 06:45:13

0

可以使用explode由線的端部到分割字符串,第一;該,,再次爆炸的那些行,用「,」作爲分隔符:

$str = <<<STR 
data1, data1info 
data2, data2info 
data3, data3info 
STR; 

$lines = explode(PHP_EOL, $str); 
foreach ($lines as $line) { 
    list ($first, $second) = explode(',', $line); 
    $first = trim($first); 
    $second = trim($second); 
    var_dump($first, $second); 
} 

注意我也用trim在字符串的開始/結束刪除任何左右空間。

,你會得到:

string 'data1' (length=5) 
string 'data1info' (length=9) 
string 'data2' (length=5) 
string 'data2info' (length=9) 
string 'data3' (length=5) 
string 'data3info' (length=9) 
0

你會使用explode()通過換行再次拆分..然後explode()用逗號分割。那麼你可能會使用array_map(trim)在結果數組上刪除任何周圍的空白