trước khi bạn bắt đầu liên kết với RegEx match open tags except XHTML self-contained tags đọc toàn bộ câu hỏi.Làm cách nào để tạo trình phân tích cú pháp HTML?
Tôi muốn viết trình phân tích cú pháp HTML (chỉ cho HTML 5, nó nên kiểm tra xem đó là HTML 5 và nếu không, trả lại lỗi) chỉ để tìm hiểu bản thân một cái gì đó mới, nhưng tôi không biết cách tốt nhất để làm điều đó. Hãy để tôi chỉ cho bạn một ví dụ:
<!doctype html>
<html>
<head>
<!-- #TITLE -->
<title>Just an example</title>
</head>
<body>
<p class='main'>Simple paragraph with an <a href='/a.html'>anchor</a></p>
</body>
</html>
Bây giờ, bất cứ ai có thể chỉ cho tôi cách phân tích cú pháp này (biểu mẫu cuối cùng không quan trọng, chỉ là khái niệm)? Tôi đã có một số ý tưởng (như sử dụng các hàm đệ qui, hoặc tham chiếu đến mảng chứa thẻ thực), nhưng tôi không nghĩ đây là những khái niệm tốt nhất. Tôi có nên kiểm tra char bằng char và sau đó gọi các chức năng cụ thể hoặc sử dụng cụm từ thông dụng (được giải thích bên dưới)?
Bằng cách sử dụng cụm từ thông dụng, tôi không có nghĩa là một mẫu cho toàn bộ thẻ. Tôi thích sử dụng một mẫu cho tagname (và nếu cái này trả về true, hãy kiểm tra các mẫu tiếp theo), sau đó cho thuộc tính (và nếu thuộc tính này trả về true, hãy kiểm tra lại), và cuối cùng kiểm tra phần cuối của thẻ.
Tôi nên làm gì khi tìm thấy thẻ? Chạy một vòng lặp kiểm tra các thẻ (và nếu nó tìm thấy thẻ, gọi nó một lần nữa và một lần nữa ...)? Nhưng đối với tôi, nó có vẻ như hàm đệ quy hoặc ít nhất là đệ quy một nửa khi hàm X gọi Y gọi là X ...
Vì vậy, câu hỏi cuối cùng là: cấu trúc chính xác và hiệu quả nhất cho điều đó là gì?
Tôi không nghĩ câu trả lời của bạn giúp tôi ...Tôi đã thấy câu hỏi đó trước đây và tôi đã viết câu hỏi của mình "** Bằng cách sử dụng cụm từ thông dụng, tôi không có nghĩa là một mẫu cho toàn bộ thẻ. **" Và nhân tiện, bạn đã đọc bài này trong chưa đầy 2 phút? – user1951214