Pergunta

Estou construindo um site que requer recursos básicos de marcação.Não posso usar plug-ins de terceiros, então só preciso de uma maneira simples de converter marcação em HTML.Posso ter um total de três tags que permitirei.

Qual é a melhor maneira de converter ==Heading== para <h2>Heading</h2>, ou --bold-- para <b>bold</b>?Isso pode ser feito simplesmente com Regex ou alguém tem uma função simples?

Estou escrevendo isso em C#, mas exemplos de outras linguagens provavelmente funcionariam.

Seguir:Esta é uma parte tão pequena do meu site que gostei da simplicidade de usar uma simples substituição de Regex.Fiz isso funcionar em C# com o seguinte código:

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

.NET usa $1 notação em vez do \1 notação usada em outras linguagens.

Foi útil?

Solução

Não é realmente um problema simples, porque se você for exibir coisas de volta ao usuário, também precisará higienizar a entrada para garantir que não criará nenhum script entre sites vulnerabilidades.

Dito isto, você provavelmente poderia fazer algo bem simples, conforme descreve mais facilmente com uma substituição de expressão regular.

Por exemplo

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

Outras dicas

Há também um módulo perl e um projeto php para fazer isso.O código-fonte de qualquer um deles pode ser útil no desenvolvimento de sua própria solução.

Eu uso Markdown (a mesma linguagem de marcação leve usada neste site).Para C #, há um código-fonte muito bom disponível aqui.Suporta totalmente Markdown, embora não pareça ser mantido.Mas, por enquanto, funciona muito bem e é de código aberto e gratuito.

A melhor parte é que todo o trabalho será feito para você se você incluir essa fonte em seu projeto.É muito pequeno;basicamente uma única chamada de método para transformar um pedaço de texto em HTML.

Isso realmente depende da sintaxe do Wiki que você está usando, pois existem várias diferentes.Obviamente o software wiki possui essa funcionalidade em algum lugar;se você não conseguir encontrar um pacote de software que faça isso para você, você pode começar a procurar o código relevante em seu software wiki.

Talvez esse é o que você precisa.

Esta página é uma compilação de links, descrições e relatórios de status dos vários analisadores alternativos do MediaWiki - isto é, programas e projetos, além do próprio MediaWiki, que são capazes ou pretendem traduzir a sintaxe de marcação de texto do MediaWiki em outra coisa.

Provavelmente um exagero para suas 3 tags, mas se ela se transformar em uma linguagem de marcação completa e as expressões regulares começarem a parecer assustadoras, então você pode querer considerar antlr

Como Joseph disse, Markdown é a melhor solução para resolver o problema de texto para html.

MarkdownSharp é leve, fácil de usar e bem testado, pois é a implementação do stackoverflow!

new Markdown().Transform("**markdown text**");

http://blog.stackoverflow.com/2009/12/introduzindo-markdownsharp/

Mais sobre a sintaxe do Markdown - http://en.wikipedia.org/wiki/Markdown

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top