PHP TO HTML 1.4

septiembre 17, 2008 at 1:01 pm 1 comentario

Script en PHP que pasa el codigo de un archivo PHP a un HTML con el codigo coloreado y las lineas numeradas.

Requerimientos:
– El directorio configurado como $path con permisos de escritura.

Más info en el script.


<?PHP
/*
PHP TO HTML 1.3
===============    Descripci?n:
    Script para generar a partir de un archivo php, un html
    en el que mostramos todo el codigo del archivo PHP coloreado.
    
    Especificaciones:
    – Permite des/activar la opcion para subrayar funciones
    – Permite des/activar la opci?n para crear la descripci?n del archivo PHP
    – Permite especificar las extensiones permitidas
    – Permite especificar el color de fondo del n?mero de linea
    – Permite especificar el color del n?mero de linea
    – Permite especificar la fuente y tama?o de todo el archivo
    – Permite des/activar la creaci?n del archivo HTML (las opciones son crear el html (0), ver el codigo coloreado (1), ver el codigo coloreado y con numero de linea(2))
    – Permite des/activar el A?adir Imprimir pagina
*/ /* <CONFIGURACI?N SCRIPT> *///<GENERAL>
$php_manual_lang=“es”//Idioma con dos caracteres para el enlace a el manual de PHP de la funci?n
$php_linked=1//1 si quieres que linken las funciones a el manual PHP, 0 si no es as?
$created_description=0//1 para que ponga una cabecera en el HTML con la descripci?n del archivo PHP (Nombre, fecha, etc) y 0 para que no lo ponga
$fileOption=3//Opciones de creaci?n del HTML (las opciones son crear el html con n?mero de linea(0), crear el html con el codigo coloreado sin numerar las lineas (1), ver el codigo coloreado sin numero de linea (2), ver el codigo coloreado y con numero de linea(3))
$print=1

//1 para que a?ada la opcion de imprimir y 0 para que no
//</GENERAL>
//<COLORES y FUENTES>
$fnln=‘#4169e1’//Color de fondo de donde muestra el n?mero de linea
$nln=‘white’//Color del n?mero de linea
$sepcodeln=‘&nbsp;&nbsp;&nbsp;&nbsp;’//Espacio entre el n?mero de linea y el codigo d ela linea
$bodystyle=‘padding: 0; margin: 0;’//Estilo del <body>
$tablestyle=‘padding:0;margin:0;color:#666666;font-weight:none;font-family:Verdana;font-size:9pt;’//estilo para al tabla
$tablecode=‘font-weight:normal;background:white;’//Estilo de la tabla del codigo
$comment=‘#FF9900’//Color de los comentarios
$string=‘#DD0000’//Color de los strings
$html=‘#000000’//Color del codigo html
$keyword=‘#007700’//Color de las palabras clave de php
$background=‘#FFFFFF’//Color de fondo
$default=‘#0000BB’

//Color por defecto para el resto de palabras
//</COLORES y FUENTES>
//<FICHEROS>
$path=‘./’//Sitio donde almacenar el nuevo fichero html coloreado, con “/” (barra) al final
$max_size=60//Tama?o maximo del fichero en Kilobytes
//array que tiene como valor la extension valida para una nueva extensi?n a?adir $ext[]=”extension”
    
$ext[]=‘php’;
    
$ext[]=‘php3’;
    
$ext[]=‘php4’;
    
$ext[]=‘phtml’;
    
$ext[]=‘phps’;

//</FICHEROS>
/* </CONFIGURACI?N> */
/**
<VARIABLES>
  No modificables por el usuario, solo por el autor
**/
define(‘SCRIPT_VERSION’,‘1.3’);
define(‘SCRIPT_NAME’,‘PHP2HTML ‘);
define(‘SCRIPT_AUTOR’,‘ZydRick con la colaboraci&oacute;n de Jusepe’);
$functions get_defined_functions();
$functions $functions[‘internal’];
$v=explode(‘.’,PHP_VERSION);
$phpversion=$v[0];

