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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ne garder qu'une partie de valeur correspondante à plusieurs choix

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

par Couin » 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

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

par Couin » 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é