Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fnando

preg_replace_callback + expressões regulares

Recommended Posts

Estou fazendo um sistema de templates e encontrei um problema.

 

Os padrões para a criação do template seguirão o skema abaixo.

 

<tpl:pegar_perfil cod="1" color="#FF0000">	<strong>texto</strong><br>	textos com e sem formatação HTML</tpl:pegar_perfil>
O interpretador de template irá pegar o pegar_perfil, que é uma função que deve ser criada e passar como parâmetro os atributos e o conteúdo.

 

Comecei a criar a regex e cheguei em uma.

 

<tpl:([a-z0-9_]+) ?([^>]+)>(.*)<\/tpl:\1>
Usando o programa Visual REGEX para ver os matches, encontrei um problema. Se você utiliza apenas 1 nome (pegar_perfil) ele funciona legal.

O problema está quando ele aparece mais de uma vez. Ele sempre bate o padrão <\/tpl:\1> com a última ocorrência. As imagens abaixo ilustram melhor.

 

A parte pink é relativa ao padrão (.*), enquanto a 2ª parte vermelha é relativa ao padrão <\/tpl:\1>

 

Imagem Postada

Ocorrência única

 

Imagem Postada

Mais de uma ocorrência

 

Alguém sabe como me ajudar?!?

 

Outra coisa, como eu migro essa regex para o PHP? Mais especificamente para a função preg_replace_callback.

 

Desde já, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu resolvi de uma outra maneira. Mas de qualquer modo, vlw! :P

 

Taí a solução.

 

$regex = "/<tpx:([a-z0-9_]+) ([^>]*)>(.*?)<\/tpx:.*?>/si";

Aliás, achei muito interessante sua solução!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.