2008-09-05 15 views
11

मैं ऐसी वेबसाइट तैयार कर रहा हूं जिसके लिए बहुत ही बुनियादी मार्कअप क्षमताओं की आवश्यकता है। मैं किसी भी तृतीय पक्ष प्लगइन का उपयोग नहीं कर सकता, इसलिए मुझे मार्कअप को HTML में परिवर्तित करने के लिए बस एक आसान तरीका चाहिए। मेरे पास कुल 3 टैग हो सकते हैं जिन्हें मैं अनुमति दूंगा।विकी मार्कअप को HTML में कनवर्ट करने का सबसे आसान तरीका क्या है?

==Heading== से <h2>Heading</h2>, या --bold-- से <b>bold</b> में कनवर्ट करने का सबसे अच्छा तरीका क्या है? क्या यह रेगेक्स के साथ किया जा सकता है, या क्या किसी के पास एक साधारण कार्य है?

मैं इसे सी # में लिख रहा हूं, लेकिन अन्य भाषाओं के उदाहरण शायद काम करेंगे।

फ़ॉलो करें: यह मेरी वेबसाइट का इतना छोटा हिस्सा है कि मुझे एक साधारण रेगेक्स प्रतिस्थापन का उपयोग करने की सादगी पसंद आई। मैं निम्नलिखित कोड के साथ सी # में यह काम किया:

string html = Regex.Replace("==This will be inside h2==", "==([^=]*)==", "< h2>$1< /h2>") 

नेट \ 1 अंकन है कि अन्य भाषाओं में प्रयोग किया जाता है के बजाय $ 1 संकेतन का उपयोग करता है।

+0

http://blog.codinghorror.com/parsing-html-the-cthulhu-way/ – QuentinUK

उत्तर

4

यह वास्तव में एक साधारण समस्या नहीं है, क्योंकि यदि आप चीजों को वापस उपयोगकर्ता को प्रदर्शित करने जा रहे हैं, तो आपको यह सुनिश्चित करने के लिए इनपुट को भी स्वच्छ करना होगा कि आप cross site scripting भेद्यताएं नहीं बनाते हैं।

उस ने कहा, आप शायद कुछ सरल सरल कर सकते हैं क्योंकि आप नियमित अभिव्यक्ति प्रतिस्थापन के साथ सबसे आसानी से वर्णन करते हैं।

उदाहरण

replace the pattern ==([^=]*)== with <h2>\1</h2> 
1

के लिए मैं Markdown (समान हल्के मार्कअप भाषा इस साइट पर इस्तेमाल किया) का उपयोग करें। सी # के लिए स्रोत कोड का बहुत अच्छा हिस्सा here उपलब्ध है। यह मार्कडाउन का पूरी तरह से समर्थन करता है, हालांकि यह बनाए रखा प्रतीत नहीं होता है। लेकिन समय के लिए यह वास्तव में अच्छी तरह से काम करता है और यह मुक्त मुक्त स्रोत है।

सबसे अच्छा हिस्सा यह है कि यदि आप इस स्रोत को अपनी परियोजना के साथ शामिल करते हैं तो यह सब काम आपके लिए किया जाता है। यह बहुत छोटा है; मूल रूप से एचटीएमएल में पाठ के एक हिस्से को बदलने के लिए एक विधि विधि।

+0

एक अजगर बराबर भी मौजूद है: http://www.freewisdom.org/projects/python-markdown/ – SingleNegationElimination

+0

2010 -12-03: मार्कडाउन डोनेट प्रोजेक्ट http://code.google.com/p/markdownsharp/ पर ले जाया गया है – k3b

1

यह वास्तव में आपके द्वारा उपयोग किए जा रहे विकी वाक्यविन्यास पर निर्भर करता है क्योंकि कई अलग-अलग हैं। स्पष्ट रूप से विकी सॉफ़्टवेयर में यह कार्यक्षमता कहीं है; अगर आपको ऐसा सॉफ़्टवेयर पैकेज नहीं मिल रहा है जो आपके लिए यह करता है, तो आप अपने विकी सॉफ़्टवेयर में प्रासंगिक कोड ढूंढना शुरू कर सकते हैं।

0

अपने 3 टैग के लिए शायद overkill, लेकिन अगर यह एक पूरी तरह से विकसित मार्कअप भाषा में चल रही है, और regexp का डरावना लगने लगे हैं, तो आप पर विचार करने के antlr

6

भी एक perl module नहीं है चाहते हो सकता है और ऐसा करने के लिए php project। या तो स्रोत कोड आपके स्वयं के समाधान को विकसित करने में उपयोगी हो सकता है।

0

जैसा कि यूसुफ ने कहा कि मार्कडाउन एचटीएमएल समस्या को पाठ को हल करने का सबसे अच्छा समाधान है।

मार्कडाउनशर्प हल्का वजन, उपयोग करने में आसान और अच्छी तरह से परीक्षण किया गया है क्योंकि यह स्टैक ओवरफ्लो कार्यान्वयन है!

new Markdown().Transform("**markdown text**"); 

http://blog.stackoverflow.com/2009/12/introducing-markdownsharp/

Markdown के बारे में अधिक वाक्य रचना - http://en.wikipedia.org/wiki/Markdown

0

शायद this तुम क्या जरूरत है।

यह पृष्ठ लिंक, विवरण, और विभिन्न वैकल्पिक मीडियाविकि पारसर्स के स्थिति रिपोर्ट का संकलन है - जो है, कार्यक्रमों और परियोजनाओं, मीडियाविकि खुद को छोड़कर, जो सक्षम या इच्छित में मीडियाविकि के पाठ मार्कअप वाक्य रचना का अनुवाद करने में कर रहे हैं कुछ और।