Ir para conteúdo

POWERED BY:

Arquivado

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

Ringeril

[Resolvido] bbCode consultar banco de dados

Recommended Posts

Olá pessoal!

Preciso de uma ajuda nesse código aqui, dêem uma olhada.

Na seguinte parte do código o que fiz foi pegar entre o bbCode "[usuario]1[/usuario]" e procurar esse valor no banco de dados, retornando o nome do usuário para montar um link para seu perfil. O código funciona, mas quero saber se há uma maneira melhor de fazer isso.

 

Nota: percebe-se que alem de [usuario] há também [grupo] que coloquei para não precisar refazer o código para cada bbCode diferente.

 

Código:

$str = '[usuario]1[/usuario][usuario]2[/usuario][usuario]2[/usuario][grupo]1[/grupo]';

preg_match_all('@\[usuario\](.*?)\[\/usuario\]|\[grupo\](.*?)\[\/grupo\]@i', $str, $result);
array_shift($result);

foreach($result as $k=>$v){
   foreach($result[$k] as $kk=>$vv){
       if($vv){
           if($k == 0) $new['[usuario]'.$vv.'[/usuario]'] = '<a href="#usuario">'.$session->dadosUsuario('usuario',$vv).'</a>';
           elseif($k == 1) $new['[grupo]'.$vv.'[/grupo]'] = '<a href="#grupo">'.$session->dadosGrupo('nome',$vv).'</a>';
       }
   }
}
$str = strtr($str, $new);

Então, há uma maneira melhor de fazê-lo?

 

Abraço.

-------------

Só editando pra mostrar como faço normalmente:

$bbcode = array(
           '@\[br\]@is'                            => '<br/>',
           '@\[b\](.*?)\[\/b\]@i'                  => '<strong>$1</strong>',
           '@\[i\](.*?)\[\/i\]@i'                  => '<em>$1</em>',
           '@\[u\](.*?)\[\/u\]@is'                 => '<u>$1</u>'......
           ....
       );
       return preg_replace(array_keys($bbcode), array_values($bbcode), strip_tags($str));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem várias maneiras de se fazer isso, mas avaliar qual é melhor e qual é pior é muito subjetivo.

O que você fez funciona? Atende seus objetivos? Não existe nenhum erro conceitual ou de programação?

Então está ótimo.

 

Como futuro engenheiro, às vezes recorro à velha máxima: 'O mais simples que funcione.' :thumbsup:

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.