Jump to content


Photo

Colorindo Código [php]


  • Faça o login para participar
7 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 09/06/2005, 16:20

Ae galera,
fiz um sistema para colorir o código PHP que ficar entre a tag

Vejam:


codephp.php
<?php
# ------------------------------------------
#  Produzido por: Felipe Nascimento
#      (Justice)         Deus seja louvado!
# ------------------------------------------
include("form.php");

function verifTag($txt)
{
  //quantidade de tags iniciais e finais
  $nQuantTagInicial = substr_count($txt, "[php]");
  $nQuantTagFinal = substr_count($txt, "[/php]");

  if ($nQuantTagInicial == $nQuantTagFinal)
  {
    for ($i=0; $i<$nQuantTagInicial; $i++)
    {
      $aPosInicial[] = $posi = strpos($txt, "[php]");
      $aPosFinal[] = $posf = strpos($txt, "[/php]");

      for ($j=0; $j<strlen("[/php]"); $j++)
      {
        $txt[$posi+$j] = "";
        $txt[$posf+$j] = "";
      }
    }

    for ($i=0; $i<$nQuantTagInicial-1; $i++)
    {
      if ($aPosFinal[$i] < $aPosInicial[$i+1])
      {
        $Ok += 1;
      }
      else
      {
        $Ok -= 1;
      }
    }
    
    if (($Ok + 1) == $nQuantTagInicial)
    {
      return TRUE;
    }
    else
    {
      return FALSE;
    }
  }
  else
  {
    return FALSE;
  }
}

function tagPHP($txt)
{
  $fontInicial = '<font face="verdana" size="2" color="black">';
  $fontFinal = '</font>';

  $htmlInicial = '<table border="1" bgcolor="#F2F2F2" cellpadding="3"
  cellspacing="0" width="500"><tr><td bordercolor="#F2F2F2">';
  $htmlFinal = '</td></tr></table>';

  $txt = preg_replace('/(\[(\/?)php\])/i', '[\\2php]', $txt);
  $pma = preg_match_all('/\[php\](.+?)\[\/php\]/s', $txt, $match);
    
  if ($pma && verifTag($txt))
  {
    foreach ($match[0] as $k => $v)
    {
      $v = nl2br(htmlentities($v));
      $replace[$v] = $htmlInicial.highlight_string($match[1][$k], TRUE).$htmlFinal;
    }
    return $fontInicial.strtr(nl2br(htmlentities($txt)), $replace).$fontFinal;
  }
  else
  {
    return $fontInicial.nl2br(htmlentities($txt)).$fontFinal;
  }
}

//*****
if (@$_POST["txt"])
  // chamada
  echo (get_magic_quotes_gpc()) ?
        tagPHP(stripslashes($_POST["txt"])) : tagPHP($_POST["txt"]);

?>

form.php
<form method="post" action="codephp.php">
    <font face="verdana" size="2">
    <b>Texto:</b></font><br />
    <textarea name="txt" rows="8" cols="50"><?

    echo (get_magic_quotes_gpc()) ?
          stripslashes(@$_POST["txt"]) : @$_POST["txt"];

    ?></textarea><br />
    <font face="verdana" color="red" size="1">
    <i>Obs.: O código será colorido apenas com o uso correto da tag.<br />
    Não cite a tag dentro da tag.</i>
    </font><br />
    <input type="submit" name="submit" value="  Visualizar  ">
</form>


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

#2 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 09/06/2005, 16:31

Justice... só dando uma dica para otimizar seu código.

Você conhece este?

function phpcode($s)
{
  $s = str_replace("]\n", "]", $s);
  $match = array('#\[php\](.*?)\[\/php\]#se');
  $replace = array("'<div>'.highlight_string(stripslashes('$1'), true).'</div>'");
  return preg_replace($match, $replace, $s);
}


Peguei lá no site do php.net.
------
Mero mortal!

#3 Inu_yasha

Inu_yasha

    www.inuforum.cjb.net

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

Posted 09/06/2005, 20:00

vc n tem isso pra invision 1.3.0 final?
o meu ta sem O.o

#4 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 09/06/2005, 21:29

Oxe, o código tá aí, é só agregar... :P
Klaus Paiva
Conheça também: Taperás

#5 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/06/2005, 05:30

Justice... só dando uma dica para otimizar seu código.

Você conhece este?

function phpcode($s)
{
   $s = str_replace("]\n", "]", $s);
   $match = array('#\[php\](.*?)\[\/php\]#se');
   $replace = array("'<div>'.highlight_string(stripslashes('$1'), true).'</div>'");
   return preg_replace($match, $replace, $s);
}


Peguei lá no site do php.net.

Pois é Prog, a expressão está igual a minha.

Esse código foi bom para eu dar um resfrecada na mente,
referente ao preg_replace(). =)

Mas a minha intenção com esse script foi:
• Não deixar o código estranho quando incluirem tag dentro da tag.
• Verificar se o número de tag's abertas é igual ao número tag's fechadas.
-> O código PHP só recebe a coloração quando a string estiver correta no que se refere às tags.
• Suportar a escrita da tag em case-insitive.
• Tratar a string de forma diferente quanto ao Magic Quotes (On/Off).

Daí pra fazer isso, só achei jeito com 88 linhas.

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

#6 Inu_yasha

Inu_yasha

    www.inuforum.cjb.net

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

Posted 12/06/2005, 10:45

Erro encontrado:
A URL do flash é inválida

eu to tntando por um codigo do invision aqui proces verem, mas so da esse erro...
to usando
codigo
pq sera?

#7 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 12/06/2005, 10:54

Possui a tag [code=auto:0] dentro de outra tag [code=auto:0] ?
Vai ver é isso...


Se quiserem usar tags de PHP e outras no IPB, faz uma busca em Mods no site:
http://www.invisionize.com
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#8 Inu_yasha

Inu_yasha

    www.inuforum.cjb.net

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

Posted 12/06/2005, 11:00

tem uma code no codigo...
eu quero e ACLOPAR o seu codigo nele...




1 user(s) are reading this topic

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

IPB Skin By Virteq