/** </VARIABLES> **/
/** <FUNCIONES> **/
//Definimos la funci?n form que imprime el formulario
function form($error=“”)
{    
    
//<HTML>
    //A continuaci?n el codigo html de la pagina del formulario
    
$form=‘<HTML>’;
    
$form.=‘<HEAD>’;
    
$form.=‘<TITLE>’.SCRIPT_NAME.SCRIPT_VERSION.‘ por ‘.SCRIPT_AUTOR.‘</TITLE>’;
    
$form.=‘</HEAD’;
    
$form.=‘<BODY>’;
    
$form.=‘<form action=”‘.$_SERVER[‘PHP_SELF’].‘” method=”post” enctype=”multipart/form-data” name=”PHP_TO_HTML”>’;
    
$form.=‘<input type=”hidden” name=”MAX_FILE_SIZE” value=”‘$GLOBALS[‘max_size’]*1024 .‘”>’;
    
$form.=‘<input type=”hidden” name=”action” value=”create”>’;
    
$form.=‘<table width=”90%” border=”0″>’;
    
$form.=‘<tr><td>’.$error.‘</td></tr>’;
    
$form.=‘<tr><td><table width=”100%” border=”0″>’;
    
$form.=‘<tr><td width=”50%”><b><font color=”#666666″ size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Nombre</font> ‘;
    
$form.=‘<font color=”#666666″ size=”1″ face=”Verdana, Arial, Helvetica, sans-serif”>(del nuevo archivo html con el codigo php coloreado)</font>’;
    
$form.=‘<font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>:</font></b></td>’;
    
$form.=‘<td width=”50%”><input name=”name” type=”text” id=”name” size=”30″></td></tr>’;
    
$form.=‘<tr><td width=”50%”><b><font color=”#666666″ size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Titulo* </font>’;
    
$form.=‘<font color=”#666666″ size=”1″ face=”Verdana, Arial, Helvetica, sans-serif”>(del archivo html)</font><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>:</font></b></td>’;
    
$form.=‘<td width=”50%”><input name=”title” type=”text” id=”name” size=”30″></td>’;
    
$form.=‘<tr><td valign=”top” width=”50%”><b><font color=”#666666″ size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>Descripci&oacute;n</font> ‘;
    
$form.=‘<font color=”#666666″ size=”1″ face=”Verdana, Arial, Helvetica, sans-serif”>(aparecera en al cabecera de la pagina)</font>’;
    
$form.=‘<font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”>:</font></b></td>’;
    
$form.=‘<td width=”50%”><textarea name=”description” type=”text” id=”name” rows=”5″ cols=”30″></textarea></td></tr>’;
    
$form.=‘<tr><td width=”50%”><b><font size=”2″ face=”Verdana, Arial, Helvetica, sans-serif”><font color=”#666666″>Archivo*</font>:</b></font></td>’;
    
$form.=‘<td width=”50%”><input name=”phpfile” type=”file” id=”phpfile”></td></tr></table></td></tr>’;
    
$form.=‘<tr><td><center><input type=”submit” name=”Submit” value=”Enviar”></center></td></tr></table></form>’;
    
$form.=‘</BODY>’;
    
$form.=‘</HTML>’;
    
//</HTML>
    
    
print $form

;
    exit;
}
//Chequea una o varias extensiones, $ext es un array en forma $ext[numero_indice]=extension;
function check_extension($file,$ext)
{
    
$extsfile=explode(“.”,$file);
    
    if(
preg_match(“/(“.join(“|”,$ext).“)/i”,array_pop($extsfile)))
    {
        return 
1

;
    }
    return 0

;
}
//Checa el campo name
function check_form_name()
{    
    
//Checamos el nombre del archivo, si no lo hay le damos el nombre que tenia el php
    
if(empty($_REQUEST[‘name’]))
    {
        
$file_uploaded=explode(“.”,$_FILES[‘phpfile’][‘name’]);
        
        
$_REQUEST[‘name’]=“”;
        
        for(
$i=0;$i<count($file_uploaded)-1;$i++)
        {
            
$_REQUEST[‘name’].=$file_uploaded[$i

];
        }
    }
}
//Funci?n para colorear el codigo y lincar als funciones (sacada de pastebin.com) modificada por ZydRick y Jusepe (Gracias por la ayuda, no era tan dificil :P)
function highlight($code
{
    global 
$phpversion,$php_linked;
    
    
//get php to do the hard work 
    
$code highlight_string($code,true);
    
    

// Hyperlink keywords – we could have a table or array or 
    // interesting keywords, but that would be a bit laborious. 
    // Instead, we just for things that look like function calls… 
    // this has the downside that it links 
    // user defined functions too, but what the hell. It’s only 
    // a few lines of code…. 
    $keycol=ini_get(‘highlight.keyword’);
    
    if(
$php_linked 0)
    {
        if(
$phpversion 5)
        {
            
$code=preg_replace(
            
//match a highlighted keyword
            
‘{([\w_]+)(\s*</font>)’.
            
//followed by a bracket
            
‘(\s*<font\s+color=”‘.$keycol.‘”>\s*\()}me’,
            
//and replace with manual hyperlink
            
“linkphp(‘$1’)”$code);
        }
        else {
            
$code=preg_replace(
            
//match a highlighted keyword
            
‘{([\w_]+)(\s*</span>)’.
            
//followed by a bracket
            
‘(\s*<span\s+style=”color: ‘.$keycol.‘”>\s*\()}me’,
            
//and replace with manual hyperlink
            
“linkphp(‘$1’)”$code

);
        }
    }
    return $code

;
}
//Funci?n que evita que se linque una funci?n hecha por el usuario; hecha por Jusepe
function linkphp($var1)
{
    global 
$functions$phpversion$php_manual_lang;
    
    
$manual=http://www.php.net/manual-lookup.php?lang=&#8217;.$php_manual_lang.‘&amp;pattern=’;
    if (
in_array($var1$functions))
    {
        return 
‘<a class=”code” title=”View manual page for ‘ $var1 ‘” href=”‘ $manual $var1 ‘”>’ $var1 ‘</a>(‘;
    }
    else {
        return 
$var1 ‘(‘

;
    }
}
//Funci?n para crear el nuevo codigo html del fichero con el codigo coloreado
function create_html($filename,$type=0)
{
    global 
$AddOptionCopy$fnln$print$phpversion$bodystyle$tablecode$tablestyle$created_description$nln$sepcodeln;
    
    
//Sacamos el contenido del fichero
    
$content=file_get_contents($filename);
    
    
//Extraemos las lineas del script
    
$content=highlight($content

);
    if($type == || $type == 3)
    {
        
$lines=explode(‘<br />’,$content);
    
        
//Iniciamos el nuevo fichero con el codigo coloreado
        
$cont=‘<HTML><HEAD><TITLE>’.$_REQUEST[‘title’].‘</TITLE>’;
        
$cont.=‘<style><!–‘;
        
$cont.=‘body {‘.$bodystyle.‘}’;
        
$cont.=‘table {‘.$tablestyle.‘}’;
        
$cont.=‘.tableln {background: ‘$fnln .‘}’;
        
$cont.=‘.tablecode {‘.$tablecode.‘}’;
        
$cont.=‘.font2 {color: ‘.$nln.‘}’;
        
$cont.=‘–></style></head>’;
        
$cont.=‘<BODY>’;
        
        if(
$created_description 0)
        {
            
$cont.=‘<table width=”100%” border=”1″ cellpadding=”0″ cellspacing=”0″ bordercolor=”#666666″>’;
            
$cont.=‘<tr><td>&nbsp;&nbsp;&nbsp;’;
            
$cont.=‘Archivo:&nbsp;’.$_FILES[‘phpfile’][‘name’].‘<br>&nbsp;&nbsp;&nbsp;’;
            
$cont.=‘Tama?o:&nbsp;’.$_FILES[‘phpfile’][‘size’].‘&nbsp;bytes<br>&nbsp;&nbsp;&nbsp;’;
            
$cont.=‘Ultima modificaci&oacute;n del PHP:&nbsp;’.date(“d/m/Y H:i:s”,fileatime($filename)).‘<br>&nbsp;&nbsp;&nbsp;’;
            
$cont.=‘Descripci&oacute;n:&nbsp;’.$_REQUEST[‘description’].‘</td></tr>’;
            
$cont.=‘</table>’;
            
$cont.=‘<br><br>’;
        }
        
        
$cont.=‘<table width=”100%” border=”0″ cellpadding=”0″ cellspacing=”0″ class=”tablecode”>’;
    
        
//Definimos $span, para evitar errores
        
$span=;
        
        
//Definimos el fin de las etiquetas
        
($phpversion 4)?($fnstamp=‘</span>’):($fnstamp=‘</font>’);
    
        
//Escribimos el php coloreado en el fichero
        
for($i=0,$l=1;$i<count($lines);$i++,$l++)
        {
            
$line=$lines[$i

];
            if( eregi(‘<font’,$line) || eregi(‘<span’,$line) )
            {
                
$cont.=‘<tr><td align=”right” valign=”top” class=”tableln”><span class=”font2″>’$l .‘</span></td><td>’$sepcodeln $span $line $fnstamp .‘</td></tr>’;
    
                
//Optenemos el ultimo color usado en funci?n de la versi?n de PHP
                
if($phpversion 4)
                {
                    
//Extraemos el ultimo <span> para que no haya errores de color
                    
$pos1=strrpos($line,‘<span’);
                    
$substr1=substr($line,$pos1);
                    
$pos2=strpos($substr1,‘>’)+1;            
                    
$span=substr($line,$pos1,$pos2);
                    
//Fin de la extraci?n
                
}
                else {
                    
//Extraemos el ultimo <font> para que no haya errores de color
                    
$pos1=strrpos($cont,‘<font’);
                    
$substr1=substr($cont,$pos1);
                    
$pos2=strpos($substr1,‘>’)+1;            
                    
$span=substr($line,$pos1,$pos2);
                    
//Fin de la extraci?n
                
}
            }
            else {        
                
$cont.=‘<tr><td align=”right” valign=”top” class=”tableln”><span class=”font2″>’ $l .‘</span></td><td>’$sepcodeln $span $line $fnstamp .‘</td></tr>’;
            }
        }
    
    
        
//Cerramos el html
        
$cont.=‘</table>’;
            
//Checamos si a?adir ‘Imprimir Pagina y Copiar codigo
            
if($print 0)
            {
                
$cont.=‘<br><br><br>’;
                
$cont.=‘<center><BUTTON onClick=”print()”>Imprimir</BUTTON><br></center>’;
            }
        
$cont.=‘</body></html>’;
    }
    else {
        
$cont=$content

;
    }
    //Devolvemos $cont
    
return $cont

;
}
//Pone la nueva configuraci?n en el php.ini para el color del codigo
function set_ini_config()
{
    global 
$string$comment$html$keyword$background$default

;
    //Ponemos los colores por defecto con ini_set
    
ini_set(‘highlight.string’,$string);
    
ini_set(‘highlight.comment’,$comment);
    
ini_set(‘highlight.html’,$html);
    
ini_set(‘highlight.keyword’,$keyword);
    
ini_set(‘highlight.bg’,$background);
    
ini_set(‘highlight.default’,$default

);
}
//Funci?n que fuerza la descarga de un archivo sacada de php.net
function force_download($filename)
{    
    
$ctype=filetype($filename);
    
$file=basename($filename

);
    header(“Pragma: public”);
    
header(“Expires: 0”);
    
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);
    
header(“Content-Type: $ctype”);
    
$user_agent strtolower ($_SERVER[“HTTP_USER_AGENT”

]);
    if ((is_integer (strpos($user_agent“msie”))) && (is_integer (strpos($user_agent“win”))))
    {
        
header(“Content-Disposition: filename=$file;”);
    }
    else {
        
header(“Content-Disposition: attachment; filename=$file;”

);
    }
    header(“Content-Transfer-Encoding: binary”);
    
header(“Content-Length: “.filesize($filename));
    @
readfile($filename

);
}
function create_file($content,$type=0)
{
    global 
$path;
    
    
//Antes de crear el archivo html checamos que no exista ya un fichero con ese nombre, por si als moscas :D ;)
    
if(file_exists($_REQUEST[‘name’].‘.html’))
    {
        
form(‘El archivo: ‘.$_REQUEST[‘name’].‘.html ya existe, por favor cambielo por otro nombre.’

);
    exit;
    }
    switch ($type)
    {
        case 
1:
            print 
$content;
            exit;
        break;
        
        case 
2:
            
//Ahora crearemos el nuevo archivo html con el codigo en color
            
$file_coloreated=@fopen($path.$_REQUEST[“name”].‘.html’,‘ab’);
            @
fputs($file_coloreated,$content);
            @
fclose($file_coloreated);
            
//Archivo creado y cerrado
            
            
if(file_exists($path.$_REQUEST[“name”].‘.html’))
            {
                
form(‘<center>Archivo creado.<br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=download&file=’.base64_encode($_REQUEST[“name”].‘.html’).‘” target=”_self” onclick=””>Desc&aacute;rguelo</a><br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=see&file=’.base64_encode($_REQUEST[‘name’].‘.html’).‘” target=”_self”>Vealo</a><br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=delete&file=’.base64_encode($_REQUEST[‘name’].‘.html’).‘” target=”_self” onclick=””>Eliminelo</a>’);
                exit;
            }
            else {
                
form(‘No se ha creado el archivo.’);
                exit;
            }
        break;
        
        case 
3:
            print 
$content;
            exit;
        break;
        
        default:
            
//Ahora crearemos el nuevo archivo html con el codigo en color
            
$file_coloreated=@fopen($path.$_REQUEST[“name”].‘.html’,‘ab’);
            @
fputs($file_coloreated,$content);
            @
fclose($file_coloreated);
            
//Archivo creado y cerrado
            
            
if(file_exists($path.$_REQUEST[“name”].‘.html’))
            {
                
form(‘<center>Archivo creado.<br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=download&file=’.base64_encode($_REQUEST[“name”].‘.html’).‘” target=”_self” onclick=””>Desc&aacute;rguelo</a><br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=see&file=’.base64_encode($_REQUEST[‘name’].‘.html’).‘” target=”_self”>Vealo</a><br><a href=”‘.$_SERVER[‘PHP_SELF’].‘?action=delete&file=’.base64_encode($_REQUEST[‘name’].‘.html’).‘” target=”_self” onclick=””>Eliminelo</a>’);
                exit;
            }
            else {
                
form(‘No se ha creado el archivo.’

);
                exit;
            }
        break;
    }
}

/* </FUNCIONES> */
//Por seguridad definimos error reporting y por si acaso el tiempo de ejecuci?n del PHP
error_reporting(E_ALL);
set_time_limit(0

);
//Damos los valores dados para el ini en al muestra de codigo
set_ini_config

();
//checamos si esta definida sino lo creamos para que no de errores $_REQUEST[‘action’]
if(empty($_REQUEST[‘action’]))
    
$_REQUEST[‘action’]=“”

;
//Checamos que acci?n debemos ejecutar y la ejecutamos :D
switch ($_REQUEST[‘action’])
{
    case 
‘create’:
        
//Comprobamos si se ha subido el fichero sino devolvemos el formulario
        
if(is_uploaded_file($_FILES[‘phpfile’][‘tmp_name’]))
        {
            
//Checamos si hace falta Que chequee los camposs
            
if($fileOption == 0)
            {
                
//Checamos la extensi?n del archivo
                
if(!check_extension($_FILES[‘phpfile’][‘name’],$ext))
                {
                    
form(‘El archivo tiene una extensi&oacute;n no valida.’);
                }
    
                
//Checamos si existe alguna descripci?n para el archivo
                
if(empty($_REQUEST[‘description’]))
                {
                    
$_REQUEST[‘description’]=‘No hay descripci&oacute;n para este archivo.’;
                }
    
                
//Llamamos a la funci?n que checkea el campo name
                
check_form_name();
                
                
//Checamos si hay un titulo paar el HTML
                
if(empty($_REQUEST[‘title’]))
                {
                    
form(‘Falta el titulo.’);
                    exit;
                }
                
                if(empty(
$_REQUEST[‘name’]))
                {
                    
$e=explode(‘.’,$_FILES[‘phpfile’][‘name’]);
                    
$_REQUEST[‘name’]=str_replace(‘.’.array_pop($_FILES[‘phpfile’][‘name’]),,$_FILES[‘phpfile’][‘name’

]);
                }
            }
            //Creamos el fichero o mostramos el codigo
            
create_file(create_html($_FILES[‘phpfile’][‘tmp_name’],$fileOption),$fileOption);
        }
        else {
            
form(‘No hay archivo o no se ha subido el archivo :S’

);;
            exit;
        }
    break;
    case ‘delete’:
        
//Borra un archivo
        
$file=base64_decode($_REQUEST[‘file’]);
        
settype($file,‘string’);
        
unlink($path.basename($file));
        
        
//Extraemos la url
        
$ex=explode(‘?’,$_SERVER[‘PHP_SELF’

]);
        //Muestra el mensaje
        
echo(‘<center>ARCHIVO BORRADO</center>’);
        echo(
‘<center><a href=”‘.$ex[0].‘”>Ir al formulario</a></center>’

);
        exit;
    break;
    case ‘download’:
        
//Permite descargar un archivo
        
$file=base64_decode($_REQUEST[‘file’]);
        
settype($file,‘string’);
        
force_download($path.basename($file

));
        exit;
    break;
    case ‘see’:
        
//Permite ver el archivo html mediante un include
        
$file=base64_decode($_REQUEST[‘file’]);
        
settype($file,‘string’);
        @include(
$path.basename($file));
        echo 
‘<br><br><center>ESTO YA NO FORMA PARTE DEL CODIGO, FUE A?ADIDO PARA QUE VUELVA AL FORMULARIO</center><br><center><a href=”javascript:history.back();”>Atr&aacute;s</a></center><br><br’

;
        exit;
    break;
    default:
        //Muestra el formulario
        
form(‘Los campos marcados con “*” (asterisco) son obligat&oacute;rios.<br>Se permiten las extensiones de archivo: ‘.join(‘, ‘,$ext).‘.’

);
        exit;
    break;
}
?>
 
 
 

 

Fuente: http://www.blasten.com

Patrocinado por:  www.JoyeriaVirtual.net

http://tustutoriales.info
http://minibannersx030.webcindario.com/ 

Entry filed under: HTML, Tutorial. Tags: .

Funcion Check HTML CHATEAR SIN AGREGAR AL MESSENGER

1 comentario Add your own

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Categorías


A %d blogueros les gusta esto: