Jump to content


Photo

Bbcode()


  • Faça o login para participar
20 replies to this topic

#1 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 19/06/2005, 10:41

Sintaxe: bbcode(str sText)
Retorno: String
Descrição: Chame a função passando o texto no qual as tags terão de ser trocadas por tags html.
Bibliotecas: Nenhuma
Limitações: PHP 4.0+

Função:
<?php
/**
* Função apenas modificada por:
* Felipe Nascimento (Eclesiastes)
**/

function bbcode($sText)
{
    $sTagArray['B)'] = array('tag'=>'<img src="xx.gif">');
    $sTagArray['o}o'] = array('tag'=>'<img src="xx.gif">');
    $sTagArray['br'] = array('tag'=>'<br>');
    $sTagArray['hr'] = array('tag'=>'<hr>');

    $atagArray['img'] = array('open'=>'<img src="','close'=>'">');
    $atagArray['b'] = array('open'=>'<b>', 'close'=>'</b>');
    $atagArray['i'] = array('open'=>'<i>', 'close'=>'</i>');
    $atagArray['u'] = array('open'=>'<u>', 'close'=>'</u>');
    $atagArray['url'] = array('open'=>'<a href="', 'close'=>'" target="_blank">\\1</a>');
    $atagArray['email'] = array('open'=>'<a href="mailto:', 'close'=>'">\\1</a>');
    $atagArray['url=(.*)'] = array('open'=>'<a href="', 'close'=>'" target="_blank">\\2</a>');
    $atagArray['email=(.*)'] = array('open'=>'<a href="mailto:', 'close'=>'">\\2</a>');
    $atagArray['color=(.*)'] = array('open'=>'<font color="', 'close'=>'">\\2</font>');
    $atagArray['size=(.*)'] = array('open'=>'<font size="', 'close'=>'">\\2</font>');
    $atagArray['font=(.*)'] = array('open'=>'<font face="', 'close'=>'">\\2</font>');

    foreach ($atagArray as $stagName => $replace)
    {
        $tagEnd = preg_replace("/\W/sUi", "", $stagName);

        $sText = preg_replace(
            "|\[$stagName\](.*)\[/$tagEnd\]|sUi",
            "$replace[open]\\1$replace[close]",
            $sText
        );
    }

    foreach ($sTagArray as $stagName => $replace)
    {
        if (eregi("[)(#$]", $stagName))
        {
            $stagNameNew = preg_replace("#([\)\(\$\#])#", "\\ \\1", $stagName);
            $stagNameNew = preg_replace("#( +)#", "", $stagNameNew);
            $sTagArray[ $stagNameNew ] = array('tag' => $replace['tag']);
            unset($sTagArray[ $stagName ]);
        }
    }
  
    foreach ($sTagArray as $stagName => $replace)
    {
        $sText= preg_replace("|\[$stagName\]|sUi", "$replace[tag]", $sText);
    }

    return $sText;
}

?>

Exemplo de chamada:
print bbcode("[B)][o}o] [b]teste[/b]");

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#2 jinyam

jinyam

    Normal

  • Usuários
  • 69 posts
  • Sexo:Não informado

Posted 19/06/2005, 11:05

Ou acho que vc esqueceu de substitui < por < do HTML

#3 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 19/06/2005, 11:35

Amigo, ele substitue as tags utilizadas em BBCODE, igual aqui no fórum.
Exemplo: [b ]texto[/ b] (sem o espaço)

Com isso a função irá converter para:
<b>texto</b>

Entendeu ?
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#4 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 06/07/2005, 15:26

Mas como eu faço para aparecer dentro do text area a funcao do BBCODE?


Falopa!

#5 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 07/07/2005, 05:34

Dentro do BBCode você não poderá ver os códigos em negrito, ou com links...

Você poderá ver somente os códigos retornados da função.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#6 -v6-

-v6-

    Normal

  • Usuários
  • 82 posts
  • Sexo:Não informado

Posted 20/03/2006, 02:07

Muito Bom. hehehe

Edição feita por: -v6-, 20/03/2006, 02:10.

ESTUDANDO

PHP/Mysql/JavaScript/Tableless/
Fireworks/Dreamweaver/Flash

#7 Microbyte

Microbyte

    12 Horas

  • Usuários
  • 204 posts
  • Sexo:Não informado

Posted 21/04/2006, 19:36

Dentro do BBCode você não poderá ver os códigos em negrito, ou com links...


Permita-me discordar, mas em fóruns como o vBulletin, isso é possível!!!
Também gostava de saber como fazem!

Edição feita por: Microbyte, 21/04/2006, 19:37.


#8 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 26/04/2006, 07:24

e usado um tecnologia de JAVASCRIPT por traz, para após clicar no botão B ou I, ele já trazer formatado o texto! em fim e muita treta :huh:

