Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Recuperer la liste des positions de toutes les occurences d'une sous chaine? (/showthread.php?tid=4052) |
RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Shao - 16-10-2010 Je vais répondre par une autre question : Qu'est-ce que tu veux faire ensuite de ces positions ? (si c'est pas indiscret) Selon ta réponse, on trouvera peut-être d'autres solutions. :p Pour l'instant, à part préfixer, suffixer ou remplacer un mot, je ne vois d'application directe suite à cette recherche (sauf si tu veux vraiment écrire sur ta page "Le nom Argorate se trouve en position 0 et 33"). :/ RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Sephi-Chan - 16-10-2010 Le cas d'utilisation ne serait pas du luxe effectivement. Sephi-Chan RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - php_addict - 16-10-2010 Shao a écrit :Selon ta réponse, on trouvera peut-être d'autres solutions. relisez le "user comments". la solution y est....ho la la la (16-10-2010, 09:27 AM)Sephi-Chan a écrit : Il veut les index de toutes ces occurrences, pas leur nombre. hou-la-la-la-la vous être tous très fatigués dites-moi vivement les vacances ! (16-10-2010, 10:54 AM)Anthor a écrit : Il suffit de récupérer les offset plutôt que les found. ouf merci Anthor !! c'est galère pour pas grand chose ce topic dites moi :cogne:j'insiste: le lien que j'ai donné est la réponse...peut pas faire mieux bon week-end ! RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Sephi-Chan - 16-10-2010 (16-10-2010, 02:44 PM)php_addict a écrit :Shao a écrit :Selon ta réponse, on trouvera peut-être d'autres solutions. Il n'est jamais inutile de connaître le contexte de la demande d'aide (et si ça devenait obligatoire dans une demande d'aide ?). Tu l'as testé cette fonction avant de la présenter comme solution ? Certe, elle apporte de gros éléments , mais elle n'est pas la solution. D'autant qu'elle ne fonctionne pas.
C'est quoi $pm ? C'est quoi $open_link ? Ils sortent d'où ?
Merci donc d'être un peu plus respectueux et ne pas chercher à fermer la discussion comme tu le fais. Sephi-Chan RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Argorate - 16-10-2010 Bon effectivement, votre fonction me donne (indirectement) la solution:
Merci RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Sephi-Chan - 16-10-2010 Le nom find_str est très mal choisi pour cette fonction. Un nom plus adapté serait find_substring_indexes puisque la fonction trouve les index d'une sous-chaîne. Et voici une implémentation alternative, puisque la condition de la boucle est vraiment alambiquée à cause de l'idiotie de PHP qui considére 0 comme false.
J'utilise la convention de PHP (ça doit bien être la seule de ce langage xD) au niveau du nommage des arguments, à savoir $needle (aiguille) et $haystack (botte de foin). Par contre Argorate, peux-tu nous expliquer l'usage que tu fais de cette fonction ? Sephi-Chan RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Argorate - 16-10-2010 Ca t'avencera pas a grand chose, mais c'est pour calculer l'ecart type des positions de certaines chaines pour mes stats PS: m'en veux pas si je garde mes nom de variable bcp plus clair (pour moi) :p RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Anthor - 16-10-2010 (16-10-2010, 04:48 PM)Sephi-Chan a écrit : [...] puisque la condition de la boucle est vraiment alambiquée à cause de l'idiotie de PHP qui considére 0 comme false. Pas dans l'exemple d'argorate puisqu'il utilises === C'est vraiment histoire de casser du sucre sur PHP... RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - srm - 16-10-2010 Et puis on peut faire mieux quand même :
Et un peu plus joli en PHP 5.3 :
RE: Recuperer la liste des positions de toutes les occurences d'une sous chaine? - Sephi-Chan - 16-10-2010 (16-10-2010, 05:59 PM)Argorate a écrit : Ca t'avencera pas a grand chose, mais c'est pour calculer l'ecart type des positions de certaines chaines pour mes stats Ton nommage est incohérent (l'un des mot est normal ($string), l'autre est le même mot mais abrégé ($str) et n'indique absolument pas le rôle de l'argument. Tu devrais t'inquiéter d'avoir l'habitude de lire du code cochon… (16-10-2010, 06:34 PM)Anthor a écrit :(16-10-2010, 04:48 PM)Sephi-Chan a écrit : [...] puisque la condition de la boucle est vraiment alambiquée à cause de l'idiotie de PHP qui considére 0 comme false. Non, j'ai cassé du sucre sur le dos de PHP en me moquant des conventions ! J'fais pas que ça non plus !! L'autre critique concerne tous les langages dynamiquement typés et qui disposent des booléens. Je trouve idiot d'évaluer 0 (ou une chaîne vide) comme le booléen false. Ça inclut aussi Javascript (que j'aime bien), Python et d'autres. Dans notre cas, c'est cette seule caractristique du langage qui empêche de simplement écrire while(strpos(…)) Et à ce compte, je trouve plus élégant de tester si strpos retourne un entier (is_int ne me venait pas à l'esprit sur le moment). Sephi-Chan |