KİS markdown editörü - HTML dönüştürme Markdown için

4 Cevap php

Ben bir proje üzerinde wmd markdown editörü kullanarak ve bir soru vardı am:

Ben markdown metin alanını içeren form göndermek zaman, (beklendiği gibi) mesajlar sunucuya html. Ancak, sunucu tarafında doğrulama üzerine bir şey başarısız olur ve ben onların girişini düzenlemek için kullanıcı geri göndermek için gereken, sadece markdown değil html ile textarea dolum için zaten var olduğunu söylüyorlar? Ben sahip olarak kurmak, sunucu yalnızca sonrası veri erişimi vardır (html biçiminde olan) bu yüzden bunu yapmak için bir yol düşünmek için görünmüyor olabilir. Herhangi bir fikir? Tercihen olmayan bir javascript tabanlı bir çözüm.

Update: aradım markdown dönüştürücü bir html bulundu markdownify. Bu kullanıcıya geri markdown görüntüleme için en iyi çözüm olabilir sanırım ... daha iyi alternatifler bekliyoruz!

Update 2: I this SO yazılan bulundu ve markdown yerine html olarak sunucuya veri göndermek için bir seçenek yoktur sanırım. Sadece veritabanında markdown gibi veri depolamak için herhangi bir olumsuz yanları var mı? Ne (editör dışında) kullanıcıya geri görüntülenmesi hakkında? Belki sunucuya her iki sürümü (html VE markdown) sonrası için iyi olurdu ...

SOLVED: Ben sadece php markdown html Serverside için markdown dönüştürmek için kullanabilirsiniz.

4 Cevap

Ben sadece göndermek ve Markdown gibi metnini saklamak öneririz. Bu zaten yerleşmiş ne gibi görünüyor. Yine olsa mümkün olabilir (her ne kadar bir XSS saldırı kullanmak için zor olacak çünkü bu, sizin kod güvenli yapar - güvenle biçimlendirme kaybı endişesi olmaksızın tüm HTML etiketlerini çıkarmaz çünkü IMO, Markdown gibi metin saklamak daha iyi olacaktır - Ben sadece bu kısmı SAF olacağını söylüyorum er).

Düşünün bir şey KİS belirli sunucu tarafı Markdown uygulamaları belirli farklı kenar durumlarda sahip görünüyor olmasıdır. Kesinlikle (Ben böyle bir durumda ters tırnakların çevrili bir backtick kaçmaya çalışırken inanıyorum) farklı sunulmasından sonra çoktan Burada önizleme bazı tuhaflıklar gördüm. Tel üzerinden dönüştürülen önizleme göndererek, önizleme doğru olmasını sağlayabilirsiniz.

O karar yapmak gerekir demiyorum, ama bir şey düşünebilirsiniz bulunuyor.

Pandoc deneyin. Biraz daha kapsamlı ve Markdownify daha güvenilir.

Gördüğünüz HTML sadece bir önizleme, böylece düzenlemek çalıştığınızda konularda çalıştırmak olacak gibi veritabanında bu depolamak için iyi bir fikir değil. Bu HTML sadece bir yorumudur hem sürümleri (markdown ve HTML) saklamak için de iyi bir fikir değil ve düzenleme ve eşzamanlı olarak her iki versiyonu tutmanın aynı sorunlar var olacaktır.

Yani iyi fikir db markdown depolamak ve daha sonra görüntülemeden önce sunucu tarafı dönüştürmektir.

Bu amaç için PHP Markdown kullanabilirsiniz. Ancak bu javascript tarafında ne görüyorsanız% 100 mükemmel bir dönüşüm değil ve bazı verdiği gerekebilir.

Stack Exchange network kullanan versiyonu bir C # uygulamasıdır ve size sahip KİS sürümü ile indirilen bir python uygulaması olmalıdır.

Ben tweaked bir şey bu yüzden <br> Ben sürümü hattı 626 den başlayarak içine bazı yeni hatlar dönüştürmek markdown.php bu değişti yeni hatlar hale getirildi yoluydu:

var $span_gamut = array(
#
# These are all the transformations that occur *within* block-level
# tags like paragraphs, headers, and list items.
#
    # Process character escapes, code spans, and inline HTML
    # in one shot.
    "parseSpan"           => -30,

    # Process anchor and image tags. Images must come first,
    # because ![foo][f] looks like an anchor.
    "doImages"            =>  10,
    "doAnchors"           =>  20,

    # Make links out of things like `<http://example.com/>`
    # Must come after doAnchors, because you can use < and >
    # delimiters in inline links like [this](<url>).
    "doAutoLinks"         =>  30,
    "encodeAmpsAndAngles" =>  40,

    "doItalicsAndBold"    =>  50,
    "doHardBreaks"        =>  60,
    "doNewLines"          =>  70,
    );

function runSpanGamut($text) {
#
# Run span gamut tranformations.
#
    foreach ($this->span_gamut as $method => $priority) {
        $text = $this->$method($text);
    }

    return $text;
}

function doNewLines($text) {
    return nl2br($text);
}