rss
JavascriptPlus
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[Parser] : Javascript ou PHP ?

heavymac, le jeudi 16 novembre 2006 à 15:22:43
Bonjour,

Ce message fait suite à mon message sur le choix des balises de mise en forme.

En effet, une fois qu'un type de balises de mise en forme a été choisi, il faut coder un parser pour faire le lien entre ces balises et les balises HTML.

A ce moment, deux solutions me paraissent envisageables :

- le Javascript

Les avantages : très pratique pour permettre de Prévisualiser son texte sans rafraîchir la page : texte à prévisualiser -> parser Javascript -> affichage de l'aperçu. Plus rapide au niveau de l'exécution</gras> étant donné que cela utilise les ressources de l'ordi et non pas celles du serveur.

J'aimerais bien que l'on me confirme ce dernier point car je ne suis pas sûr que le gain de temps soit évident (notamment du fait que le traitement des balises via Javascript est beaucoup plus lourd qu'en PHP)

Les inconvénients : le Javascript ne dispose pas de l'arsenal de fonctions de PHP (notamment celles permettant de vérifier qu'un fichier existe bien) et le codage du parser est plus fastidueux. Il faut utiliser le XMLHttpRequest pour pouvoir accéder aux fonctions PHP. Les données issues d'une base de données doivent être récupérées en Javascript pour être parsées et ensuite affichées (si on se parle d'afficher des messages existants et non plus de prévisualiser un message à envoyer)


- le PHP

