1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
$file = "test.txt";
$passengers = array();
function create_passenger($id,$firstname,$lastname,$type,$naissance='',$option='') {
global $passengers;
$key = count($passengers)+1;
$passengers[$key] = array(
"numero" => $id,
"nom" => $firstname,
"prenom" => $lastname,
"type" => $type
);
if(!empty($naissance)) $passengers[$key]["naissance"]=$naissance;
if(!empty($option)) $passengers[$key]["option"]=$option;
}
if(file_exists($file)) {
$pattern = '#(\d)\.(\w+)/([\w\s]+)(.*)?#';
$pattern_children = '#(\w+)/*(\w+)*/*(\w+)*#';
$handle = fopen($file,"r");
while(!feof($handle)) {
$texte = fgets($handle);
if(preg_match($pattern, $texte, $matches)) {
$id= $matches[1];
$firstname= $matches[2];
$lastname= trim($matches[3]);
$naissance= "";
// cas des enfants
if(preg_match($pattern_children, $matches[4], $matches_children)) {
// si bebe attache a un parent
if($matches_children[1] == "INF") {
create_passenger($id, $firstname, $lastname, "adulte", $naissance, "parent de ".$firstname." ".$matches_children[2]);
if(isset($matches_children[3])) $naissance = $matches_children[3];
create_passenger($id, $firstname, $matches_children[2], "enfant", $naissance, "enfant de ".$firstname." ".$lastname);
// si enfant
}else {
if(isset($matches_children[2])) $naissance = $matches_children[2];
create_passenger($id, $firstname, $lastname, "enfant", $naissance);
}
// cas des adultes
}else {
create_passenger($id, $firstname, $lastname, "adulte");
}
}
}
fclose($handle);
echo "<h5>Résultats : </h5><pre>".print_r($passengers, true)."</pre></hr>";
} |
Partager