2010-12-22 13 views
6

युक्त दस्तावेज़ पर एक अंतर का उपयोग करना मैं एक सिस्टम के लिए दिमाग की प्रक्रिया में हूं जिसका उपयोग दस्तावेजों को लिखने और संपादित करने के लिए किया जाएगा (Google डॉक्स सोचें, लेकिन रीयलटाइम सहयोग के बिना)। मैं एक WYSIWYG संपादक का उपयोग करूँगा, इसलिए दस्तावेज़ों में HTML होगा।एचटीएमएल

संपादक दस्तावेज़ों में परिवर्तन करेंगे, और मूल उपयोगकर्ता को उन संशोधनों को देखना चाहिए और मैन्युअल रूप से परिवर्तन करना चाहिए।

एचटीएमएल टैग शामिल होने पर मैं एक diff सिस्टम का उपयोग कैसे कर सकता हूं? मैं संशोधनों को स्वरूपण में किसी भी बदलाव को प्रदर्शित करना चाहता हूं, इसलिए उदाहरण के लिए यदि कुछ बोल्ड किया गया था, तो उसे उस परिवर्तन पर उठाया जाना चाहिए। यह सामान्य परिवर्तन की तरह सामग्री परिवर्तनों को भी दिखाना चाहिए।

यदि मैं नियमित रूप से भिन्न प्रणाली का उपयोग करना चाहता था, तो यह HTML को नियमित पाठ के रूप में देखेगा, जो स्पष्ट रूप से मामला नहीं है। किसी भी संकेतक के लिए धन्यवाद!

+0

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

+0

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

उत्तर

3

सर्वश्रेष्ठ ओएसएस पुस्तकालय मैंने HTML diffing के लिए काम किया है DaisyDiff (PHP Version) है।

उस मामले के लिए उल्लेखनीय, भिन्न HTML, या XML, एक परेशानी वाला जानवर है। यदि आप अलग-अलग एल्गोरिदम में जाने से पहले कुछ प्री-प्रोसेसिंग करके तुलना करने के लिए डेटा को सरल बना सकते हैं तो आपको बेहतर परिणाम मिल सकते हैं। उदाहरण के लिए, यदि आप वास्तव में केवल <p>, <b>, <i> टैग जैसी चीज़ों का उपयोग करते हैं तो उन्हें टोकननाइज़ करें और diff-match-patch या GNU Diff जैसे एक differencing एल्गोरिदम का उपयोग करें। फिर बाद में उन टोकन को प्रतिस्थापित करें। इस पर कुछ विचारों के लिए यह diff-match-patch wiki page देखें।

+0

डेज़ीडिफ ठीक वही है जो मैं ढूंढ रहा हूं। यह एक बड़ी मदद है, धन्यवाद orangepips। ऐसी कुछ चीजें हैं जिन्हें मुझे संशोधित करने की आवश्यकता होगी (उदाहरण के लिए, डेज़ीडिफ अनुच्छेद टैग परिवर्तनों को नोट नहीं करता है), लेकिन यह शुरू करने के लिए एक शानदार जगह होनी चाहिए। –

+0

नोट: पैराग्राफ टैग परिवर्तन की कमी को दूर करने के लिए, मैं अलग-अलग होने से पहले पैराग्राफ के अंत में स्वचालित रूप से ↵ प्रतीक जोड़ रहा हूं। फिर यह विभाजित/विलय अनुच्छेदों पर उठाएगा। –

0

यदि आप खरोंच से इसे बनाने का प्रयास करते हैं तो आप दर्द की दुनिया में हैं। मैं ऑफ-द-शेल्फ समाधान लेने का प्रयास करूंगा - गूगल "एचटीएमएल diffing," आप कुछ विक्रेताओं को देखेंगे।

एक दृष्टिकोण जो आप ले सकते हैं वह पाठ (स्ट्रिप टैग) निकालने और गैर-टैग किए गए संस्करणों की तुलना करना है। यह करना बहुत आसान है, लेकिन जो आप पूरी तरह से चाहते हैं उसे पूरा नहीं करते हैं - यह संशोधन के बीच स्वरूपण की तुलना नहीं करेगा।