Splitter & Sticker de fichier texte
Paramètres:
- Indiquer le nom du fichier à couper/coller
- Indiquer le chemin du dossier qui contiendra les fichiers coupés/collés (si il n'existe pas on essaie de le créer)
- Indiquer le nombre de fois que le fichier sera coupé/collé
A faire:
- Le script sera capable de splitter différents types de fichiers (.exe, .zip..)
Voilà, toutes les remarques sont les bienvenues :)
Source / Exemple :
<?php
//-----------------------------------//
// FILE SPLITTER 0.2 //
// Coder par Minimix //
// minimix92<arobase>free.fr //
// //
// Coupe/Recolle les fichiers Text //
//-----------------------------------//
/* Fonctions
------------*/
// File Get Contents
if(!function_exists('file_get_contents')){
function file_get_contents($filename){
if(! $fp = fopen($filename, 'r')) return false;
$contents = '';
$contents = fread($fp, filesize($filename));
fclose($fp);
return $contents;
}
}
// SpLiT File
function split_file($filename, $nbr_of_cut=10, $path_dst=''){
if(file_exists($filename)) # Verifie l'existance du fichier
{
echo '
<table cellpadding="5">
<tbody>
<tr align="center">
<td colspan="2"><br />
<font size="4">CouPeR <a href="'.$filename.'" target="_blank">'.basename($filename).'</a></font>
<br/>'.round(filesize($filename)/1024*100/100, 2).' Kb<br /></td>
</tr>';
if(!is_numeric($nbr_of_cut)) $nbr_of_cut = 10; # Verifie que $nbr_of_cut soit un chiffre
if($ext = explode('.', $filename)) # Verifie l'extension du fichier
{
$extension = '.'.$ext[count($ext)-1]; # $extension contient l'extension du fichier
$filesplit = str_replace($extension, '', basename($filename)); # $filesplit contient le nom du fichier sans l'extension
}
else # Sinon le fichier n'a pas d'extension
{
$extension = '.txt'; # $extension contient l'extension par défault
$filesplit = basename($filename); # $filesplit contient le nom du fichier
}
$part_size = filesize($filename) / $nbr_of_cut; # Calcul la taille du split (en octet)
$part_size = ceil($part_size); # Arrondit au nombre supérieur
$i = 0; # Initialise le compteur de fichier
if($read = fopen($filename, 'r')) # Si l'ouverture du fichier réussie
{
# Si $path_dst est vide il prend la valeur du dossier courant
if(!$path_dst) $path_dst = getcwd();
# Si le chemin du dossier cible ne fini pas par un slash (/) on l'ajoute
if($path_dst{strlen($path_dst)-1} != '/') $path_dst .= '/';
# Remplace les anti-slashs (\) par des slashs (/)
$path_dst = str_replace('\\', '/', $path_dst);
# Tente de créer le dossier cible s'il n'existe pas
if(!is_dir($path_dst) AND !mkdir($path_dst, 0777))
$path_dst = getcwd(); # Si $path_dst n'existe pas il prend la valeur du dossier courant
while (!feof($read)) # Boucle qui dure jusqu'à la fin du fichier
{
unset($contents); # Détruit la variable $contents si elle existe
$contents = fread($read, $part_size); # $contents contient $part_size octets du fichier
$i++; # Implémente le compteur de fichier
$newfile = $filesplit.'['.$i.']'.$extension; # Nomme le fichier qui va contenir $contents
$exists = 0; # Compteur si le fichier est en triple
while(file_exists($path_dst.$newfile)) # Si le fichier $newfile existe déjà
{
$exists++; # Implémente le compteur
$newfile = 'copie'.$exists.'_'.$filesplit.'['.$i.']'.$extension; # Renomme $newfile
}
if($write = fopen($path_dst.$newfile, 'w')) # Si le nouveau fichier est créé
{
# Si l'écriture réussie
if(fputs($write, $contents))
echo '
<tr align="center">
<td><a href="'.$path_dst.'/'.$newfile.'" target="_blank">'.basename($newfile).'</a></td>
<td>'.round($part_size/1024*100/100).' Kb</td>
</tr>';
# Sinon l'écriture échoue
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($newfile).' Writing Error</td>
</tr>';
fclose($write); # Fermeture du fichier $newfile
}
# Si la création de $newfile échoue
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($newfile).' Creation Error!</td>
</tr>';
} # Lecture du fichier source terminée
fclose($read); # Fermeture du fichier source
}
# Si l'ouverture de $filename échoue
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($filename).' Opening Error!</td>
</tr>';
}
# Si le fichier $filename n'existe pas
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($filename).' Not Exist!</td>
</tr>';
# Liens de retour
echo '
<tr align="center">
<td colspan="2"><a href="'.basename(__FILE__).'" target="_top">Re†our</a></td>
</tr>';
} # Fin de la fonction split
// SticK File
function stick_file($filename, $nbr_of_cut=10, $path_dst=''){
if(file_exists($filename) AND ereg("([0-9]{1,3})",$filename, $reg)) # Verifie l'existance et la validité du fichier
{
# Si $path_dst est vide il prend la valeur du dossier courant
if(!$path_dst) $path_dst = getcwd();
# Si le chemin du dossier cible ne fini pas par un slash (/) on l'ajoute
if($path_dst{strlen($path_dst)-1} != '/') $path_dst .= '/';
# Remplace les anti-slashs (\) par des slashs (/)
$path_dst = str_replace('\\', '/', $path_dst);
# Tente de créer le dossier cible s'il n'existe pas
if(!is_dir($path_dst) AND !mkdir($path_dst, 0777))
$path_dst = getcwd(); # Si $path_dst n'existe pas il prend la valeur du dossier courant
$newfile = str_replace('['.$reg[1].']', '', basename($filename)); # $newfile contient le nom du nouveau fichier
$exists = 0; # Compteur si le fichier existe
while(file_exists($path_dst.$newfile)) # Si le fichier $newfile existe déjà
{
$exists++; # Implémente le compteur
if(ereg("([0-9]{1,3})",$newfile{0}, $nbr))
$newfile = str_replace($nbr[1], '', $newfile);
$newfile = $exists.$newfile; # Renomme $newfile
}
# Si le nouveau fichier est créé
if($write = fopen($path_dst.$newfile, 'w'))
{
echo '
<table cellpadding="5">
<tbody>
<tr align="center">
<td colspan="2"><br />
<font size="4">CoLLeR <a href="'.$path_dst.$newfile.'" target="_blank">'.$newfile.'</a></font>
<br/>'.round(filesize($filename)/1024*100/100*$nbr_of_cut, 2).' Kb<br /></td>
</tr>';
$filesplit = $filename; # Nomme le fichier splitté
$i = $reg[1]; # Initialise le compteur
# Tant que le fichier splitté existe ou que le compteur soit atteint
while(file_exists($filesplit) AND $i != ($nbr_of_cut + 1))
{
if(ereg("(.*)([0-9]{1,3})(.*)",$filesplit, $reg)) # Verifie la validité du fichier
{
unset($contents); # Détruit la variable $contents si elle existe
$filesplit = $reg[1].$i.$reg[3]; # Renomme le fichier splitté
$contents = file_get_contents($filesplit); # $contents contient le du fichier $filesplit
# Sinon l'écriture réussie
if(fputs($write, $contents))
echo '
<tr align="center">
<td><a href="'.$filesplit.'" target="_blank">'.basename($filesplit).'</a></td>
<td>'.round(filesize($filesplit)/1024*100/100).' Kb</td>
</tr>';
# Sinon l'écriture échoue
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($filesplit).' Writing Error</td>
</tr>';
}
else # Sinon le fichier est invalid
{
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($filename).' Not Exist!</td>
</tr>';
break;
}
$i++; # Implémente le compteur
} # Boucle terminée
fclose($write); # Fermeture du fichier nouveau fichier
}
# Si la création de $newfile échoue
else
echo '
<tr align="center">
<td colspan="2" class="error">'.$newfile.' Creation Error!</td>
</tr>';
}
# Si le fichier $filename n'existe pas ou est incorrect
else
echo '
<tr align="center">
<td colspan="2" class="error">'.basename($filename).' Not Exist or Invalid!</td>
</tr>';
# Liens de retour
echo '
<tr align="center">
<td colspan="2"><a href="'.basename(__FILE__).'" target="_top">Re†our</a></td>
</tr>';
} # Fin de la fonction stick
/* Variables
------------*/
$submit = empty($_POST['submit']) ? '' : $_POST['submit'];
$filename = empty($_POST['filename']) ? '' : trim($_POST['filename']);
$path_dst = empty($_POST['path_dst']) ? '' : trim($_POST['path_dst']);
$nbr_of_cut = empty($_POST['nbr_of_cut']) ? '10' : trim($_POST['nbr_of_cut']);
/* Haut de page
--------------*/
echo '
<html>
<head>
<title>FiLe SpLiTTer</title>
</head>
<style>
<!--
table {
border-collapse: collapse;
border: 1px solid ##FF6600;
}
td {
color: #FFFF99;
border: 1px dashed #FFCC33;
font-family: "Lucida Console", Courier, monospace;
font-size: 15px;
font-weight: bold;
}
a {
text-decoration: none;
background-color: transparent;
font-family: "Lucida Console", Courier, monospace;
font-size: 15px;
font-weight: bold;
}
a:link, a:active {
color: #FFFFCC;
}
a:hover, a:visited {
color: #FFFF66;
}
input, .bouton {
background-color: transparent;
color: #FFFF99;
font-family: "Lucida Console", Courier, monospace;
font-weight: bold;
}
input:focus, .bouton:focus {
color: #FFFFCC;
}
input {
border: 1px inset #FFFFCC;
font-size: 14px;
}
.bouton {
cursor: pointer;
border: 1px solid #FF6600;
}
.error {
color: #FF0000;
}
//-->
</style>
<body bgcolor="#000000">
<center>
<br />';
/* SpLiT File
-------------*/
if($filename AND $submit == ' CouPeR ')
{
split_file($filename, $nbr_of_cut, $path_dst);
}
/* SticK File
-------------*/
else
if($filename AND $submit == ' CoLLeR ')
{
stick_file($filename, $nbr_of_cut, $path_dst);
}
/* Formulaire
-------------*/
else
{
echo '
<form method="POST" action="" enctype="multipart/form-data">
<table cellpadding="6">
<tbody>
<tr align="center">
<td colspan="2"><br /><font size="4">FiLe SpLi††er <i>ø.2</i></font><br /><br /></td></tr>
<tr>
<td style="border-right:0 none; border-bottom:0 none;"><br /><font class="bouton">¹</font> Fichier Søurce</td>
<td style="border-left: 0 none; border-bottom:0 none;"><br />›› <input type="text" name="filename" size="25" value="'.$filename.'" /></td></tr>
<tr>
<td style="border-right:0 none; border-bottom:0 none; border-top:0 none;"><br /><font class="bouton">²</font> Døssier Des†ina†ion</td>
<td style="border-left:0 none; border-bottom:0 none; border-top:0 none;"><br />›› <input type="text" name="path_dst" size="25" value="'.$path_dst.'" /></td></tr>
<tr>
<td style="border-right:0 none; border-bottom:0 none; border-top:0 none;"><br /><font class="bouton">³</font> Nømbre de par†ies<br /><br /></td>
<td style="border-left:0 none; border-bottom:0 none; border-top:0 none;"><br />›› <input type="text" name="nbr_of_cut" size="7" value="'.$nbr_of_cut.'" /><br /><br /></td></tr>
<tr align="center">
<td colspan="2" style="border-top:0 none;"><input type="submit" name="submit" class="bouton" value=" CouPeR " /> <input type="submit" name="submit" class="bouton" value=" CoLLeR " /><br /><br /></td></tr>
<tr align="left">
<td colspan="2">
<font class="bouton">¹</font> Chemin du fichier à couper/coller
<br />
<br />
<font class="bouton">²</font> Si le dossier n\'existe pas, il est créé
<br />
<br />
<font class="bouton">³</font> Nombre de fichiers à couper/coller
<br />
</td>
</tr>';
}
/* Bas de page
--------------*/
echo '
<tr align="center">
<td colspan="2"><br /><font size="4">Cødé par Minimix</font><br /><br /></td>
</tr>
</tbody>
</table>
<br />
<br />';
exit();
?>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.