Tôi cần lấy hai khối văn bản có thẻ html và hiển thị so sánh - hợp nhất hai khối văn bản và sau đó đánh dấu những gì đã được thêm hoặc xóa khỏi phiên bản này sang phiên bản tiếp theo.Cách hiển thị so sánh 2 khối văn bản html
Tôi đã sử dụng lớp PE_D Text_Diff để hiển thị thành công các văn bản đồng bằng, nhưng khi tôi cố gắng ném văn bản bằng thẻ html vào trong đó, nó sẽ bị UGLY. Do thuật toán so sánh từ và ký tự dựa trên nhân vật mà lớp sử dụng, các thẻ html bị hỏng và tôi kết thúc với những thứ xấu xí như <p><span class="new"> </</span>p>
. Nó giết html.
Có cách nào để tạo so sánh văn bản trong khi vẫn giữ lại đánh dấu html hợp lệ ban đầu không?
Cảm ơn sự giúp đỡ. Tôi đã làm việc này trong nhiều tuần: [
Đây là giải pháp tốt nhất mà tôi có thể nghĩ đến: tìm/thay thế từng loại thẻ html bằng 1 ký tự không chuẩn đặc biệt như biểu tượng quả táo (opt shift k), làm cho so sánh với loại đánh dấu nguyên thủy này, sau đó hoàn nguyên các ký tự không chuẩn trở lại thành các thẻ. Bạn có phản hồi gì không?
Mã thông báo unicode tìm/thay thế là những gì cuối cùng đã làm việc. Tôi chỉ làm một mảng key => value với mỗi thẻ mở và đóng và ký tự unicode liên quan của nó. Sau đó, tôi tạo ra so sánh, và đảo ngược việc trao đổi thẻ/thẻ. –
Tôi cũng tìm thấy kịch bản Simple Diff của Paul Butler để làm việc tốt hơn cho văn bản dài hơn gói PEAR. PEAR tập trung từ-to-word trong khi thiết lập của Butcher tạo ra sản lượng tốt hơn với những khác biệt còn lại chunked với nhau như chuỗi. Liên kết: http://github.com/paulgb/simplediff/blob/5bfe1d2a8f967c7901ace50f04ac2d9308ed3169/simplediff.php –
Xin chào @SteveG., Bạn đã sử dụng loại unicodes nào? Bởi vì nếu nó được xử lý bằng "\\ u123" hoặc "% 3C" cho "<" một số thuật toán khác không được coi là cùng một từ. Và nếu tôi ánh xạ bằng cách sử dụng các phím chỉ với các chữ số như thế nào tôi có thể garantee rằng sẽ không xung đột với cái gì khác trên phần văn bản của html? Cảm ơn! http://i.imgur.com/OAJUAP1.png – Luccas