Copy functie voor windows en *NIX
Auteur: stijn1989 + siliecom14 - 15 maart 2007 - 18:16 - Gekeurd door: Stijn - Hits: 2889 - Aantal punten: 3.00 (3 stemmen)
Dit script hebben ik en stijn gemaakt (stijn heeft de functie gemaakt, en ik de uitbreiding)
Quote stijn:
Omdat de functie soms vervelend doet in Windows (over toegang e.d.) heb ik een variantie gemaakt.
Quote ik:
Stijn, je hebt uitstekend een alternatief gemaakt Alleen vond ik wel dat als men een bestaand file niet wilt overschrijven, dat er dan een kopie moet komen, net zoals windows. bestand.extentie word dan bestand(2).extentie. bestand(2).extentie word dan bestand(2)(3).extentie
|
Code: |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* index file
*
* @license http://www.gnu.org/licenses/gpl.html
* @author Stijn Leenknegt <stijnleenknegt@gmail.com>
* @modified_by Ibrahim Abdullah <pm_me@sitemasters.be>
* @version Versie 1.1
* @package PHP
*/
// full error reporting
error_reporting(E_ALL);
function copy_file( $file , $new_file , $overwrite = true )
{
if( !file_exists( $file ) )
{
return false;
}
//originele file bestaat
$fp = fopen( $file , 'r' );
//lees de inhoud van het bestand in een variable en sluit het bestand
$content = fread( $fp , filesize($file) );
fclose( $fp );
//eerst gaan we controleren of die nieuwe file al dan niet bestaat
//$overwrite = true ? dan verwijderen we die gewoon
if( file_exists( $new_file ) && $overwrite === true )
{
unlink( $new_file );
}
elseif( file_exists( $new_file ) && $overwrite === false )
{
// niet overwriten, dus ff bestand renamen (net als windows)
$explode = explode('.', $new_file );
$new_file = '';
foreach( $explode as $key => $value )
{
if( $key == (count( $explode ) - 2) )
{
if(preg_match('~\((\d)\)$~', $explode[$key], $results))
{
$new_file .= $value . '('. ($results[1] + 1) .').';
}
else
{
$new_file .= $value . '(2).';
}
}
else
{
if( $key == (count( $explode ) - 1) )
$new_file .= $value;
else
$new_file .= $value . '.';
}
}
if( file_exists( $new_file ) )
copy_file( $file, $new_file, false );
}
//we gaan nu het nieuwe bestand aanmaken
$fp = fopen( $new_file , 'w' );
//kopieren de data en sluiten het
fwrite( $fp , $content );
fclose( $fp );
return true;
}
##################
# VOORBEELD #02 #
##################
copy_file( './string.php' , './testjes/test/test/string.php' , false );
?>
<?php /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * index file * * @license http://www.gnu.org/licenses/gpl.html * @author Stijn Leenknegt <stijnleenknegt@gmail.com> * @modified_by Ibrahim Abdullah <pm_me@sitemasters.be> * @version Versie 1.1 * @package PHP */ // full error reporting function copy_file( $file , $new_file , $overwrite = true ) { { return false; } //originele file bestaat $fp = fopen( $file , 'r' ); //lees de inhoud van het bestand in een variable en sluit het bestand //eerst gaan we controleren of die nieuwe file al dan niet bestaat //$overwrite = true ? dan verwijderen we die gewoon { } elseif( file_exists( $new_file ) && $overwrite === false ) { // niet overwriten, dus ff bestand renamen (net als windows) $explode = explode('.', $new_file ); $new_file = ''; foreach( $explode as $key => $value ) { if( $key == (count( $explode ) - 2) ) { if(preg_match('~\((\d)\)$~', $explode[$key], $results)) { $new_file .= $value . '('. ($results[1] + 1) .').'; } else { $new_file .= $value . '(2).'; } } else { if( $key == (count( $explode ) - 1) ) $new_file .= $value; else $new_file .= $value . '.'; } } copy_file( $file, $new_file, false ); } //we gaan nu het nieuwe bestand aanmaken $fp = fopen( $new_file , 'w' ); //kopieren de data en sluiten het return true; } ################## # VOORBEELD #02 # ################## copy_file( './string.php' , './testjes/test/test/string.php' , false ); ?>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|