IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

parcourir la racine de mon site et traiter les PHP ayant un BOM en restant UTF8


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut parcourir la racine de mon site et traiter les PHP ayant un BOM en restant UTF8
    Bonjour, je sais lire la racine de mon site, éditer tout les PHP
    mais en fait mon but, ayant 300 PHP est d'en retirer les BOM s'ils sont présents
    tout en restant en UTF8

    Je ne sais exactement comment faire pour modifier ce code, en particulier :

    1) Faut'il déclarer que mon PHP est UTF8 et ou dans mon code
    2) j'ais mis un str_replace "bidon" mais c'est sans doute la que je peux pister ce BOM ?

    Ou faut'il faire totalement différement

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <html>
    <body>
    <p align="center">
    <?PHP 
    //============lire le repertoire===============================
    $data = glob('*.php'); 
    $LesFichiers = array();
    $LesX = array(); 
    $Nbr=0;
    $i = 0; 
    $nomactu="";
    foreach( $data as $filename)
      {
        if (is_file($filename) )
         {
           $LesFichiers[$i] = $filename;
           $nomactu= $LesFichiers[$i];
          //============a chaque php le lire=================
          $wwork=file($LesFichiers[$i]);
          $nbli=count($wwork)-1;
          $C_ou=0;
         /* ON ENTRE DANS LE TEXTE DE CHAQUE FICHIER */
          for($zx=0;$zx<=$nbli;$zx++)
           {
            $wwork[$zx]=str_replace("nimportequoi","nimportequoi si besoins",$wwork[$zx]);
             $LaSuite[$C_ou]=$wwork[$zx];
             $C_ou=$C_ou+1;
         }
     
          // ============ecrire fichier resultat=======
          $LeFichier=fopen($nomactu,"w+");
          for($compt=0;$compt<$C_ou;$compt++)
           {
            $LeTexte=$LaSuite[$compt];
            fputs($LeFichier,$LeTexte."");    
           }
          fclose($LeFichier);
          echo ("fichier ".$nomactu."<br />");
          /* FIN DE L INTERRIEUR D UN FICHIER */
         }
     }
    echo ("TERMINE<br />");
    ?>
    <br /></p>
    </body>
    </html>

    Mille mercis d'avance

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 857
    Points : 6 555
    Points
    6 555
    Par défaut
    Si ton php est configuré en UTF-8 (default_charset = "utf-8" dans php.ini), il n'a pas de raison de convertir tes fichiers en quoi que ce soit d'autre après lecture et réécriture.

    Mais pour être sûr de ne pas faire de bêtises, fait tout de même des tests "à blanc" sur un répertoire de test avec des fichiers pleins d'accents et de caractères spéciaux pour t'assurer du résultat.

    Maintenant, je ne comprends pas pourquoi tu utilises php pour faire ça. Tu devrais plutôt passer par sed:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i .bak '1 s/^\xef\xbb\xbf//' *.php
    Une fois que tu es sûre du résultat, retires le .bak.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de ta réponse, mais je ne peux réaliser ta commande,
    Par ailleur, sur les 50 sites que j'ais réalisé, nombreux sont anciens et étaient avec un
    encodage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    Tu sais la majeure parti des très gros sites auraient trop de travail à tout basculer en UTF8 !
    donc comprends bien que je demande de l'aide pour réaliser cela SANS PLUS !
    faut'il mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
    ?>
    Tu sais sur les serveurs nous ne pouvons pas toujour obtenir de toucher au php.ini.
    Et si non il me faut peut'étre par les expressions réguliéres retirer ou détecter le BOM.

    Voila ma demande l'Ami

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 857
    Points : 6 555
    Points
    6 555
    Par défaut
    <?php header('Content-type: text/html; charset=UTF-8'); ?> est sans rapport avec l'encodage d'un fichier source php. C'est une entête destinée au navigateur pour lui indiquer ce que tu vas lui envoyer.

    Si tu veux faire la substitution via un code php, dans ce cas utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = preg_replace('~\A\xef\xbb\xbf~', '', $content);
    $content désigne soit l'intégralité du fichier, soit sa première ligne (suivant comment tu choisis de lire le fichier).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Invité
    Invité(e)
    Par défaut
    Super ça va marcher pour le BOM !
    Pour le reste comme tu le dis exactement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header( 'content-type: text/html; charset=utf-8' );
    Dis en français AU PHP tu dois envoyer du UTF8 ça je connais ça par coeur
    donc nous sommes d'accord sur ce deuxième point,
    si je veux qu'il envoie de l'UTF8 je dois donc mettre cela en tête de mon PHP !
    (Heu... bien sur envoyer à un client ou écrire dans un fichier étant strictement identique comme contrainte

    A bientôt et merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le chemin de la racine de mon site en local
    Par dalalbay dans le forum Langage
    Réponses: 2
    Dernier message: 14/08/2012, 15h58
  2. php.ini (partiel) a la racine de mon site
    Par Invité dans le forum Apache
    Réponses: 1
    Dernier message: 11/12/2010, 14h51
  3. Dossier externe à la racine de mon site
    Par alejandro dans le forum Apache
    Réponses: 5
    Dernier message: 22/11/2009, 19h16
  4. mails envoyé depuis mon site vont dans les spams de gmail
    Par lysandre dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/01/2008, 10h32
  5. Racine de mon site web
    Par Poussy-Puce dans le forum ASP.NET
    Réponses: 6
    Dernier message: 22/01/2007, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo