Auto_UTF8: L'encédeur de ptits lots (MAJ avec formulaire)

En ce moment, je suis sur un projet perso d'évaluation du socle commun, Nème version, que je débuggue à mort en reprenant à zéro des portions entières qui avaient souffert du syndrome dit du "patchage à la va vite comme un gros porc"... Vu que l'encodage n'avait pas été ma priorité principale et que j'avais codé sur plein de bécanes différentes et plein d'IDE différents, j'avais une majorité de pages encodées en ANSI (beurk).

Donc, avant de me lancer dans un glisser-déposer-menu-encoder en UTF8-sauver frénétique avec notepad++, je me suis dit que je gagnerais du temps à me bidouiller un script qui me fasse le taf comme un grand...

 

 

 


Encore un truc dont on va me dire : 

  1. que c'est codé en mode gros noob
  2. qu'il existe une fonction cachée et non documentée de php qui le fait
  3. que, oui, d'accord, mais ce serait mieux en python,
  4. que, ok, j'veux bien, mais une classe, c'était plus élégant,
  5. qu'en fait plus personne utilise foreach, vu qu'avec array_map et une jolie fonction callback ça fait plus mec genre qu'il maîtrise...
  6. qu'il faut être vraiment C** pour s'e*****er à coder un truc tout pourri alors qu'en se faisant un joli plug-in pour notepad++, on pouvait automatiser la tâche...

Oui, c'est vrai, mais SebSauvage a dit qu'il fallait partager même les bouts de code qui semblent... ben... comme celui-là...

Et moi, j'aime beaucoup SebSauvage

 

 

Hé ho ! C'est mon rôle de te poignarder le fion, normalement, non ?
En plus, tu m'as piqué tous mes arguments... 

Sans compter que si SebSauvage avait imaginé une seconde qu'on le citerait pour justifier une daube pareille, il se serait fait plombier-zingueur... je pense.

 

En voilà une bonne nouvelle... tu penses. Fais gaffe quand même... au claquage...

 

 

Boarf un claquage du cerveau... pfff

 

Non, je faisais plutôt référence au claquage de ta face si tu jartes pas dans les 7 secondes...

 

 


 

Je ne me suis pas embêté a goupiller un petit formulaire (c'était un truc fait à la va-vite) et je l'ai utilisé en mode viril et poilu: directement dans la barre d'adresse façon "ligne de commande" ...

Pour la mise à jour, je vous ajoute un form, promis

Ayéééééééééééééé !  Vu que pour mercredi prochain, j'ai concocté un autre truc très utile et que j'ai dû faire un formulaire, je l'ai adapté à auto_UTF8... Si des virils préfèrent la version sans formulaire, je la laisse  

 

Donc, pour faire simple, vous collez le fichier auto_utf8.php à la racine du site et vous lui passez en get f=le dossier à traiter ou alors, vous le collez directement dedans et vous le lancez...   remplissez le chti formulaire si besoin.

Il va changer l'encodage de tout ce qui n'est pas une image en qui n'est pas trop gros... PAF ! utf8 sans BOM dans ta gu*** !

 


 

Pour ceux qui voudraient me poutrer sans se casser le joufflu à télécharger le php, je vous le copiecolle là C'est la version sans formulaire, mais le fonctionnement est le même:

<?php
/* 
VERSION SANS FORMULAIRE -
Force l'encodage de tous les fichiers du dossier en utf8 si nécessaire
Utile quand il y a plein de fichiers mal encodés dans ton projet... 
par défaut, il traite les fichiers présents dans le même dossier, si
on précise en get la variable ?f=folder, il traite ce dossier... 

par Bronco@warriordudimanche.net www.warriordudimanche.net Libre, gratuit et inodore ^o^

*/

if (isset($_GET['f'])){$dossier=$_GET['f'].'/';}else{$dossier='';}

function return_UTF8($chaine){ $utf8=str_replace("\xef\xbb\xbf", '',utf8_encode($chaine));// SANS BOM !!!! if (strpos($utf8,'Ã')){return $chaine;}else {return $utf8;}// bon, là, on peut sans AUCUN doute mieux faire ^o^ } function exclude_folder_large_or_image($file){ if (!is_file($file)){return false;} if (filesize($file)>1000000){return false;} if (preg_match_all('/(?<=.)mp3|mp4|flv|jpeg|jpg|gif|png|swf/i',$file,$puits)){return false;} return true; } $files=glob($dossier); foreach($files as $file){ if (exclude_folder_large_or_image($file)!=false){

    $content=file_get_contents($file);
    $content2=return_UTF8($content);

    if ($content2!=$content){
        echo '<li>conversion de '.htmlentities($file).'</li>';              
        file_put_contents($file,$content2);
    }
}

} ?>


 