Les avantages : permet l'accès à de nombreuses fonctions qui assurent un parsage plus efficace avec des contrôles plus poussés (vérification de l'existence de fichiers, etc). Permet d'afficher directement les données parsées issues d'une base de données (si on se parle d'afficher des messages existants et non plus de prévisualiser un message à envoyer)

Les inconvénients : le parsage doit se faire sur une autre page et cela suppose donc soit de faire une page spécialement pour "Prévisualiser" le texte, soit d'utiliser du XMLHttpRequest (pour ne pas avoir à rafraîchir la page) mais cela implique un traitement fastidueux : texte à prévisualiser -> XHR -> Page PHP avec le parser -> output XML -> retour sur la page -> traitement du fichier XML -> affichage de l'aperçu.


Ma question est donc la suivante : quelle est la méthode que vous trouvez la plus adaptée pour parser un texte contenant des balises de mise en forme, tant pour "Prévisualiser" un message à envoyer que pour traiter des messages existants (récupérés d'une base de données via PHP).

Merci
Répondre à heavymac  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sebsauvage, le jeudi 16 novembre 2006 à 15:40:45
Je dirais: php.

Côté client, tout est bidouillable, je ne prendrais jamais le risque de stocker le code formatté que m'envoie le Javascript.

Certes ça fait un aller-retour, mais je pense que c'est supportable (un bouton "Prévisualiser" fera l'affaire).

Si vraiment on ne veut pas d'aller-retour trop pénible, on peut d'XmlHttpRequest devrait aider, et ça permet de garder le code qui interprète les balises côté serveur.
“Life is short - You need Python” -- Bruce Eckel, membre du comité ANSI C++
Répondre à sebsauvage

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
heavymac, le jeudi 16 novembre 2006 à 16:02:58
Côté client, tout est bidouillable, je ne prendrais jamais le risque de stocker le code formatté que m'envoie le Javascript.
Je suis d'accord avec toi pour le côté "tout est bidouillable côté client" mais si on part du principe que le parser, qu'il soit en Javascript ou en PHP, se sert d'expressions régulières pour convertir les balises du texte en balises HTML, je ne vois pas trop en quoi le Javascript présente tellement plus de risque ?

D'autre part, l'avantage du parser Javascript est qu'il permet une Prévisualisation instantannée... et qu'il reste toujours possible, même si cela fait double emploi, d'envoyer le texte brut et de le retraiter côté serveur via un parser PHP.

En fait, je me demande dans quelle mesure deux parsers ne seraient pas utiles mais je trouve que cela fait double emploi et je me pose surtout la question de la rapidité d'exécution qu'il pourrait y avoir entre les deux parsers.
Répondre à heavymac

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sebsauvage, le jeudi 16 novembre 2006 à 16:54:19
je ne vois pas trop en quoi le Javascript présente tellement plus de risque ?

Accepter du code HTML venant du client pour ensuite l'afficher sur le site, c'est un risque de sécurité (cross-site scripting par exemple).



je me pose surtout la question de la rapidité d'exécution qu'il pourrait y avoir entre les deux parsers

Javascript peut parfois être lourd.
Et surtout le gros du problème, c'est que d'un navigateur à l'autre ça ne se comporte pas pareil.
ça risque d'être galère à développer.
“Life is short - You need Python” -- Bruce Eckel, membre du comité ANSI C++
Répondre à sebsauvage

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
heavymac, le jeudi 16 novembre 2006 à 17:48:56
Accepter du code HTML venant du client pour ensuite l'afficher sur le site, c'est un risque de sécurité (cross-site scripting par exemple).
Mais il ne s'agit pas d'accepter du code HTML venant du client.

Une fois que le membre a tapé son texte, en utilisant ou non les balises de mise en forme (ex. BBcode), toutes les balises HTML sont supprimées, les balises de mises en forme sont converties (parsage) et le texte peut alors prévisualisé ou le formulaire validé.

C'est bien pour ça que je demandais quel pouvait bien être la faiblesse du Javascript par rapport au PHP puisque dans les deux langages on utilise les mêmes expressions régulières pour supprimer les balises HTML et parser le texte (même si en PHP on a des fonctions toutes faites pour ça) avant que celui-ci soit affiché ou traité.

Mais peut-être qu'un point m'a échappé ?


Javascript peut parfois être lourd.
Tu veux donc dire que le Javascript aurait tendance à bouffer plus de ressources que le PHP pour ce type de traitement ? Je pensais justement que le traitement "local" était plus rapide que le traitement "distant" ?


Et surtout le gros du problème, c'est que d'un navigateur à l'autre ça ne se comporte pas pareil.
ça risque d'être galère à développer.

Quant au problème de comptabilité, je suis bien d'accord avec toi... le Javascript est très chiant pour ça... mais je pars du principe que mon parser est compatible avec les principaux navigateurs (au moins IE et Firefox)
Répondre à heavymac

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sebsauvage, le jeudi 16 novembre 2006 à 21:43:44
les balises de mises en forme sont converties

converties en quoi ?
en d'autres balises spéciales ?
en html ?
Qu'est-ce que tu stock côté serveur ?



Tu veux donc dire que le Javascript aurait tendance à bouffer plus de ressources que le PHP pour ce type de traitement ?

Disons que ça peut être lourd. ça dépend de ce que tu fais.

(Exemple: le bout de javascript tout à la fin de cette page est tout simple, mais ça bouffe du CPU. C'est acceptable sur les machines puissantes, mais sur un Pentium 200, c'est lourd).
“Life is short - You need Python” -- Bruce Eckel, membre du comité ANSI C++
Répondre à sebsauvage

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
heavymac, le jeudi 16 novembre 2006 à 22:42:59
les balises de mises en forme sont converties

converties en quoi ?
en d'autres balises spéciales ?
en html ?
Qu'est-ce que tu stock côté serveur ?


Les balises de mise en forme correspondent aux balises BBcode par exemple. Elles sont donc converties en balises HTML (après que les balises HTML aient été toutes supprimées bien sûr)

En mode "Prévisualiser", le texte ainsi traité est simplement affiché.

En mode "Valider" (i.e. validation du formulaire), le texte envoyé côté serveur est le texte contenant les balises BBcode (prend moins de place dans la base)... même si ça serait peut-être mieux d'envoyer le texte avec les balises HTML puisque je l'ai déjà côté client et de l'insérer tel quel dans la base.

Se pose donc la question de savoir quelle est la solution optimale concernant toutes ces questions de parser (Javascript ou PHP) et de stockage (avec balises modifiées ou balises HTML)...
Répondre à heavymac

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sebsauvage, le jeudi 16 novembre 2006 à 23:18:19
En mode "Valider" (i.e. validation du formulaire), le texte envoyé côté serveur est le texte contenant les balises BBcode

ah ok.
alors c'est bon question sécurité.

Quant à la solution optimale, difficile à dire.
“Life is short - You need Python” -- Bruce Eckel, membre du comité ANSI C++
Répondre à sebsauvage

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
oberion, le vendredi 17 novembre 2006 à 10:19:25
Bonjour,
Il existe une troisieme solution. Et celle ci est peut etre meme la plus propre. Fais une feuille de style XSLT, en une demi journée, c'est baclé.
Avantage, les memes que le js, à savoir, c'est coté client que ca s'execute, le serveur n'est pas chargé. C'est moins cramouche que le Js et plus rapide à développer que le PHP.
Perso, c'est comme ca que je ferais.
Cdlt.
Répondre à oberion

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
heavymac, le vendredi 24 novembre 2006 à 14:23:34
La solution d'une feuille de style XSLT me paraît être la meilleure solution pour concilier à la fois un parser et un traitement côté client.

En effet, XSLT permet d'appliquer aux données d'un fichier XML des "motifs" (sorte d'expressions régulières) qui font office de parser.
Répondre à heavymac

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
slooptoo, le vendredi 24 novembre 2006 à 23:49:42
mauvaise comprehension de la chose
la feuille xsl n est pas un parser mais un ensemble de regles de transformations a appliquer a un fichier xml
ensuite c est le parser du navigateur qui est utilise (et il varie suivant les navigateurs bien sur... mais pas de panique seuls les fonctions avancees et les 'points de detail' different reellement)
je suppose que les motifs dont tu parles sont les templates auquel cas la syntaxe des patterns est tout de meme tres eloignee de celle des RegExps

mais tu as la bonne solution en main manifestement
Répondre à slooptoo

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 ben, le lundi 12 novembre 2007 à 14:02:43
Bonjour,
Comment puis-je en local afficher le resultat d'une requete sql dont le scipt php est inséré dans un code html?
si quelq'un peut m'aider...
Répondre à ben
Discussions pertinentes trouvées dans le forum
26/05 11h52Javascript - PHP5
09/11 17h29[Javascript/PHP]2
13/09 13h54[JavaScript+php] problème5
Plus de discussions sur « [Parser] : Javascript ou PHP ? »
Logiciels pertinents trouvés dans les téléchargements
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger Firstpage 2006Firstpage - First Page 2006 est un éditeur html gratuit et excellent. Il permet de travailler un code HTML en couleur, ainsi que de...Catégorie: Editeurs HTML
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [Parser] : Javascript ou PHP ? »