BBparser simples em PHP que permite substituir o conteúdo fora das tags
Estou tentando analisar seqüências de caracteres que representam o código fonte, algo como isto:
[code lang="html"]
<div>stuff</div>
[/code]
<div>stuff</div>
omo você pode ver nas minhas 20 perguntas anteriores, tentei fazê-lo com as funções regex do PHP, mas tive muitos problemas, especialmente quando a string é muito grande .
Vocês conhecem uma classe de analisador de BB escrita em PHP que eu posso usar para isso, em vez de expressões regulare
O que eu preciso fazer é:
poder converter todo o conteúdo de dentro de[code]
tags com entidades html conseguir executar algum tipo de filtro (uma função de retorno de chamada) apenas em conteúdo fora do[code]
Taobrigad
edit: Acabei usando isso:
converter tudo<pre>
e<code>
tags para [pré] e [código]:
str_replace(array('<pre>', '</pre>', '<code>', '</code>'), array('[pre]', '[/pre]', '[code]', '[/code]'), $content);
get conteúdo entre [code] .. [/ code] e [pre] ... [/ pre] e faça a conversão de entidade html
preg_replace_callback('/(.?)\[(pre|code)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s', 'self::specialchars', $content);
(roubei esse padrão das funções de shortcode do wordpress:)
armazene o conteúdo convertido da entidade em uma variável de matriz temporária e substitua a de$content
com um ID exclusivo
Agora posso executar meu filtro com segurança em$content
, porque não há código, apenas o ID (esse filtro faz uma strip_tags em todo o texto e converte coisas comohttp://blabla.com
para links)
substitua os IDs únicos de$content
com os blocos de código convertidos da variável da matriz
você acha que está tudo bem?