[php] trouver le ième caractère ds un string
Résolu/Fermé
28_seb
Messages postés
84
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
31 mai 2010
-
22 juin 2007 à 11:07
Vidda - 1 avril 2012 à 04:25
Vidda - 1 avril 2012 à 04:25
A voir également:
- [php] trouver le ième caractère ds un string
- Caractère ascii - Guide
- Trouver adresse mac - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
7 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
22 juin 2007 à 17:16
22 juin 2007 à 17:16
Je n'ai pas trouvé de fonction qui le face déjà, donc j'en ai fait une vite fait, mais je n'ai pas débuggué donc à toi de corriger si bug :)
Le but comme tu l'as demandé est de trouvé l'index dans une chaine de caractère d'un Nieme occurence. Si rien n'est trouvé, la fonction retourne -1.
function searchPos ( $source, $occurence, $number ){ $found = FALSE; $curs = 0; do{ // --- try to retrieve index of char to found : (FALSE if not found) $currentPos = strpos($source,$occurence); // --- test return value && current counter if ( $currentPos != FALSE ){ // --- Increase counter $curs++; // --- Test if current counter equals to number of the occurent to retrieve if ( $curs == $number ) $found = TRUE; } }while ( $found != FALSE && $currentPos != FALSE ); // --- Loop on source string to retrieve the occurence // --- Test if occurence had been found and return position if OK if ( $found == TRUE ) return $currentPos; else // --- Return default not found value '-1' return -1; }
Le but comme tu l'as demandé est de trouvé l'index dans une chaine de caractère d'un Nieme occurence. Si rien n'est trouvé, la fonction retourne -1.
naruto-94
Messages postés
865
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
20 décembre 2012
188
24 juin 2007 à 05:33
24 juin 2007 à 05:33
salut ,
Tu l'as fait si vite que tu as mis les commentaires et les variables en anglais :P .
Tu l'as fait si vite que tu as mis les commentaires et les variables en anglais :P .
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 août 2008 à 09:44
28 août 2008 à 09:44
Je vois pas le rapport entre la rapidité et le fait que ce soit en anglais. Tu saura que la langue commune est l'anglais ;) donc il est préférable de faire en anglais.
function pos_car($chaine,$caractere,$num_occurence){ $pos = -1; for ($i=1;$i<=$num_occurrence;$i++){ $pos = strpos($chaine, $caractere, $pos+1); } return $pos; }
28_seb
Messages postés
84
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
31 mai 2010
11
25 juin 2007 à 15:55
25 juin 2007 à 15:55
Merci beaucoup, je ne suis plus bloqué
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
compliqué j aurais eu tendance a faire un split suivi d un length
Xil
Messages postés
350
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
257
19 févr. 2008 à 11:00
19 févr. 2008 à 11:00
Fonction explode() pour PHP :)
Le sujet est vieux mais bon... je vais quand même apporter ma graine :
Ton problème est assez mal formulé... tu veux la position correspondant à un caractère donné, ou tu veux le caractère correspondant à une position ?
Selon le cas, sers toi des fonctions suivantes :
strpos()
substr()
Je te laisse aller regarder le manuel PHP (qui n'a pas été écrit pour rien)
Ton problème est assez mal formulé... tu veux la position correspondant à un caractère donné, ou tu veux le caractère correspondant à une position ?
Selon le cas, sers toi des fonctions suivantes :
strpos()
substr()
Je te laisse aller regarder le manuel PHP (qui n'a pas été écrit pour rien)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 août 2008 à 10:12
28 août 2008 à 10:12
Ni l'un ni l'autre.
Il voulait connaitre la position de la nième occurrence dans une chaine de caractère.
Par contre je suis étonne que personne n'ai posté : "mais c'est du grand n'importe quoi ton code !!"
Effectivement je suis effaré de voir que j'ai pu poster un code aussi mauvais et qui ne fonctionne de toute manière pas.
Voilà la mise à jour qui fonctionne :
Sinon, pour l'utilisation de 'split' et 'length', ça simplifie pas forcément car tu dois prendre en compte les cas où ta chaine de caractère commence par l'occurrence recherchée. Ta formule de calcul de la lenght est donc légèrement plus complexe que l'on peut le penser au premier abord.
Il voulait connaitre la position de la nième occurrence dans une chaine de caractère.
Par contre je suis étonne que personne n'ai posté : "mais c'est du grand n'importe quoi ton code !!"
Effectivement je suis effaré de voir que j'ai pu poster un code aussi mauvais et qui ne fonctionne de toute manière pas.
Voilà la mise à jour qui fonctionne :
function searchPos ( $source, $occurence, $number ){ $found = FALSE; $curs = 0; $tmpSource = $source; $finalPosition = 0; do{ // --- try to retrieve index of char to found : (FALSE if not found) $currentPos = strpos($tmpSource,$occurence); // --- test return value && current counter if ( $currentPos !== FALSE ){ // --- Increase counter $curs++; // --- Increase position counter $finalPosition += $currentPos; // --- Test if current counter equals to number of the occurent to retrieve if ( $curs == $number ) $found = TRUE; else { $tmpSource = substr($tmpSource,$currentPos+sizeof($occurence)); } } }while ( $found == FALSE && $currentPos !== FALSE ); // --- Loop on source string to retrieve the occurence // --- Test if occurence had been found and return position if OK if ( $found == TRUE ) return $finalPosition; else // --- Return default not found value '-1' return -1; }
Sinon, pour l'utilisation de 'split' et 'length', ça simplifie pas forcément car tu dois prendre en compte les cas où ta chaine de caractère commence par l'occurrence recherchée. Ta formule de calcul de la lenght est donc légèrement plus complexe que l'on peut le penser au premier abord.