Bonjour,
Comment dans la fonction "strpos" déterminer plusieurs type de délimiteur ?
espace, point, tiré...
Merci d'avance
Bonjour,
Comment dans la fonction "strpos" déterminer plusieurs type de délimiteur ?
espace, point, tiré...
Merci d'avance
On ne peut pas, cf la doc.
Donc soit tu appeles plusieurs fois strpos avec des parametres differents, soit tu te fait une fonction perso (ca se fait en 5 mn, tu passes la chaine à tester et un tableau avec la liste des lettres a tester, tu boucles sur chaque lettres de la chaine et aussitot que la lettre correspond a une entrée du tableau, tu retournes ton compteur courrant, sinon -1, et voila, le tour est joué).
J'imagine qu'il est possible de s'en sortir avec des expressions régulière, mais pour le coup, je maitrise moins.
Allez, j'suis de bonne humeur ;-)
Attention, code non testé.
Avec $tab défini comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /** * Cette fonction retourne la premiere position d'un des elements passe dans le tableau * @param string $chaine : La chaine a tester * @param array $tab : Un tableau ayant pour clefs la liste des valeurs a tester * @return int : La position du premier élément trouvé, -1 sinon. */ function strpos_multi($chaine, $tab) { $len = strlen($chaine); for ($i = 0; $i < $len; $i++) { if (isset($tab[$chaine[$i]]) return ($i); } return (-1); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $tab = array(); $tab[' '] = 1; $tab['.'] = 1; $tab['-'] = 1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php $pos = false; //la position du premier caractère espace, point, tiret $needle = " .-"; // les caractères à rechercher (espace, point, tiret) $quoted_needle = preg_quote($needle); //on le quote pour le passer à preg_quote if (preg_match("/^([^$quoted_needle]*)[$quoted_needle]/", $chaine, $match)) { $pos = strlen($match[1]); } ?>
J'ai fais autrement,
Merci a vous tous !![]()
Partager