já o BBCode do tutorial e o BBCode usado em PHP e ASP onde somente e mostrado as targs [b ] e [I ] e depois quando for visualizado o PHP ou ASP transforma para <i > ou <b >

Bl ?

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#9 Dantetekanem

Dantetekanem

    Normal

  • Usuários
  • 74 posts
  • Sexo:Não informado

Posted 11/05/2006, 21:38

Achei isso no PHP.NET MUITO xxxxxx !!!

$sText = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $sText);


Isso vai fazer com quê transforme strings como http://www.wmonline.com.br em
<a href="http://www.wmonline....line.com.br</a>


Legal não ???

O bbCode modificado com isto fica:
function bbcode($sText)
{
 $sTagArray['br'] = array('tag'=>'<br>');
 $sTagArray['hr'] = array('tag'=>'<hr>');
 $atagArray['img'] = array('open'=>'<img src="','close'=>'">');
 $atagArray['b'] = array('open'=>'<b>', 'close'=>'</b>');
 $atagArray['i'] = array('open'=>'<i>', 'close'=>'</i>');
 $atagArray['u'] = array('open'=>'<u>', 'close'=>'</u>');
 $atagArray['url'] = array('open'=>'<a href="', 'close'=>'" target="_blank">\\1</a>');
 $atagArray['email'] = array('open'=>'<a href="mailto:', 'close'=>'">\\1</a>');
 $atagArray['url=(.*)'] = array('open'=>'<a href="', 'close'=>'" target="_blank">\\2</a>');
 $atagArray['email=(.*)'] = array('open'=>'<a href="mailto:', 'close'=>'">\\2</a>');
 $atagArray['color=(.*)'] = array('open'=>'<font color="', 'close'=>'">\\2</font>');
 $atagArray['size=(.*)'] = array('open'=>'<font size="', 'close'=>'">\\2</font>');
 $atagArray['font=(.*)'] = array('open'=>'<font face="', 'close'=>'">\\2</font>');

 foreach ($atagArray as $stagName => $replace)
 {
   $tagEnd = preg_replace(
	 "/\W/sUi",
	 "",
	 $stagName
   );

   $sText = preg_replace(
	 "|\[$stagName\](.*)\[/$tagEnd\]|sUi",
	 "$replace[open]\\1$replace[close]",
	 $sText
   );
 }
 
 foreach ($sTagArray as $stagName => $replace)
 {
   $sText= preg_replace(
	 "|\[$stagName\]|sUi",
	 "$replace[tag]",
	 $sText
   );
 }
 $sText = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
					 "<a href=\"\\0\">\\0</a>", $sText);
 return $sText;
 
}


Abraços !

#10 marchewsky

marchewsky

    Normal

  • Usuários
  • 70 posts
  • Sexo:Não informado
  • Localidade:Brusque, SC
  • Interesses:Web, PHP, Design, Publicidade

Posted 01/08/2006, 14:56

Ok, agora como faça para utilizar como o do forum que clico no botão e elejoga o bbcode dentro do form e assim por diante.

#11 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 20/09/2006, 16:50

Sobre essa adição de transformar automaticamente os links.
Como eu faço para quando o usuário já tiver usado a tag http://
não ficar um duplo link?

Eu tentei colocar no comecinho assim:

$sText = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
					 "[url=http://\\0\]\\0[/url]", $sText);

usando os próprios bbcodes, mas, ele repete da mesma forma o [url]
fica um dentro do outro. :(
Há alguma forma de se fazer isso?


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

Quanto à dúvida de cima, de pôr botões que jogam no form, vc tem que procurar isso no fórum de javascript, pois isso é feito com javascript. :}

Edição feita por: lahlahbarros, 20/09/2006, 16:54.


#12 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 21/09/2006, 22:09

Você está usando a função do Felipe? Tente assim:
$sText = preg_replace( "#(^|\s)(http://.[^\s]+)#"  , "<a href=\"\\2\" target=\"_blank\"> \\2 </a>", $sText );

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#13 jfsmi

jfsmi

    12 Horas

  • Usuários
  • 201 posts
  • Sexo:Masculino

Posted 28/09/2006, 10:01

Olá pessoal... eu to quase entendendo esse BBCODE... apenas não entendi como aplico no textarea!

????<textarea id="texto" name="texto" rows="10" cols="50"></textarea>????

Não sou expert... mas tento ajudar! Mas o que mais preciso é de ajuda! hehehe


#14 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 28/09/2006, 10:21

Você quer dizer clicar no botão e aplicar o bbcode selecionado no texto dentro da área de texto?

Flws...
:ponder:Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#15 tekoBR

tekoBR

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Não informado

Posted 28/03/2007, 07:14

Você quer dizer clicar no botão e aplicar o bbcode selecionado no texto dentro da área de texto?

Flws...
:ponder:


A minha dúvida também é essa.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq