Tôi đang cố gắng chia chuỗi HTML bằng mã thông báo để tạo bản xem trước blog mà không hiển thị toàn bộ bài đăng. Đó là một chút khó hơn so với lần đầu tiên tôi nghĩ. Dưới đây là các vấn đề:Câu đố: Chia chuỗi HTML chính xác
- Một người dùng sẽ tạo HTML thông qua trình soạn thảo WYSIWYG (CKEditor). Đánh dấu không được đảm bảo là khá hay nhất quán.
- Mã thông báo,
read_more()
, có thể được đặt ở bất kỳ đâu trong chuỗi, bao gồm được lồng trong một thẻ đoạn . - Chuỗi phân tách đầu tiên kết quả cần phải là HTML hợp lệ cho tất cả sử dụng hợp lý mã thông báo.
Các ví dụ về khả năng sử dụng:
<p>Some text here. read_more()</p>
<p>Some text read more() here.</p>
<p>read_more()</p>
<p> read_more()</p>
read_more()
Cho đến nay, tôi đã cố gắng chỉ tách chuỗi trên được dấu hiệu, nhưng nó để lại HTML không hợp lệ. Regex có lẽ là một lựa chọn khác. Bạn sẽ sử dụng chiến lược nào để giải quyết vấn đề này và làm cho nó có khả năng chống đạn càng tốt? Bất kỳ đoạn mã hoặc gợi ý nào cũng sẽ được đánh giá cao (tôi đang sử dụng PHP).
Regex là ** không ** tùy chọn. Xem câu trả lời này cho một câu hỏi SO khác: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – You
Tại sao bạn không thể sử dụng trim() trên chuỗi kết quả, tìm phần tử mở hoặc đóng bị thiếu và nối nó một cách thích hợp, để làm cho nó hợp lệ HTML? –
@You Nếu regex không phải là một tùy chọn, vui lòng đề xuất một tùy chọn khác có thể hoạt động cho HTML có khả năng không hợp lệ (X). Theo như tôi biết, PHP không có trình phân tích cú pháp XML không đưa ra lỗi về XML không hợp lệ và không được cấp phép GPL. – VirtuosiMedia