Tôi đang sử dụng phần mở rộng DOM trong PHP để xây dựng một số tài liệu HTML và tôi muốn đầu ra được định dạng độc đáo (với các dòng mới và thụt lề) để có thể đọc được , từ nhiều bài kiểm tra tôi đã thực hiện:PHP "in đẹp" HTML (không gọn gàng)
- "formatOutput = true" không làm việc ở tất cả với saveHTML(), chỉ saveXML()
- Thậm chí nếu tôi sử dụng saveXML(), nó vẫn chỉ hoạt động trên các phần tử được tạo thông qua DOM, không phải các phần tử được bao gồm với loadHTML(), ngay cả với "preserveWhiteSpace = false"
Nếu có ai biết khác, tôi thực sự muốn biết họ đã làm việc như thế nào.
Vì vậy, tôi có tài liệu DOM và tôi đang sử dụng saveHTML() để xuất HTML. Vì nó đến từ DOM tôi biết nó là hợp lệ, không cần phải "Tidy" hoặc xác nhận nó theo bất kỳ cách nào.
Tôi chỉ đang tìm cách để có được kết quả được định dạng độc đáo từ đầu ra tôi nhận được từ phần mở rộng DOM.
NB. Như bạn có thể đoán, tôi không muốn sử dụng phần mở rộng Tidy dưới dạng a) nó cũng cần nhiều hơn nữa (đánh dấu đã hợp lệ) và b) nó thực sự thay đổi nội dung HTML (chẳng hạn như tài liệu HTML 5 và một số phần tử).
Follow Up:
OK, với sự giúp đỡ của các câu trả lời dưới đây tôi đã làm việc ra lý do tại sao phần mở rộng DOM đã không làm việc. Mặc dù ví dụ cụ thể hoạt động, nhưng nó vẫn không hoạt động với mã của tôi. Với sự giúp đỡ của this bình luận Tôi thấy rằng nếu bạn có bất kỳ nút văn bản nào mà isWhitespaceInElementContent() là đúng thì không có định dạng nào được áp dụng ngoài điểm đó. Điều này xảy ra bất kể có hay không bảo vệWhiteSpace là sai. Giải pháp là để loại bỏ tất cả các nút (mặc dù tôi không chắc chắn nếu điều này có thể có tác dụng phụ trên nội dung thực tế).
Cảm ơn. Với các ví dụ của bạn và các ý kiến trên php.net tôi đã làm việc ra vấn đề (xem tiếp theo ở trên). –
Các giải pháp với DOM dường như với tôi khá nặng. Nhanh hay chậm? Bạn cũng nên sử dụng nó trên các đoạn trích nhỏ hơn hoặc chỉ trên toàn bộ trang? – sumid
Có vấn đề trong khi sử dụng 'saveXML()' với một số thẻ không có giá trị như '' nó chuyển đổi nó thành ' 'có cách nào tôi có thể sửa chữa nó không? –