2008-09-05 33 views
11

Tôi đang xây dựng trang web yêu cầu khả năng đánh dấu rất cơ bản. Tôi không thể sử dụng bất kỳ plugin của bên thứ ba nào, vì vậy tôi chỉ cần một cách đơn giản để chuyển đổi đánh dấu thành HTML. Tôi có thể có tổng cộng 3 thẻ mà tôi cho phép.Cách dễ nhất để chuyển đổi đánh dấu Wiki thành HTML là gì?

Cách tốt nhất để chuyển đổi ==Heading== thành <h2>Heading</h2> hoặc --bold-- thành <b>bold</b> là gì? Điều này có thể được thực hiện đơn giản chỉ với Regex, hay ai đó có một chức năng đơn giản?

Tôi đang viết điều này trong C#, nhưng các ví dụ từ các ngôn ngữ khác có thể sẽ hoạt động.

Theo dõi: Đây là một phần nhỏ trong trang web của tôi mà tôi thích sự đơn giản của việc sử dụng Regex đơn giản thay thế. Tôi đã thực hiện công việc này trong C# với đoạn mã sau:

string html = Regex.Replace("==This will be inside h2==", "==([^=]*)==", "< h2>$1< /h2>") 

NET sử dụng $ 1 ký hiệu thay cho \ 1 ký hiệu được sử dụng trong các ngôn ngữ khác.

+0

http://blog.codinghorror.com/parsing-html-the-cthulhu-way/ – QuentinUK

Trả lời

4

Nó không thực sự là một vấn đề đơn giản, bởi vì nếu bạn sẽ hiển thị mọi thứ trở lại cho người dùng, bạn sẽ cần phải khử trùng đầu vào để đảm bảo bạn không tạo bất kỳ lỗ hổng cross site scripting nào.

Điều đó nói rằng, bạn có thể có thể làm điều gì đó khá đơn giản như bạn mô tả dễ dàng nhất với sự thay thế biểu thức chính quy.

Ví dụ

replace the pattern ==([^=]*)== with <h2>\1</h2> 
1

tôi sử dụng Markdown (cùng một ngôn ngữ đánh dấu nhẹ được sử dụng trên trang web này). Đối với C# có một bit rất tốt của mã nguồn có sẵn here. Nó hỗ trợ đầy đủ Markdown, mặc dù nó không xuất hiện để được duy trì. Nhưng hiện tại nó hoạt động thực sự tốt và đó là nguồn mở miễn phí.

Phần tốt nhất là tất cả công việc được thực hiện cho bạn nếu bạn đưa nguồn này vào dự án của mình. Nó rất nhỏ; về cơ bản một cuộc gọi phương thức đơn lẻ để chuyển đổi một đoạn văn bản thành HTML.

+0

một con trăn tương đương cũng tồn tại: http://www.freewisdom.org/projects/python-markdown/ – SingleNegationElimination

+0

2010 -12-03: Dự án tặng quà Markdown đã chuyển sang http://code.google.com/p/markdownsharp/ – k3b

1

Điều này thực sự phụ thuộc vào cú pháp Wiki bạn đang sử dụng vì có một số cú pháp khác nhau. Rõ ràng là phần mềm wiki có chức năng này ở đâu đó; nếu bạn không thể tìm thấy gói phần mềm thực hiện điều này cho bạn, bạn có thể bắt đầu tìm kiếm mã có liên quan trong phần mềm wiki của bạn.

0

lẽ overkill cho 3 thẻ của bạn, nhưng nếu nó thổi lên thành một ngôn ngữ đánh dấu đầy đủ chính thức, và của regexp đang bắt đầu trông đáng sợ, sau đó bạn có thể muốn xem xét antlr

6

Ngoài ra còn có một perl module và a php project để thực hiện việc này. Mã nguồn có thể hữu ích trong việc phát triển giải pháp của riêng bạn.

0

lẽ this là những gì bạn cần.

Trang này là một tập hợp các liên kết, mô tả và báo cáo trạng thái của các trình phân tích cú pháp MediaWiki khác nhau - đó là, các chương trình và dự án, ngoài chính MediaWiki, có khả năng hoặc dịch cú pháp đánh dấu văn bản của MediaWiki thứ gì khác.

Các vấn đề liên quan