CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Inserer des smileys dans un formulaire

uniron
uniron
Niveau 5
25 juin 2007 à 10:50:16

:salut:

J´ai créé un formulaire qui permet de rajouter un article dans un blog.
Mais je voudrais que, lorsque par exemple on tape ":D", un smiley souriant apparait à la place de ce ":D" lorsque l´article est publié sur le blog.

Seulement, je n´ai aucune idée de la facon dont il faut s´y prendre.

:bye:

godrik
godrik
Niveau 30
25 juin 2007 à 12:08:54

il faut parser le texte a la recherche de "motclé" et les remplacer ensuite. En php, la fonction str-replace (
http://fr2.php.net/manualal/en/function.str-replace.php )
devrait te permettre de faire ca. Ce n´est en outre pas la facon la plus elegante de le faiare, mais bon...

uniron
uniron
Niveau 5
25 juin 2007 à 13:09:49

Merci ! j´ai fait une recherche sur cette fonction et j´ai trouvé mon bonheur :-d

deepblue
deepblue
Niveau 16
25 juin 2007 à 19:38:42

godrik > str_replace est la fonction de remplacement la moins bouffeuse de ressources que php possede.

godrik
godrik
Niveau 30
25 juin 2007 à 20:33:30

oui mais il est possible de faire ca bien mieux.
Si tu as 50 smileys, il faudra faire 50 passes. Alors qu´en principe une seule passe suffit.

deepblue
deepblue
Niveau 16
26 juin 2007 à 14:17:53

2 arrays (un pout les smileys, un pour le le code html) et un seul str_replace avec en parametre les 2 arrays et la chaine.

C´est la plus simple, la plus rapide et la meilleur (en ce qui conerne les smileys).

godrik
godrik
Niveau 30
26 juin 2007 à 14:23:13

oh, j´avais pas vu que ca pouvait prendre des tableaux en parametre. mea culpa

deepblue
deepblue
Niveau 16
26 juin 2007 à 14:30:58

c´est pas grave :p)

dnob700
dnob700
Niveau 10
26 juin 2007 à 15:38:31

je voudrais pas vous décevoir, mais après un rapide coup d´œil aux sources de PHP, appeler str_replace avec un tableau de chaine à remplacer, c´est comme l´appeler une fois avec chacune des chaines. Le résultat est exactement le mêle (en tout cas, à ce que j´ai compris, car les sources ne sont pas limpide). (Cf fonction php_str_replace_in_subject dans ./ext/standard/string.c dans les sources de PHP).

Dans tout les cas, même si la chaine était parcourue de bout en bout une seule fois, mais chaque caractère lu plusieurs fois (une pour chaque chaine à remplacer, pour voir si ça colle), et que l´on a une chaine de longueur n, avec m chaines à rechercher pour faire des remplacement (et de longueur bornée et petite), alors en parcourant m fois la grande chaines, ou une fois, mais en comparant chaque caractère, on a la même complexité en O(m*n).

Pour faire mieux, il faut construire un automate qui parcourt la chaine, à la recherche des sous chaine. Lui, il peut se contenter de lire une seule fois chaque caractère de la chaine d´entrée. Mais je ne crois pas que PHP fasse cela ...

bon, c´était la minute enculage de mouche. Mais puisque j´ai perdu du temps à regarder comment fonctionne PHP, je me suis dit que j´allais vous en faire profiter.

godrik
godrik
Niveau 30
26 juin 2007 à 15:43:29

merci dnob, je pensais en effet qu´il construisait un automate a partir des chaines passé en paramètre. Ils sont fous les gens qui font les APIs des fois...

deepblue
deepblue
Niveau 16
26 juin 2007 à 16:47:23

L´interet une nul. Aucune différence de vitesse apparante et le server ne s´en pas beaucoup dans la tete.
Tant qu´a redevelopper un script, autant utiliser ce qu´il existe deja.

godrik
godrik
Niveau 30
26 juin 2007 à 16:58:19

