Traitement de fichiers et ereg => please help !

Traitement de fichiers et ereg => please help ! - PHP - Programmation

Marsh Posté le 11-07-2002 à 09:31:04    

Est ce qqun voit ou j'ai pu faire une erreur parcekela a me prend le chou !
 
voila mon script :

$fp=fopen("cit.txt",'r');
  while($contenu=fread($fp,filesize("cit.txt" ))){
  echo $contenu;
  }
  if(eregi("Erreur",$contenu)||!(eregi("Sauvegarde terminée ",$contenu))){
  echo("<font color=\"#FF0000\" size=\"+1\">ce fichier contient une erreur</font>" );
  }
  else{
  echo("Ce fichier ne contient pas d'erreur" );
  }


et le fichier 'cit.txt' :État de la sauvegarde
Opération : sauvegarde
Destination de sauvegarde active : 4mm DDS
Nom du média : "Cit-2"
 
Sauvegarde de "C: "
Jeu de sauvegardes nº 5 sur le média nº 1
Description de la sauvegarde : "Normal"
Type de sauvegarde : Normal
 
Sauvegarde débutée le 10/07/2002 à 21:01.
Avertissement : le fichier \Program Files\EasyPHP\apache\logs\access.log est en cours d'utilisation. Il a été ignoré.
Avertissement : le fichier \Program Files\EasyPHP\apache\logs\error.log est en cours d'utilisation. Il a été ignoré.
Avertissement : le fichier \Program Files\EasyPHP\mysql\data\mysql.err est en cours d'utilisation. Il a été ignoré.
Avertissement : le fichier \Program Files\Microsoft ISA Server\ISALogs\WEBW2002072.log est en cours d'utilisation. Il a été ignoré.
Sauvegarde terminée le 10/07/2002 à 21:39.
Répertoires : 1144
Fichiers : 12042
Ignorés : 4
Octets : 1 089 964 698
Durée :  37 minutes et  55 secondes
 
----------------------
 
 
 
 
Et il me sort une erreur je capte pas pkoi :heink:


Message édité par kayasax le 11-07-2002 à 09:52:30

---------------
All we need is a soul revolution
Reply

Marsh Posté le 11-07-2002 à 09:31:04   

Reply

Marsh Posté le 11-07-2002 à 09:44:25    

c'est ce test la qui plante:
 
if(!(eregi("Sauvegarde terminée ",$contenu)))
 
alors que mon fichier contient bien cette ligne  :cry:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 11-07-2002 à 10:26:09    

Code :
  1. $texte = '';
  2. $fp = fopen('cit.txt', 'r');
  3. while ($contenu = fread($fp,filesize('cit.txt'))) {
  4. echo $contenu;
  5. $texte .= $contenu;
  6. }
  7. if(preg_match('/Erreur/i', $texte) || !preg_match('Sauvegarde terminée/i', $texte)) {
  8. echo('<font color="#FF0000" size="+1">Ce fichier contient une erreur</font>');
  9. }
  10. else {
  11. echo('Ce fichier ne contient pas d'erreur');
  12. }


Le pb est certainement dans la variable $contenu qui ne contient que la dernière ligne du fichier et non le fichier entier. Par conséquent la ligne où il y a 'Sauvegarde réussi' n'était pas là. Comme il ne trouvait pas ça le eregi() était vrai, vu qu'il était inversé ça faisait TRUE et au final le test était vrai donc ERREUR.
 
Autre chose : en général on utilise preg_*() au lieu de ereg()...  http://www.zend.com/tips/tips.php?id=107&single=1

Reply

Marsh Posté le 11-07-2002 à 10:32:56    

Merci Dost67 mais ca a pa l'air de fonctionner :

Citation :

if(preg_match('/Erreur/i', $texte) || !preg_match('Sauvegarde terminée/i', $texte)) {  

=>Warning: Delimiter must not be alphanumeric or backslash in c:\program files\easyphp\www\cit\sauvegarde\yat.php on line 17
 
if(preg_match('/Erreur/i', $texte) || !preg_match('/Sauvegarde terminée/i', $texte)) => il me trouve quand meme une erreur  
 
PS : normallement $contenu ne contient pas que la derniere ligne le meme test sur d'autre fichier fontionne... :??:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 11-07-2002 à 11:12:55    

:cry:  :cry: aidez moa !!!
 
ca marche avec les fichiers logs generes sous nt mais pas avec ceux generes sous 2000 [:sharpknife]  
 
quand j'affiche $contenu  j'ai ca en debut de fichier :ÿþ  et il ne traite pas les sauts de lignes :ouch:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 11-07-2002 à 11:13:49    

ah j'ai reenregistrer mon fichier et ca marche ! (il etait codé en unicode, je l'ai passé en ANSI ) => y a un moyen d'automatiser ca?


---------------
All we need is a soul revolution
Reply

Marsh Posté le 11-07-2002 à 12:49:25    

Oups j'ai dit n'importe quoi, je viens de m'en rendre compte : je croyais que fread() était un alias de fgets() qui ne lit qu'1 ligne.
 
Dans ce cas j'ai dit n'importe quoi mais alors pourquoi

Code :
  1. while ($contenu = fread($fp, filesize("cit.txt" ))){
  2. echo $contenu;
  3. }

alors que

Code :
  1. $contenu = fread($fp, filesize("cit.txt" ));
  2. echo $contenu;

donne la même chose ?
 
Sinon pour preg j'ai oublié un délimiteur en effet.

Reply

Marsh Posté le 11-07-2002 à 14:17:17    

ben c'est normal :
"fread() reads up to length bytes from the file pointer referenced by fp. Reading stops when length bytes have been read or EOF is reached, whichever comes first."
 
comme je lis le fichier en entier, qu'il soit dans un while ou pas c pareil...
 
 
 


---------------
All we need is a soul revolution
Reply

Marsh Posté le 12-07-2002 à 08:56:18    

:bounce:  
personne ne sait comment transformer un fichier texte unicode en ANSI ?(fonction php peut etre?)


---------------
All we need is a soul revolution
Reply

Marsh Posté le 12-07-2002 à 10:51:49    

Je crois que PHP ne connait que le code ASCII...

Reply

Marsh Posté le 12-07-2002 à 10:51:49   

Reply

Marsh Posté le 12-07-2002 à 11:20:44    


Peut-etre que ca peut t'aider :
 
http://dev.nexen.net/scripts/details.php?scripts=599

Reply

Marsh Posté le 12-07-2002 à 12:22:30    

non ca ne marche pas... :(  
merci quand meme...


---------------
All we need is a soul revolution
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed