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
| function machin( $chaine , $data ){
//création du masque de sélection des lignes à traiter
$mask = '`^(' . implode( '|' , $data ) . ')`i';
// on transforme la chaine d'entrée en tableau
$tabOriginal = explode( "\n" , $chaine );
// sélection des lignes intéressantes du tableau
$tab = preg_grep( $mask , $tabOriginal );
$out = array();
foreach( $tab as $ligne ){
// regex permettant de séparer le libellé de la valeur (surement pas optimale, je suis une quiche en regex) fonctionne pour libelle:valeur et libelle(valeur)
preg_match( '`(?P<var>.*)[:|\(]\s*(?P<val>\d+(\.\d+)*)+?\s*\)?`' , $ligne , $t );
$out[ trim( $t['var'] ) ] = $t['val'];
}
return $out;
}
$txt = <<<DATA
La pâte à crèpes
farine : 250
oeufs : 4
lait : 0.50
sel : 1
beurre( 0.050 )
sucre vanillé : 1
rhum : 5
DATA;
// définition des informations recherchées
$tabRecherches = array( 'farine' , 'LAIT' , 'beurre' , 'sucre vanillé' );
$a = machin( $txt , $tabRecherches );
print_r( $a ); |
Partager