$file est un fichier et is_file($file) renvoie false ???

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2008, 14:58

Bonjour,

Migrant les innombrables fichiers HTM et PHP d'un site d'ISO-8859-1 en UTF-8,
je me suis dit : je vais me bricoler une moulinette pour encoder toutes ces pages.

Voici ci-dessous le script en question... qui ne fonctionne pas.

Il se trouve que pour tous les fichiers
(pourtant bien identifiés lors du scan du dossier iso)
is_file($file) renvoie false. :shock:

Pourquoi mes fichiers ne sont-ils pas reconnus ?
<table>
<?php
$handle = opendir('iso');
while ($file = readdir($handle))
      { if (is_file($file)) // <------------------------------ renvoie FALSE ???
           { $extension = substr($file, -3, 3);
             if ($extension=='php' || $extension=='htm')
                { echo '<tr><td>'.$file.'</td>'."\n";
                  $contenu = file_get_contents($file);
                  if ($contenu)
                     { $contenu_new = html_entity_decode($contenu,ENT_NOQUOTES,'UTF-8');  // convertit les "&eacute;" en "é"
                       $contenu_new = utf8_encode($contenu_new);                          // convertit les "é" ISO en "é" UTF-8
                       $ecriture = file_put_contents('utf8'.$file,$contenu_new);
                       echo '<td>'.($ecriture ? 'OK' : '-----').'</td></tr>'."\n";
                     }
                     else
                     { echo '<td>Conversion non effectuée</td></tr>'."\n";
                     }
                }  
           }
      }
closedir($handle);
?>
</table>

ViPHP
ViPHP | 2287 Messages

01 nov. 2008, 15:06

Remplace :
      { if (is_file($file)) // <------------------------------ renvoie FALSE ???
Par :
      { if (is_file('iso/'.$file)) // mieux non ?
C'est une erreur très courante qu'on rencontre à peu près une fois par mois sur le forum ;-) opendir() ouvre le répertoire en lecture mais ne rentre pas dans ce répertoire (il faudrait pour cela un chdir() ). Ton script continue à opérer depuis son répertoire d'éxécution, ce qui impose dans ta boucle de préfixer les chemins par le répertoire racine de ton parcours.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 5924 Messages

01 nov. 2008, 15:14

T'aurais dû le faire en Perl, tu te serais moins fait chier :mrgreen:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2008, 15:22

:oops:

Merci, merci, merci ! :agenouille:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2008, 15:23

T'aurais dû le faire en Perl, tu te serais moins fait chier :mrgreen:
Sans doute, mais mon niveau en Perl est... :-*
Et puis, je ne suis pas inscrit sur PerlFrance ! :langue:

Taquin, va ! ;)

ViPHP
ViPHP | 4039 Messages

01 nov. 2008, 18:00

T'aurais dû le faire en Perl, tu te serais moins fait chier :mrgreen:
+++

:twisted:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.