L'appartement

Aller au contenu | Aller au menu | Aller à la recherche

Le PHP

Ici on parle aussi bien de Mysql, de PHP que de HTML en passant par CSS et Ajax. Pas très logique mais bon

Fil des billets - Fil des commentaires

mardi, juillet 5 2005

Tidy, ton extension est formidable

Je suis plus que ravi d'avoir découvert cet outils qui permet de corriger les petites erreurs de syntaxe XHTML, d'indenter correctement le code, de supprimer les commentaires HTML, de nettoyer du code Word 2002 (enfin presque) ect... Ce n'est pas non plus une solution miracle (non, Tidy ne fait pas la café) et rien n'y fera si vous avez vraiment codé comme un vilain avec un M$ Frontpage d'avant-guerre.

Ainsi, et tout de même, tout un site de publication de contenu peut vite devenir "Full XHTML compliant" même si le code n'était pas des plus parfait au départ ou suite à la saisie fantaisiste de quelques rédacteurs zélés.

Cerise sur le W3C, SPIP, mon CMS préféré du moment, intègre dans sa version 1.8 la correction des pages via cette fameuse extension Tidy. On peux l'utiliser au choix en extension PHP ou en ligne de commande (puisque l'outil en question est à la base un correcteur syntaxique en ligne de commande).

Je vous laisse admirer sur le site spatial-modelling.info qui tourne sous SPIP, le maaaagnifique code source bien indenté par la version de Tidy en ligne de commande. Est-ce lent ? Absolument pas car pour le cas de ce système de gestion de contenu, la sortie est ensuite directement mise en cache !

Alors, la question vous brûle les lèvres : pour une utilisation de Tidy sur son propre site en PHP, comment faire ? Attention, c'est du tutorial ultra rapide qui ne remplace pas une bonne lecture de la page de PHP et des options de Tidy.

Il faut tout d'abord posséder l'extension PHP qui va bien ou l'outil en ligne de commande (apt-get install tidy sous Debian ou Ubuntu fera l'affaire). Pour le cas de l'extension, elle disponible pour PHP5 mais reste un petit peu bricolage pour PHP4 et j'ai. Une installation via le PEAR repository est aussi envisageable. je vous renvois à la page du manuel PHP, assez bien faîtes à ce sujet.

Ensuite, si vous n'avez pas le courage de modifier toutes vos pages proprement codé en PHP ou en HTML, voici un petit truc dont le but est de placer tout le contenu de votre page dans un "buffer".

En début de page on place un ob_start pour mettre le contenu qui suit dans un buffer. On peux éventuellement utiliser l'option gzip tant qu'on y est, afin de renvoyer des pages compressées à un navigateur moderne (ne comptez pas sur vos clients en Netscape 4 pour le comprendre). A la fin du code, un ob_get_clean nous permet de récupérer le contenu du buffer dans une variable. Il suffit ensuite de passer tout ça à Tidy pour qui il nous le corrige et un echo servira le résultat et... Ohhh la belle page qui valide :)

Voici donc un petit résumé de l'exemple :

J'ai mis tout le "nécessaire de nettoyage" dans une fonction. Des problèmes avec les caractères Word m'ont obligés à ajouter le remplacement des caractères en question. J'ai également supprimé un élément xml ajouté par Tidy et dont je ne voit pas bien l'utilité :

