OK, điều này nghe có vẻ hơi điên rồ, nhưng hãy chịu đựng tôi ở đây trong một phút.Trình phân tích cú pháp SSI được viết bằng PHP?
Tôi đang làm việc trên một trang web nơi tiêu chuẩn là sử dụng SSI để bao gồm tiêu đề trang, chân trang và menu. Các tệp được bao gồm sử dụng các điều kiện SSI để xử lý các trình duyệt khác nhau, một số #include làm tổ và một số mẹo #set/#if để làm nổi bật trang hiện tại trong menu. Nói cách khác, nó không chỉ là #include chỉ thị trong SSI.
Tôi chắc chắn một số có thể tranh luận với tính thẩm mỹ, nhưng nó thực sự hoạt động khá độc đáo, đối với HTML tĩnh.
Bây giờ, vấn đề: Tôi muốn chỉ "#include" cùng một tệp tiêu đề và chân trang html được phân tích cú pháp SSI từ tập lệnh PHP của tôi, do đó tránh trùng lặp mã và vẫn duy trì giao diện thống nhất của trang web. Nếu PHP đang chạy trong môi trường mod_php thông thường, tôi có thể làm điều đó bằng cách sử dụng hàm virtual() của PHP. Thật không may, trang web đang sử dụng FastCGI/suexec để chạy PHP (để mỗi VirtualHost có thể chạy như một người dùng khác), và điều này phá vỡ ảo().
Tôi đã sử dụng một trình phân tích cú pháp SSI khá đơn giản mà tôi đã viết bằng PHP (nó xử lý #includes và một số câu lệnh #if đơn giản), nhưng tôi muốn một giải pháp tổng quát hơn. Vì vậy, trước khi tôi đi hạt và viết một số phân tích cú pháp SSI đầy đủ, đầy đủ hơn, có ai biết về một trình phân tích cú pháp SSI hoàn chỉnh được viết bằng PHP không? Đương nhiên, tôi cũng mở cửa cho các giải pháp khác hoạt động theo những ràng buộc mà tôi đã vạch ra.
Cảm ơn bạn rất nhiều vì đã dành thời gian.
Tôi sẽ không gọi cho SSI bao gồm các tệp có "' # include' nesting và '# set' /' # if' trickery "* static * HTML. ;) Nếu không, câu hỏi thú vị. : D – deceze
Việc triển khai duy nhất tôi biết là http://nanoweb.si.kz/manual/mod_include.html - nhưng điều đó chỉ thực hiện ba chức năng tiêu chuẩn và không cấu thành nhiều bộ phân tích cú pháp. – mario
@deceze: Vâng ... chúng "tĩnh" theo nghĩa là mỗi tệp HTML do người dùng yêu cầu tạo ra cùng một đầu ra mỗi lần. Tuy nhiên, tôi đồng ý rằng các tệp được bao gồm SSI không tĩnh. –