Aller au contenu

recherche multiple dans une chaine de caracteres et tableau


Lentreprenaute

Sujets conseillés

Bonjour,

J'analyse une variable VARX qui recoit un chaine de caractere et je voudrais déclarer une nouvelle variable si le mot clé est trouvée dans la chaine.

Mon probleme est que je ne sais pas comment ecrire EFFICACEMENT cela.

J'ai plusieurs mots clés qui doivent chacun retourner une variable = valeur différente.

- si toto est trouvé dans la chaine VARX new var= XXXX

- si titi est trouvé dans la chaine VARX new var= YYYY

etc j'ai une quinzaine de cas a gerer.

Merci

Florent

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Je suppose que tu codes en php...

if (strstr($VARX, 'toto')) {
$newvar = 'XXXX';
} else if (strstr($VARX, 'titi')) {
$newvar = 'YYYY';
} else {
$newvar = '';
}

Je ne vois pas trop comment faire plus efficace...

M

Modifié par marcb
Lien vers le commentaire
Partager sur d’autres sites

Je traiterais ça avec un array

<?php
$tab_search = array(
'toto' => 'XXX',
'titit' => 'YYY',
'tata' => 'ZZZ'
);
$new_var = 'default';
foreach($tab_search as $key => $value) {
if(strpos($VARX, $key) !== false)
$new_var = $value;
}
?>

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

C'est vrai, le code captain a l'avantage de regrouper les éléments 'toto' et 'XXXXX' sur la même ligne.

C'est assez lisible. Par contre, pour être efficace, il faudrait peut-être ajouter un break :

<?php
$tab_search = array(
'toto' => 'XXX',
'titit' => 'YYY',
'tata' => 'ZZZ'
);
$new_var = 'default';
foreach($tab_search as $key => $value) {
if(strpos($VARX, $key) !== false) {
$new_var = $value;
break; // <----ici
}
}
?>

Sinon tu fais un peu trop de comparaisons...

M

Lien vers le commentaire
Partager sur d’autres sites

Dans ma méthode, même si une correspondance est trouvee, on continue tout de même de parcourir l'array. Avec ce que Marcb ajoute, des qu'une correspondance est trouvée, on sort de la boucle, ce qui permet de gagner en temps de traitement.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...