Sinon, on récup la version avec formulaire via le joli lien que voilà  et la version sans formulaire (avec des paramètres en GET) par ce lien-ci

 

 

❝ 5 commentaires ❞

1  Yosko le

Si ça peut te rassurer, je l'aurais fait exactement comme ça. Mais tu as sans doute bien fait de sortir tous les contre-arguments avant que quelqu'un te tombe sur le coin du pif.

 
2  Bronco le

Haaaa ! là tu me fais très plaisir
Au passage, j'aime bcp la nouvelle coloration syntaxique sur to blog

 
3  JeromeJ le

Comment tu prends tes précautions :o comment tu sais tout ce qu'on va te dire, comment tu nous coupes les herbes sous le pied !


Mais t'es quand même trop dur avec toi même :p


Ceci dit mes messages ne seraient pas complets sans une petite remarques ou deux




  1. Tu n'utilises pas $ext que tu récupères ligne 22 :)




  2. Ça ne fait pas de mal à un panda de le faire mais tu sais que le 3ème argument de preg_match_all est facultatif ? :p




  3. Bon ce problème vient de moi mais le "!= false" me perturbe :( t'peux pas mettre un simple "!" devant comme tous le monde!? c'pas comme si tu testais une inégalité stricte alala




  4. Belle faille XSS ligne 36 :D I'm love in it! (au moins un htmlspecialchars pour les gens qui ont du contenu users uploaded sur leur site )




  5. On t'aime tous quand même malgré tout ce qu'on pourrait redire sur tes magnifiques codes, tu m'en veux pas hein ? :p




  6. Moi aussi j'essaie de souvent ressortir celle là de sebsauvage :)




Bon, ton code était trop court pour que je fasse beaucoup de remarques pertinentes :( pardon


En tout cas, bien pratique surtout quand on a lancé un gros projet en AINSI et jamais pris le temps de corriger le tir :)


Il ne me reste plus qu'à râler à propos de PHP qui gère très mal l'UTF8 (j'avais vu un super article là dessus mais je ne saurais plus dire où! (une petite recherche sur le net devrait suffire)).


Ah et je crois que ta solution antispam pour ton adresse email (qui est pas mal, soit dit en passant ) foire dans la balise code :p y a du méchant javascript qui s'affiche en raw, j'ai d'abord cru que c'était présent comme ça dans tes sources (ça l'est pas hein ?)

 
4  Bronco le

Bon j'ai corrigé



  1. en effet tu sais ce que c'est, tu essaies plein de trucs et d'approches différentes et des fois, ya une vieille ligne que t'as oublié de virer Ben c'est celle-là !

  2. on s'en fout !

  3. celle-là je l'ai laissée UNIQUEMENT pour tes yeux

  4. C'est une 'mini app' qui est censée être déposée sur ton serveur, utilisée PAR TOI puis virée sans pitié une fois le taf accompli
    Pour qu'une faille en soit vraiment une, il faut qu'elle ait une chance d'être exploitée

  5. Maaaaaiiiiiisss nooooooon, je t'en veux pas (cesse donc de t'excuser tout le temps )

  6. ...


L'antispam fait partie des trucs à reprendre sur le site (je note tous les mails et comms en ce sens pour une maj future merci à tous pour les avis de USER et le débug )

 
5  AlexaPius27 le

Je vous remercie pour cette info, c'est exactement ce que je cherchais !!

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le deuxième caractère du mot cbn6f41 ?