2009-07-28 12 views
9

मैं एक परियोजना पर wmd markdown संपादक का उपयोग कर रहा हूँ और एक सवाल था:सामूहिक नरसंहार के हथियारों markdown संपादक - Markdown रूपांतरण करने के लिए HTML

मैं प्रपत्र markdown पाठ क्षेत्र युक्त पोस्ट करते हैं, यह (अपेक्षित रूप से) सर्वर से पदों एचटीएमएल । हालांकि, सर्वर-साइड सत्यापन पर कुछ विफल हो जाता है और मुझे उपयोगकर्ता को अपनी प्रविष्टि को संपादित करने के लिए वापस भेजने की आवश्यकता होती है, क्या वैसे भी टेक्स्टरेरा को केवल मार्कडाउन के साथ फिर से भरना है, न कि HTML? चूंकि मैंने इसे स्थापित किया है, सर्वर के पास केवल पोस्ट डेटा तक पहुंच है (जो एचटीएमएल के रूप में है) इसलिए मुझे ऐसा करने का तरीका नहीं लगता है। कोई विचार? अधिमानतः गैर-जावास्क्रिप्ट आधारित समाधान।

अद्यतन: मुझे markdownify नामक मार्कडाउन कनवर्टर के लिए एक HTML मिला। मुझे लगता है कि यह उपयोगकर्ता को वापस मार्कडाउन प्रदर्शित करने का सबसे अच्छा समाधान हो सकता है ... किसी भी बेहतर विकल्प का स्वागत है!

अपडेट 2: मुझे एसओ पर this पोस्ट मिला और मुझे लगता है कि सर्वर को डेटा को HTML के बजाय मार्कडाउन के रूप में भेजने का विकल्प है। डेटाबेस में मार्कडाउन के रूप में डेटा को संग्रहीत करने के लिए क्या कोई डाउनसाइड्स हैं? इसे वापस उपयोगकर्ता (एक संपादक के बाहर) प्रदर्शित करने के बारे में क्या? शायद यह सर्वर से दोनों संस्करणों (HTML और markdown) पोस्ट करने के लिए ... सबसे अच्छा होगा

हल: मैं बस php markdown उपयोग कर सकते हैं एचटीएमएल serverside करने के लिए markdown कन्वर्ट करने के लिए।

उत्तर

4

मैं सुझाव दूंगा कि आप बस टेक्स्ट को मार्कडाउन के रूप में भेजें और स्टोर करें। ऐसा लगता है कि आप पहले से ही बस गए हैं। आईएमओ, मार्कडाउन के रूप में टेक्स्ट संग्रहीत करना बेहतर होगा क्योंकि आप फॉर्मेटिंग के नुकसान के बारे में चिंता किए बिना सभी HTML टैग को सुरक्षित रूप से स्ट्रिप कर सकते हैं - इससे आपका कोड सुरक्षित हो जाता है, क्योंकि XSS हमले का उपयोग करना मुश्किल होगा (हालांकि यह अभी भी संभव हो सकता है - मैं केवल यह कह रहा हूं कि यह हिस्सा सुरक्षित होगा er)।

+0

नहीं चाहेंगे यदि पाठ में HTML उदाहरण है तो सभी HTML टैग को अलग करना समस्या का कारण बनता है? –

+0

शायद, लेकिन फिर यह सुनिश्चित करने का मामला है कि आप कोड ब्लॉक के अंदर से किसी भी टैग को पट्टी नहीं करते हैं। –

+1

बस एचटीएमएल इसे एन्कोड करें। मुझे नहीं लगता कि किसी भी मार्कडाउन वर्ण आरक्षित एचटीएमएल हैं। –

2

विचार करने की एक बात यह है कि डब्लूएमडी में कुछ सर्वर-साइड मार्कडाउन कार्यान्वयन से कुछ अलग किनारे के मामले दिखाई देते हैं। मैंने निश्चित रूप से पूर्वावलोकन में कुछ quirks देखा है जो सबमिशन के बाद अलग दिखाया गया है (मुझे विश्वास है कि ऐसा एक मामला बैकटिक्स से घिरे बैकटिक से बचने का प्रयास कर रहा था)। तार पर परिवर्तित पूर्वावलोकन भेजकर, आप यह सुनिश्चित कर सकते हैं कि पूर्वावलोकन सटीक है।

मैं यह नहीं कह रहा हूं कि आपका निर्णय लेना चाहिए, लेकिन यह विचार करने के लिए कुछ है।

0

पांडोक आज़माएं। यह Markdownify से थोड़ा अधिक व्यापक और विश्वसनीय है।

0

जो एचटीएमएल आप देख रहे हैं वह सिर्फ एक पूर्वावलोकन है, इसलिए डेटाबेस में इसे स्टोर करना एक अच्छा विचार नहीं है क्योंकि आप संपादित करने का प्रयास करते समय मुद्दों में भाग लेंगे। एचटीएमएल सिर्फ एक व्याख्या है क्योंकि दोनों संस्करणों (मार्कडाउन और एचटीएमएल) को स्टोर करना भी एक अच्छा विचार नहीं है और आपको समन्वय में दोनों संस्करणों को संपादित करने और रखने की एक ही समस्या होगी।

तो सबसे अच्छा विचार डीबी में मार्कडाउन को स्टोर करना है और फिर इसे प्रदर्शित करने से पहले सर्वर पक्ष को परिवर्तित करना है।

आप इस उद्देश्य के लिए PHP Markdown का उपयोग कर सकते हैं। हालांकि यह जावास्क्रिप्ट पक्ष पर जो कुछ भी आप देख रहे हैं उसका 100% सही रूपांतरण नहीं है और कुछ tweaking की आवश्यकता हो सकती है।

संस्करण जो Stack Exchange network उपयोग कर रहा है वह एक सी # कार्यान्वयन है और आपके पास wmd के संस्करण के साथ डाउनलोड किया गया एक पायथन कार्यान्वयन होना चाहिए।

एक बात मैं बदलाव रास्ता नई लाइनें तो गाया गया मैं <br> में markdown.php कुछ नई लाइनों को रूपांतरित करने के बाद इसे बदला संस्करण में लाइन 626 से शुरू हो गया था मैं:

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); 
} 
संबंधित मुद्दे

 संबंधित मुद्दे