9
votes

Éditeur de marquage WMD - HTML à la conversion de marquage

J'utilise WMD Editeur de marquage sur un projet et avait une question:

Lorsque je pose le formulaire contenant la zone de texte Markdown, elle (comme prévu) publie HTML sur le serveur. Cependant, disons sur la validation du côté serveur, quelque chose échoue et je dois renvoyer l'utilisateur à éditer leur entrée, est-ce qu'il y a de toute façon pour remplir le Textarea avec juste le marquage et non le HTML? Comme je l'ai configuré, le serveur n'a accès qu'aux données de poste (qui se trouve sous la forme de HTML) afin que je ne puisse pas sembler penser à un moyen de le faire. Des idées? De préférence une solution basée sur la non-javascript.

mise à jour: J'ai trouvé un convertisseur HTML à marquage appelé . Je suppose que cela pourrait être la meilleure solution pour l'affichage de la marque à l'utilisateur ... toutes meilleures alternatives sont les bienvenues!

update 2: J'ai trouvé Ceci Post On et je suppose qu'il existe une option pour envoyer les données au serveur comme point à la place au lieu de HTML. Y a-t-il des inconvénients pour simplement stocker les données comme marquedown dans la base de données? Qu'en est-il de l'afficher à l'utilisateur (en dehors d'un éditeur)? Peut-être qu'il serait préférable de poster les deux versions (HTML et Markown) sur le serveur ...

résolu: Je peux simplement utiliser PHP Markdown à Convertissez le marquage en Serveride HTML.


0 commentaires

4 Réponses :


4
votes

Je suggérerais que vous envoyiez simplement et stockeriez le texte comme point à l'autre. Cela semble être ce que vous avez déjà réglé. Imo, stockage du texte sous forme de marquage sera meilleur, car vous pouvez supprimer en toute sécurité toutes les étiquettes HTML sans vous soucier de la perte de mise en forme - cela rend votre code plus sûr, car il sera plus difficile d'utiliser une attaque XSS (bien que cela puisse toujours être possible. - Je dis seulement que cette partie sera saf er ).


5 commentaires

Netraperiez-vous pas que toutes les balises HTML provoquent un problème si le texte contenait un exemple HTML?


Peut-être, mais il suffit de vous assurer que vous ne supprimez aucune étiquette de l'intérieur d'un bloc de code.


Il suffit de le coder HTML. Je ne pense pas que aucun des caractères de marque est réservé à HTML.


@Mattdotson: BlockQuotes (> Certains texte ) sont un conflit et des URL de liaison peuvent être entourés également par des crochets d'angle ( ). Séparer la désinfectation d'entrée de la manutention du markdown est probablement plus sûr / saner.


Il convient également de noter que conformément à La documentation officielle , le contenu du bloc de code sera automatiquement html- codé par des analyseurs conformes.



2
votes

Une chose à considérer est que le WMD semble avoir certains cas de bord différent de certaines implémentations de marquage côté serveur. J'ai définitivement vu des bizarreries dans les aperçus ici qui ont montré différemment après la soumission (je crois que l'une de ces cas tentaient d'échapper à une backteck entourée de backtsticks). En envoyant l'aperçu converti sur le fil, vous pouvez vous assurer que l'aperçu est précis.

Je ne dis pas que cela devrait prendre votre décision, mais c'est quelque chose à considérer.


0 commentaires

0
votes

Essayez Pandoc. C'est un peu plus complet et fiable que Markdowntify.


0 commentaires

0
votes

Le HTML que vous voyez est juste un aperçu. Ce n'est donc pas une bonne idée de stocker cela dans la base de données car vous rencontrerez des problèmes lorsque vous essayez de modifier. Ce n'est pas non plus une bonne idée de stocker les deux versions (marquage et html) car le HTML n'est qu'une interprétation et vous aurez les mêmes problèmes d'édition et de conserver les deux versions de synchronisation.

La meilleure idée est de stocker le markdown. dans la base de données, puis convertissez le côté serveur informatique avant d'afficher.

Vous pouvez utiliser PHP Markdown à cette fin. Cependant, il ne s'agit pas de conversion parfaite à 100% de ce que vous voyez du côté JavaScript et peut avoir besoin de quelque peau de peau.

la version que le pile Network Exchange utilise est une implémentation C # et il devrait y avoir une implémentation de Python que vous avez téléchargée avec la version de WMD que vous avez.

La seule chose que j'ai modifiée était la façon dont de nouvelles lignes ont été rendues alors je Changement de cela dans markdown.php pour convertir quelques nouvelles lignes en à partir de la ligne 626 de la version J'ai: xxx


0 commentaires