मुझे एचटीएमएल टैग के साथ दो टेक्स्ट ब्लॉक लेने और तुलना करने की आवश्यकता है - दो टेक्स्ट ब्लॉक मर्ज करें और फिर एक संस्करण से अगले संस्करण में जो जोड़ा या हटा दिया गया है उसे हाइलाइट करें।2 एचटीएमएल टेक्स्ट ब्लॉक की तुलना कैसे दिखाएं
मैंने पीईएआर टेक्स्ट डिफ क्लास का उपयोग सादे टेक्स्ट की सफलतापूर्वक प्रस्तुत करने के लिए किया है, लेकिन जब मैं इसमें HTML टैग के साथ टेक्स्ट फेंकने का प्रयास करता हूं, तो यह यूजीली हो जाता है। शब्द और चरित्र-आधारित तुलना एल्गोरिदम की तुलना में कक्षा का उपयोग करता है, एचटीएमएल टैग टूट जाते हैं और मैं बदसूरत सामान जैसे <p><span class="new"> </</span>p>
के साथ समाप्त होता हूं। यह एचटीएमएल का वध करता है।
क्या मूल मान्य HTML मार्कअप को संरक्षित करते समय टेक्स्ट तुलना उत्पन्न करने का कोई तरीका है?
सहायता के लिए धन्यवाद। मैं हफ्तों के लिए इस पर काम कर रहा हूं: [
यह सबसे अच्छा समाधान है जिसके बारे में मैं सोच सकता हूं: प्रत्येक प्रकार के एचटीएमएल टैग को 1 विशेष गैर-मानक चरित्र जैसे सेब लोगो (ऑप्ट शिफ्ट के) के साथ ढूंढें/बदलें, इस प्रकार के प्राइमेटिव मार्कडाउन के साथ तुलना प्रस्तुत करें, फिर गैर-मानक वर्णों को वापस टैग में वापस लाएं। कोई प्रतिपादन?
यूनिकोड टोकन ढूंढ/प्रतिस्थापित करना आखिरकार काम करता है। मैंने बस एक खोल => मूल्य सरणी प्रत्येक उद्घाटन और समापन टैग और इसके संबंधित यूनिकोड चरित्र के साथ किया था। फिर मैंने तुलना उत्पन्न की, और टोकन/टैग स्वैप को उलट दिया। –
मुझे पॉल बटलर की सरल डिफ लिपि भी पाई पैकेज की तुलना में लंबे पाठ के लिए बेहतर काम करने के लिए मिली। पीयर ने शब्द-से-शब्द पर ध्यान केंद्रित किया, जबकि कसाई के सेटअप ने तारों के रूप में एक साथ जुड़े मतभेदों के साथ बेहतर उत्पादन किया। लिंक: http://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php –
हाय @ स्टेवजी, आप किस तरह के यूनिकोड का उपयोग करते थे? क्योंकि अगर इसे "<\ u123" या "% 3C" के साथ "<" के लिए माना जाता है तो कुछ diff एल्गोरिदम एक ही शब्द के रूप में नहीं मानते हैं। और यदि मैं केवल चाबियों के रूप में अक्षरों का उपयोग करके मैप का उपयोग करता हूं तो मैं कैसे गारंटी दे सकता हूं कि HTML के टेक्स्ट भाग पर किसी और चीज़ के साथ संघर्ष नहीं करेगा? धन्यवाद! http://i.imgur.com/OAJUAP1.png – Luccas