2012-12-06 36 views
6

सामग्री लिखने के लिए फ़ैक संपादक का उपयोग कर रहा है। मैं डीबी में संस्करण के रूप में पाठ भंडारित कर रहा हूँ। मैं FCK संपादक में पाठ लोड करते समय संस्करणों में उन परिवर्तनों को हाइलाइट करना चाहता हूं।टेक्स्ट संस्करण तुलना FCKEditor

पाठ तुलना करने के लिए कैसे ....

ऐसा कोई भी टेक्स्ट मोड के माध्यम से हड़ताल में हटा दिया गया है दिखाने के लिए कैसे।

कृपया मेरी मदद करो/...

उत्तर

5

गूगल के अंतर-पैच एल्गोरिथ्म का प्रयास करें http://code.google.com/p/google-diff-match-patch/

पाठ के पिछले दोनों और वर्तमान संस्करण ले लो और यह दो पैरामीटर में संग्रहीत करते हैं। निम्नलिखित पैरामीटर में दो पैरामीटर पास करें।

function diffString(o, n) { 
o = o.replace(/<[^<|>]+?>|&nbsp;/gi, ''); 

n = n.replace(/<[^<|>]+?>|&nbsp;/gi, ''); 

var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); 
var str = ""; 

var oSpace = o.match(/\s+/g); 
if (oSpace == null) { 
    oSpace = ["\n"]; 
} else { 
    oSpace.push("\n"); 
} 
var nSpace = n.match(/\s+/g); 
if (nSpace == null) { 
    nSpace = ["\n"]; 
} else { 
    nSpace.push("\n"); 
} 

if (out.n.length == 0) { 

for (var i = 0; i < out.o.length; i++) { 
    str += '<span style="background-color:#F00;"><del>' + escape(out.o[i]) + oSpace[i] + "</del></span>"; 
} 
} else { 
if (out.n[0].text == null) { 
    for (n = 0; n < out.o.length && out.o[n].text == null; n++) { 
     str += '<span style="background-color:#F00;"><del>' + escape(out.o[n]) + oSpace[n] + "</del></span>"; 
    } 
} 

for (var i = 0; i < out.n.length; i++) { 
    if (out.n[i].text == null) { 
     str += '<span style="background-color:#0C0;"><ins>' + escape(out.n[i]) + nSpace[i] + "</ins></span>"; 
    } else { 
     var pre = ""; 

     for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { 
      pre += '<span style="background-color:#F00;"><del>' + escape(out.o[n]) + oSpace[n] + "</del></span>"; 
     } 
     str += " " + out.n[i].text + nSpace[i] + pre; 
    } 
    } 
} 

return str; 
} 

यह एक HTML देता है जिसमें नया टेक्स्ट हरे और हटाए गए पाठ को लाल + स्ट्राइक आउट के रूप में चिह्नित किया जाता है।

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

  • कोई संबंधित समस्या नहीं^_^