<?php
 // Tidy configuration
 $config_tidy = array('indent'=> true,
                                 'indent-spaces'=> 2,
                                 'output-xhtml' => true,
                                 'wrap' => 0,
                                 'add-xml-decl'=> false,
                                 'output-encoding'=> latin1,
                                 'input-encoding'=> latin1,
                                 'quote-nbsp' => false,
                                 'show-body-only' => false);

 foreach ($config_tidy as $key => $value) {
              tidy_setopt($key,$value);
 }

 // nettoyage du code
 function tidycleaner($html) {
   
    // problème avec M$ Word
    $conv = array(
     chr(129) => '',
     chr(130) => '&#8218',
     chr(131) => '&#402;',
     chr(132) => '&#8222;',
     chr(133) => '&#8230;',
     chr(134) => '&#8224;',
     chr(135) => '&#8225;',
     chr(136) => '&#710;',
     chr(137) => '&#8240;',
     chr(138) => '&#352;',
     chr(139) => '&#8249;',
     chr(140) => '&#338;',
     chr(141) => '',
     chr(142) => '',
     chr(143) => '',
     chr(144) => '',
     chr(145) => '&#8216;',
     chr(146) => '&#8217;',
     chr(147) => '&#8220;',
     chr(148) => '&#8221;',
     chr(149) => '&#8226;',
     chr(150) => '&#8211',
     chr(151) => '&#8212;',
     chr(152) => '&#732;',
     chr(153) => '&#8482;',
     chr(154) => '&#353;',
     chr(155) => '&#8250;',
     chr(156) => '&#339;',
     chr(157) => '',
     chr(158) => '',
     chr(159) => '&#376;'
     );
     
     tidy_parse_string($html);
     tidy_clean_repair();
     $html = tidy_get_output();
 
     // on remplace les caracteres M$ Word
     $html = str_replace(array_keys($conv),array_values($conv),$html);
     
     // syntaxe xml à supprimer
     $html = ereg_replace ("\<\?xml([^\>]*)\>", "", $html);
     
     return $html;
 }
?>

Voici une page type avec l'introduction de la fonction tidycleaner :

<?php
 // debut du buffer
 ob_start(gzip);
 
 // ...
 // contenu de la page, traitement divers et tout le toutim...
 // ...
 
 // fin du buffer, dans une variable et ensuite affichage de la page
 $html = ob_get_clean();
 echo tidycleaner($html);
?>
<?php echo 'test'; ?>

Pour éviter la lourdeur éventuel du traitement par Tidy, il est bien entendu fortement conseillé d'utiliser un système de cache ! Alors ? ça valide partout !?

lundi, octobre 11 2004

Ton serveur c'est Simple comme EasyPHP

Même si pour ma part je code sous Linux, on peut toujours le faire sous Windows ;)

Ce petit post est plutôt pour les débutants. Il est en fait parti d'un message où j'expliquais à quelqu'un comment mettre en local sur son portable, pour une démonstration, un site sous SPIP que j'avais réalisé.

Pour développer sous Windows en php, il faut bien évidemment un serveur (Apache tant qu'à faire), un serveur Mysql et l'interpréteur PHP. Beaucoup utilisent Easy PHP. Je fais un petit récapitulatif pour ceux qui aurait quelques difficultés entre Easy PHP et le serveur de leur hébergeur qui est souvent configurer différement.

Lire la suite...

mardi, juin 22 2004

PEAR encore et toujours plus fort

J'ai déjà abordé rapidement PEAR dans un autre billet. Je ne cesse d'admirer toute les possibilités offertes par les bibliothèques d'objets de PEAR. Voici les dernières perles que j'ai dégotées sur pear.php.net

  • HTML_Quickform : ou comment réaliser des formulaires complets en 5 minutes. Tout y est, de la validation javascript à la compatibilité XHTML
  • HTML_Progress : vous avez déjà réussi à réaliser une barre de progression pour l'upload de fichiers en PHP ? Je n'ai personellement jamais eu le courage de m'y mettre mais quelqu'un la fait pour nous. C'est beau, c'est entièrement configurable, c'est un bel objet !

HTML_Css, HTML_table, Auth, la gestion des bases de données Paradox... J'en passe et des meilleurs ! Pour la liste complète, c'est

J'ai aussi insisté un peu sur la documentation de PEAR et sa gestion des paquets. Savez-vous comment installer un package PEAR en ligne de commande sous Linux ?

Lire la suite...

lundi, juin 21 2004

Nouveau site en ligne ThéMA

Voici ma dernière réalisation : Le site internet du Laboratoire ThéMA

J'ai choisi pour ce site d'utiliser encore une fois l'outil de gestion de contenu SPIP. La difficulté n'en était pas moins au rendez-vous. Je tiens à rappeler au passage que ceux qui pensent que SPIP réservé aux amateurs devrait y regarder de plus près...

Passer la période d'installation et de customisation aux petits oignons, il m'a fallu pas mal de temps pour rendre le SPIP original (quasi) respectueux des standards XHTML et CSS. Tout cela sans toucher au code source de SPIP mais en utilisant la possiblité laissées par les concepteur de SPIP de créer des filtres personnalisées agissant sur le code généré par le CMS. Si j'ai choisi de ne pas toucher au code interne, c'est pour ne pas perdre la possiblité d'upgrader vers les nouvelles versions du système simplement en écrasant les anciens fichiers par les nouveaux

Ce fut donc délicat et il reste un du travail. Mais l'essentiel est là et le contenu commence à bien s'étoffer.

Un contenu qui s'étoffe, c'est un site qui vie et ça, ça fait toujours plaisir. Il y a quand même près de 150 rédacteurs potentiels au sein du Laboratoire ThèMA !

Voici un lien qui m'a bien servi pour la compatibilité XHTML strict. Je donnerais sans problème mes filtres personnels dès qu'ils seront commentés correctement.

mercredi, février 4 2004

Installer la librairie PEAR.

J'avais parlé il y a quelques temps de la librairie PEAR. Voici le mail que j'ai envoyé à mon hébergeur pour le expliquer la procédure que j'ai du utiliser pour installer la librairie que une architecture mutualisée comprenant certaine restriction (exemple SAFE_MODE = on).

Lire la suite...

mercredi, janvier 21 2004

La librairie PEAR vous simplifie la vie

Si vous ne connaissez pas la classe d'abstraction PEAR, je vous invite à consulter les quelques adresses ci-dessous. Je commence seulement à m'en servir et je peux vous dire qu'elle facilite grandement le développement. Il y a toute une batterie d'objets bien pratique. J'utilise notamment la classe DB.php qui, comme son nom peux le laisser deviner, est une classe d'objet pour la gestion des bases de données. Ce qui est top, entre autres choses, c'est qu'en utilisant cette librarie, il vous suffira de changer une ligne dans votre fichier de configuration pour changer la base de données. Par exemple, passer d'un Mysql à un Postgree voir un Oracle. Ce système les gère tous ! Il me semble en plus que cette classe est maintenant livrée avec PHP.

Voici quelques sites :

- Guide du débutant pour PEAR DB

- Le site officiel de PEAR

PS : qui connaît une bonne définition de "classe d'abstraction" ;)

mercredi, décembre 24 2003

Les commandes ftp de PHP

Un truc très utile quand je suis bloqué par le safe mode chez certains hébergeurs (c'est souvent le cas dans les architectures mutualisées).

Pour plus d'infos sur le safe mode c'est par là

PHP fournit quelques fonctions bien pratique qui permettent toutes sortent de manipulation. L'exemple ci-dessous sert simplement à créer un répertoire sans utliser la fonction mkdir qui posera des problémes avec le safe mode

$ftp_host = "domaine.com"; //hote ftp
$ftp_login = "root.domaine.com"; //utilisateur ftp
$ftp_password = "pass"; //mot de passe ftp
$ftp = ftp_connect($ftp_host);
ftp_login($ftp,$ftp_login,$ftp_password);
ftp_mkdir ($ftp,$lerep);

C'est un exemple de base car les fonctions ftp de php sont vraiment étendues... (à voir sur php.net)

jeudi, novembre 27 2003

La réécriture des url (alias url rewriting)... suite

Dans un blog récent, j'expliquais comment créer un site intégrant la gestion de l'url rewriting. Voici la suite de ce billet.

On a vu qu'il était simple de préparer un site à la réécriture d'url. Maintenant imaginons que le site en question ce décline en plusieurs langues. Sur ce site, on passe le paramètre "lang" dans l'url, de page en page (il est bien évident que nous aurions pu également imaginer un système de cookies ou de session pour la gestion de la langue, mais là c'est pour l'exemple sur l'url rewriting...).

Lire la suite...

page 2 de 2 -