Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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));Carregando comentários...