Ne garder qu'une partie de valeur correspondante à plusieurs choix

Avatar du membre
Eléphant du PHP | 224 Messages

08 oct. 2016, 00:15

Bonjour,

Encore une question tordue du canard :lol:

Voilà, je voudrais garder qu'une partie de valeur si elle correspond à une valeur parmi plusieurs .

Je m'explique :

J'importe un fichier csv dont les lignes commencent par le nom d'équipement de machine .
La plupart son de forme SB01-IUB01 .
SB est un trieur, il en existe 2 (SB01 et SH01)
IUB01, l'injection (il en existe 14 , soit IUB01 à IUB07 pour le trieur SB01 et IUH01 à IUH03 puis IUH05 à IUH08 pour le SH)

Parfois, on a un équipement de forme SB01-IUB01-M9 (que nous pouvons appeler $champs1). Le -M9 , ne m’intéressant pas, je pourrait me contenter de faire un subtr pour garder que les 10 premiers caractères.

Malheureusement, on a aussi SB01-PBINDC-IUB04 par exemple, auquel cas le subtr ne va plus avec le besoin.

Y a-t-il la possibilité de ne conserver que ce qui m’intéresse comme si on a avait une fonction du genre :

Code : Tout sélectionner

$trieur = negardeque(SB01, SH01, depuis $champs1); $injection = negardeque(IUB01, IUB02, IUB03, IUB04, IUB05, IUB06, IUB07, IUH01, IUH02, IUH03, IUH05, IUH06, IUH07, IUH08, depuis $champs1); $equipement = $trieur."-".$injection;
J'ai totalement aucune idée de comment pourrait s'apeller ce genre de fonction, si elle existe (donc pas évidement de fournir un code que j'aurais pu tester :( ) .

Merciiiii
Le palmé
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Eléphant du PHP | 224 Messages

08 oct. 2016, 01:20

PonG'

J'ai trouvé une bidouille, je ne sais cependant pas si c’est la solution la plus propre, mais elle fonctionne, pour peu qu'il y ait un - autour du nom de l'injection , ce qui je crois est le cas.

Code : Tout sélectionner

$str = $champs1; $pieces = preg_split('~([[:punct:]]|[[:blank:]])~', $str); if (in_array('SB01', $pieces)) $trieur = "SB01"; if (in_array('SH01', $pieces)) $trieur = "SH01"; if (in_array('IUB01', $pieces)) $injection = "IUB01"; if (in_array('IUB02', $pieces)) $injection = "IUB02"; if (in_array('IUB03', $pieces)) $injection = "IUB03"; if (in_array('IUB04', $pieces)) $injection = "IUB04"; if (in_array('IUB05', $pieces)) $injection = "IUB05"; if (in_array('IUB06', $pieces)) $injection = "IUB06"; if (in_array('IUB07', $pieces)) $injection = "IUB07"; if (in_array('IUH01', $pieces)) $injection = "IUH01"; if (in_array('IUH02', $pieces)) $injection = "IUH02"; if (in_array('IUH03', $pieces)) $injection = "IUH03"; if (in_array('IUH05', $pieces)) $injection = "IUH05"; if (in_array('IUH06', $pieces)) $injection = "IUH06"; if (in_array('IUH07', $pieces)) $injection = "IUH07"; if (in_array('IUH08', $pieces)) $injection = "IUH08"; echo $trieur."-".$injection;
Mais si quelqu'un a une solution plus propre, why not comme on dit :D

Merki
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: