J'ose intervenir. L'avis que je vais développé ci-dessous est le mien, et n'engage que moi.
Déjà un petit détail, mais ça m'énerve tellement que je vais le mettre d'entrer de jeu :
$var = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"'."\n".
' "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'."\n\n".
'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">'."\n".
'<head>'."\n".
' <title>Page principale — Mon site.</title>'."\n".
'</head>'."\n".
'<body>'."\n".
' <h1>Titre</h1>'."\n".
' <p>Paragraphe.</p>'."\n".
'</body>'."\n".
'</html>';
C'est quand même beaucoup plus propre que d'écrire $var à chaque début de lignes ...
Ca fait des caractères en moins, c'est plus beau, c'est plus léger, enfin bref : on n'a que des avantages.
Et c'est
beaucoup plus simple d'écrire ton indentation directement comme ça, plutôt qu'avec une fonction ou je ne sais quoi d'autres.
Si tu ne travailles que pour un seul et unique gabarit (
template), tu ne te poses la question, sinon ça devient compliqué.
Voilà comment je raisonne :
Quand je construis le site, j'ai une page index.php qui va inclure les autres pages. Le code de la page index.php est indenté à la main (directement dans le code PHP ou alors à travers un gabarit, peu importe). On va appeler pour la suite la balise <_inc>, la balise qui contient la page incluse (ça peut être <body> elle-même, <div> ou autres).
Pour expliquer la suite, on doit d'abord se poser la question : pourquoi on indente le code HTML ? C'est principalement pour ceux qui veulent le lire. Donc la partie la plus important est la balise <_inc> on est bien d'accord. Donc j'écris 1 ou 2 lignes vide après l'ouverture de la balise <_inc>, je remets l'indentation à 0 pour les pages qui sont incluses (dans la balise <_inc> de la page index.php), et je termine par 1 ou 2 lignes vides avant la fermeture de la balise <_inc>.
De cette façon, quand je développe un module, je sais exactement où j'en suis, car je n'ai pas à me soucier de l'indentation de la page index.php. De plus, le code reste très lisible, car la balise <_inc> étant la plus importante, c'est pas mal de remettre l'indentation à 0 surtout si on travaille avec des tabulations et non des espaces (si on est au 17e noeud pour l'inclusion du texte, le nombre d'indentation sera trop élevé, et le code ne sera pas facile à lire).
Ca c'est ma technique. Si tu veux absolument faire un script, tu peux utiliser la méthode développée plus bas. Mais ce n'est pas très malin de développer ton propre script. Pourquoi ? Déjà parce qu'on peut le faire à la main/en dur, et que le résultat est très propre. De plus, utiliser un script juste pour ça, ça va prendre du temps, et de la ressource pour « rien ». Je n'aime pas dire pour « rien », car c'est important pour moi, mais ce n'est pas l'avis général ...
Donc il ne faudrait pas développer ton propre script, mais utiliser un module C de PHP par exemple.
Lequel choisir ? Sablotron le fait très bien. Certes cela concerne XSLT, mais tu peux lui demander d'appliquer une feuille XSLT vide, et il va réécrire (réindenter plutôt) le code pour toi.
Ca reste de la grosse bidouille quand même, mais comme c'est un module écrit en C, ça reste toujours plus rapide que ton propre script PHP. Je précise que Sablotron est installé par défaut sur pratiquement tous les hébergeurs. EasyPHP ne le supporte pas (pour les versions <= 1.8 de sûr, au-dessus, je ne sais pas), mais son installation est rapide et simple.
Je te conseille tout de même d'appliquer ma première méthode, à savoir remettre l'indentation à 0 et l'écrire à la main. C'est celle qui reste la plus « triviale ».
Bonne journée.