2009-12-08 3 views
0

J'ai une zone de texte sur la page. l'utilisateur tape les éléments par des lignes et des virgules.analyse des éléments par ligne et virgule php

par exemple,

data1, data1info 
data2, data2info 
data3, data3info 

il y a deux élément par ligne.

comment puis-je les analyser par ligne et obtenir des éléments par ligne individuellement.

thnx

Répondre

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

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

Utilisation preg_split pour casser les lignes sur le caractère de saut de ligne, puis de nouveau à rompre la ligne dans les 2 parties.

Par exemple:

$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 cela semble bien, mais que se passe-t-il si l'utilisateur n'a pas tapé $ info ou virgule (il a tapé $ data) dans une ligne , $ info sera-t-elle vide? –

0

Vous pouvez utiliser explode pour diviser la chaîne en fin de lignes, d'abord; la ,, exploser ces lignes à nouveau, en utilisant « , » comme séparateur:

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

Remarque J'ai aussi utilisé trim pour supprimer les espaces laissés au début/fin des chaînes.

Et vous obtiendrez:

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

vous utiliseriez explode() diviser par .. puis de nouveau les nouvelles lignes explode() à diviser par des virgules. vous utiliserez probablement array_map(trim,) sur le (s) tableau (s) résultant (s) pour supprimer tous les espaces environnants

Questions connexes