• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skin

[Resolvido] preg_match_all + BBcode parsing

8 mensagens neste tópico

Boas pessoal,

estou a escrever um código para utilizar na minha página pessoal e este vai ser todo escrito por mim e um dos seus módulos vai permitir a criação de plugins para serem usados na página pessoal / blog. Vai ser algo do tipo Joomla + DokuWiki.

E então agora estou a escrever o tal módulo para plugins de que vos falei. Gostava que me dissessem se o código que vai em baixo está correcto e se vai funcionar correctamente. Eu peço-vos isto porque é raro usar preg_match's e então pronto não sei até que ponto sei funcionar com esta treta.

function separa($string, $inicio, $fim) {
$str = explode($inicio, $string);
$str = $str[1];
$str = explode($fim, $str);
$str = $str[0];

return $str;
}

function plugin_do($plugintype, $pluginvalue) {
$plugin = separa($val[1], '<plugin', '>');
// bla bla bla para fazer o plugin funcionar
}

preg_match_all("/(<plugin([\w]+)[^>]*>)(.*)(<\/plugin\\2>)/", $texto, $matches, PREG_SET_ORDER);

foreach ($matches as $val) plugin_do($val[1], $val[3]);

Se o código tiver algum erro, pedia que mo indicassem, caso contrário digam também  :P

Abraço,

Skin

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epá, o <plugin> é para ter que sintaxe?

Em relação ao BBcode, não vi aí nada para isso...

E uma nota, no separa(), usa o 3º parametro do explode() (limit) como 2, porque podes ter entre a sintaxe dos plugins outra cena com <plugin lá dentro. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A syntax do plugin é algo do género:

<plugin youtube>

E uma nota, no separa(), usa o 3º parametro do explode() (limit) como 2, porque podes ter entre a sintaxe dos plugins outra cena com <plugin lá dentro.

Like this?

$str = explode($inicio, $string, 2);

$str = explode($fim, $str, 2);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, dessa maneira.

Em relação à sintaxe, acho que devias pôr um \s (acho que é assim que se designa espaço em branco) antes do \w.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde vês isso é que no manual do PHP não tem, ou pelo menos eu não encontro  :thumbdown:

Obrigado, tiraste-me as dúvidas e é sempre siga  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As preg_* não tem muito que documentar, é a mesma sintaxe que em perl.

Anyway, o \s nem fui ver aí, foi mesmo de cabeça. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora