Ecrir dans un fichier texte sans espace à la fin
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
cacao -
cacao -
Bonsoir à tous !
J'utilise ce code pour récupérer la version de mon appli et l'inscrire dans un fichier texte.
Cependant, il ajoute dans le fichier texte un long espace (sans les "") :
"1.0.82 "
Pouvez-vous m'aider à corriger ce problème svp ?
Salutations
J'utilise ce code pour récupérer la version de mon appli et l'inscrire dans un fichier texte.
<?php
define("TITRE_APPLICA", "Application - v.");
function get_product_version($file_name)
{
$key = "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00";
$fptr = fopen($file_name, "rb");
$data = "";
while (!feof($fptr))
{
$data .= fread($fptr, 65536);
if (strpos($data, $key)!==FALSE)
break;
$data = substr($data, strlen($data)-strlen($key));
}
fclose($fptr);
if (strpos($data, $key)===FALSE)
return "";
$pos = strpos($data, $key)+strlen($key);
$version = "";
for ($i=$pos; $data[$i]!="\x00"; $i+=2)
$version .= $data[$i];
return $version;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?
$fichier = "version.txt";
$fp = fopen($fichier ,"w");
$data=get_product_version("application.exe");
fseek($fp, 0);
fputs($fp, $data);
fclose($fp);
echo TITRE_APPLICA; echo get_product_version("application.exe");
$fichier = "application.exe";
function taille($fichier){
global $size_unit;
$taille = filesize($fichier);
if ($taille >= 1073741824)
{ $taille = round($taille / 1073741824 * 100) / 100 . " Go"; }
elseif ($taille >= 1048576)
{ $taille = round($taille / 1048576 * 100) / 100 . " Mo"; }
elseif ($taille >= 1024)
{ $taille = round($taille / 1024 * 100) / 100 . " Ko"; }
else
{ $taille = $taille . " o"; }
if($taille==0) {$taille="-";}
return $taille;}
echo taille($fichier);
echo get_product_version("application.exe");
$mois_fr = Array("", "de janvier", "de février", "de mars", "d'avril", "de mai", "de juin", "de juillet", "d'août", "de septembre", "d'octobre", "de novembre", "de décembre");
list($mois) = explode('/', date("n")); echo $mois_fr[$mois]; ?>
</body>
</html>
Cependant, il ajoute dans le fichier texte un long espace (sans les "") :
"1.0.82 "
Pouvez-vous m'aider à corriger ce problème svp ?
Salutations
A voir également:
- Ecrir dans un fichier texte sans espace à la fin
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Espace insécable - Guide
- Fichier epub - Guide
- Fichier rar - Guide
5 réponses
c'est pas les \x00\x00\x00 dans $key qui les ajoutes ?
cela dit, tu peux passer $data par un regexp qui vire les espaces ou aussi un trim ...
cela dit, tu peux passer $data par un regexp qui vire les espaces ou aussi un trim ...
j'ai testé ton code je n'ai pas eu d'espace à la fin...
version.txt
3, 4, 0, 1
et le résultat dans la page:
Application - v.3, 4, 0, 1-
j'imagine que la version de application.exe contient des espaces à la fin ...
Comme je l'ai dit, tu peux aussi traiter les espaces avant de l'écrire dans le fichier,
tu peux utiliser trim par exemple:
http://php.net/manual/fr/function.trim.php
ou
http://fr2.php.net/manual/fr/function.preg-replace.php
version.txt
3, 4, 0, 1
et le résultat dans la page:
Application - v.3, 4, 0, 1-
j'imagine que la version de application.exe contient des espaces à la fin ...
Comme je l'ai dit, tu peux aussi traiter les espaces avant de l'écrire dans le fichier,
tu peux utiliser trim par exemple:
fputs( $fp, trim($data) );
http://php.net/manual/fr/function.trim.php
ou
$data = preg_replace('/\s{2}/',$data);
fputs($fp, $data);
http://fr2.php.net/manual/fr/function.preg-replace.php
Merci cacao ^^
Bizarre que VB6 envois des espace à la fin de la série...
Voilà le résultat, peux tu le tester pour moi toi aussi et le valider stp ? :
Bizarre que VB6 envois des espace à la fin de la série...
Voilà le résultat, peux tu le tester pour moi toi aussi et le valider stp ? :
<?php
#################################################################
## RECUPERATION DE LA VERSION DE L'EXECUTABLE ###################
function get_product_version($file_name){
$key = "P\x00r\x00o\x00d\x00u\x00c\x00t\x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00\x00\x00";
$fptr = fopen($file_name, "rb");
$data = "";
while (!feof($fptr)){$data .= fread($fptr, 65536);
if (strpos($data, $key)!==FALSE)
break;
$data = substr($data, strlen($data)-strlen($key));}
fclose($fptr);
if (strpos($data, $key)===FALSE)
return "";
$pos = strpos($data, $key)+strlen($key);
$version = "";
for ($i=$pos; $data[$i]!="\x00"; $i+=2)
$version .= $data[$i];
return $version;}
#################################################################
## FORMATAGE DES ESPACES EN TROP ################################
function trimUltime($chaine) {
$chaine = trim($chaine);
$chaine = str_replace("t", " ", $chaine);
$chaine = str_replace("r", " ", $chaine);
$chaine = str_replace("n", " ", $chaine);
$chaine = preg_replace("( +)", " ", $chaine);
return $chaine;}
#################################################################
## CREATION ET ECRITURE DU FICHIER TEXTE ########################
$string = chr(0);
$fichier = "version.txt";
$file = fopen($fichier ,"w");
$data=get_product_version("mon_application.exe");
fseek($file, 0);
fwrite($file, trimUltime($data));
fclose($file);
#################################################################
## TAILLE DE L'EXECUTABLE #######################################
$fichier = "mon_application.exe";
function taille($fichier){
global $size_unit;
$taille = filesize($fichier);
if ($taille >= 1073741824) {$taille = round($taille / 1073741824 * 100) / 100 . " Go"; }
elseif ($taille >= 1048576) {$taille = round($taille / 1048576 * 100) / 100 . " Mo"; }
elseif ($taille >= 1024) {$taille = round($taille / 1024 * 100) / 100 . " Ko"; }
else {$taille = $taille . " o";}
if($taille==0) {$taille="-";}
return $taille;}
#################################################################
## ET VOILA LE RESULTAT #########################################
echo "Mon Application - v.<br />";
echo $data."<br />";
echo taille($fichier);
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question