15Fermer17
robinHoodLe 29/03/2011 à 14:25
en fait la seule chose que je doit détecter est '§', qui fait deux octets, le reste, je le manipule pas comme une chaine mais plutôt comme à l'ancienne, de la jolie mémoire, d'où l'utilisation des fonction non multibytes, je ne veut pas savoir que la partie que je remplace fait un char de moins que le nombre d'octet, je m'en tape, et ca n'aura pas d'incidence car j'utilise que des fonction qui tourne à l'octet,

vu que le seul char que je détecte fait deux octets, je décale donc mon "pointeur" de deux octets juste après celui ci, et à la copie pour dégager le premier et second § je remplace 4 octets de plus, ca c'est cool,

mon seul soucis est que je me demande si en fait strpos va bien détecter ce char § ou si en fait il va juste mater son premier octet, et si je risque d'avoir des faux positif m'obligeant a tester également l'offset+1 pour voir si ca correspond avec le second octet de § confus

j'ai pris strpos pour sa vitesse, le mb_strpos sera forcement plus lent et me renverra un offset "reel" pour lui mais pas pour moi, de plus mb_substr_replace n'existe pas, alors tintin pour faire mon remplacement final avec des offset pourris sad

après, si j'ai trop fumé et que je vois des bisounours partout sur le dos de l'éléphant bleu dite le moi de suite happy

concernant les deux écoles, preg vs strpos, justement jusqu'à présent j'utilisais preg_replace_callback, et ici avec le code du dessus je gagne ~20% en vitesse globale du script sur une grosse page, celle ci par exemple, sur une petite c'est beaucoup moins flagrant et négligeable, mais ca ne va jamais moins vite

après, ici je contrôle moi même la ou la recherche débute, alors que le preg_replace lui recommence du début à chaque fois, la grosse page fait 20ko de données, ca aide pas ^^ aussi preg_replace renvois un tableau à la fonction de callback, la méthode strpos non, juste la chaine, ca à un peu simplifié mon code, bref tout ca doit compenser les qq lignes de plus à parser ^^

edit > bon j'ai trouvé cette magnifique page détaillant bien ce qu'il va arriver en utilisant de l'utf8 avec les fonction non multibyte, bref ca à l'air ok