Aucun interet, je ne dirai pas comme toi, si tu as une liste de 800 choses a remplacer, ca risque de faire bien mal quand meme... Encore plus si le serveur est chargé.

Mais bon, de toute facon, si on faisait du php pour limiter la charge de la machine, ca se saurait...

deepblue
deepblue
Niveau 16
26 juin 2007 à 18:21:27

Nb messages : 601 ; Nb de str_replace par message : 280 ; Moyenne de temps par parsage : 0.012236705833981 ; tps total (secondes) : 7.3542602062225

http://beta.series-sources.com/test.php

J´estime que php se defend (les messages proviennt d´une bd)

deepblue
deepblue
Niveau 16
26 juin 2007 à 18:22:29

168280 (601*280) est le nombre total de str_replace utilisés.

deepblue
deepblue
Niveau 16
26 juin 2007 à 18:35:22

(j´ai volentairent bouclé des str_replace)

godrik
godrik
Niveau 30
26 juin 2007 à 18:38:02

tu te rends bien compte qu´un algorithme inteligent diviserait cela par bien plus que 280 ?

Deja, tu pourrais ne parser la chaine qu´une seul fois pour pour toutes les occurences. Deplus, tu pourrais générer la chaine qu´une seule fois au lieu d´autant de fois que la chaine est trouvé. Sachant que les access mémoire en PHP ne sont pas réputé pour être rapide.

Après, il faut relativiser, sur le nombre d´utilisateur que l´on a simultanément...

deepblue
deepblue
Niveau 16
26 juin 2007 à 18:48:42

OK mais en sahant que j´ai fais le le bourrin et que le cas produit pas mon script ne pourra jamais etre fais (car faudrait etre tres tres stupide), le temps d´executios sera donc faible.

Personnellement, je ne vois pas l´interet (peut etre ganger qq 100eme de secondes) de faire ça...sachant que la question de depart, c´est remplacer des smileys.

godrik
godrik
Niveau 30
26 juin 2007 à 19:16:21

c´est vrai tiens. pourquoi ce faire chier a améliorer la performance des machines...
C´est une optimisation a la con, que l´on apprend a tous les étudiants depuis 20 ans, mais elle n´est pas implanté dans PHP. Si quelquechoses d´aussi basique n´est pas implanté, je trouve que ca craint.

Tu sais qu´il y a des hebergeurs qui augmentent leur nombre de serveur web pour pouvoir suporter la charge et baisser le temps de réponse.

Deplus, je ne parles pas de 100eme de secondes, mais de secondes pleine.
En reprenant ton estimation. 280 smiley sur un forum ne parait un nombre excessif.
En supposant que str_replace est bien ecrit et ne coute rien si le smiley n´est pas présent. En suposant une moyenne de 2 smileys differents par post. On devrait pouvoir diviser par 2 le temps de calcul et donc passer de tes 7.35 secondes a 3.67. Sachant que tu t´es basé sur 600 message et que ce n´est franchement pas beaucoup pour disons le forum de jv.com

On ne parle pas de cacahuette la. Mais d´une vrai ressource critique: le temps CPU...

godrik
godrik
Niveau 30
26 juin 2007 à 21:14:31

apres lecture de la doc officiel (
http://fr.php.net/manual/al/en/function.str-replace.php ), c´est un peu plus compliqué que ca.
En effet, il est spécifié que les rechercher/remplacer sont fait DANS L´ORDRE. On peut donc remplacer a l´etape i+1, ce qui a été remplacé a l´étape i.
Du coup l´automate devient plus difficile a écrire (a chaud d´ailleurs je n´ai pas d´idée).

Il manque probablement une fonction dans cette API pour faire des rechercher/remplacer indépendant.

dnob700
dnob700
Niveau 10
26 juin 2007 à 21:41:05

Avec un automate à pile ça peut s´écrire : à chaque fois qu´on termine un remplacement, on retourne au début du mot qui a été remplacé dans l´état où on était à ce moment là.

Le problème, c´est que pour que ce soit efficace, il faut une très bonne gestion des chaines.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment