Smiley atchoum

Bonjour,

Je souhaite afficher sur ma page web certaines informations contenues dans les balises, par exemple entre <title> et </title> mais pas forcément.

J'ai essayé d'utiliser le php (mes premiers pas !). J'ai trouvé sur un site un programme pour afficher les informations comprises entre les balises <title> et </title> qui fonctionne très bien (avec n'importe quelle balise ou repère d'ailleurs) dès lors qu'on opère dans un autre fichier que le fichier en cours.

En combinant la variable __FILE__ et les fonctions d'ouverture et de lecture de fichier, j'ai appliqué la méthode à ma page courante. Et là rien ne va plus !

Le problème c'est que dans ce cas, c'est le contenu de l'ensemble de la page à compter du de la balise de départ (en l'ocurrence <title>) qui s'affiche et j'ai donc à l'écran quasiment deux fois ma page.

Est-ce que quelqu'un peut m'aider à résoudre ce problème ? Merci par avance.

Le lien que j'ai trouvé : http://www.phpfrance.com/tutoriaux/index.php/2005/03/01/9-les-fichiers

Et mon code :

    <?php
	  
	 $fichiercourant = __FILE__ ;
	 
     $fp = fopen($fichiercourant,"r"); //lecture du fichier
	 
	 if( ! isset( $page ) ) $page = 0; // initialise $page pourquoi ? je ne sais pas mais sinon j'ai undefine variable

      while (!feof($fp)) { //on parcoure toutes les lignes

      $page .= fgets($fp, 4096); // lecture du contenu de la ligne

      }

      $titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre

      echo $regs[1];

      fclose($fp);

      ?> 

Modifié par The JML (17 Sep 2006 - 04:00)
Salut.

C'est peut-être une suggestion bête mais... Pourquoi ne génèrerais-tu pas ta page entièrement en php ? Tant qu'à débuter dans ce language, autant taper directement dans le camboui, non ?! Tiens, un exemple avec le <body> :
<?php
switch(LANGUAGE)
{
    case "FR":        
        echo '<BODY BACKGROUND="./Images/bkgrnd.gif" BGCOLOR="Black" TEXT="white" LINK="#FF7A0D" VLINK="yellow" ALINK="Lime"  bgproperties="fixed" scroll="yes">
<div id="layer1" style="position: absolute; top: 0px; width: auto" align="center">
<div align="center">BONJOUR</div>
</div>';
        break;
    case "EN":        
        echo '<BODY BACKGROUND="./Images/bkgrnd.gif" BGCOLOR="Black" TEXT="white" LINK="#FF7A0D" VLINK="yellow" ALINK="Lime" bgproperties="fixed" scroll="yes">
<div id="layer1" style="position: absolute; top: 0px; width: auto" align="center">
<div align="center">HELLO</div>
</div>';
        break;
    default:
        echo '<BODY BACKGROUND="./Images/bkgrnd.gif" BGCOLOR="Black" TEXT="white" LINK="#FF7A0D" VLINK="yellow" ALINK="Lime" bgproperties="fixed" scroll="yes">
<div id="layer1" style="position: absolute; top: 0px; width: auto" align="center">
<div align="center">BONJOUR</div>
</div>';
}
?>


Explication : cette partie de code permet de personnaliser l'affichage de la page dans une langue choisie (FR ou EN). Tu peux appliquer cette méthode pour n'importe quelle partie du code html comme ton <title>. Dans le genre :
<?php
switch(titre)
{
    case "titre1":        
        echo '<title>Mon titre 1</title>';
    break;
    case "titre2":        
        echo '<title>Mon titre 2</title>';
}
?>


A placer à l'endroit correct ou le code doit être généré, bien entendu.

A+

Eric
Modifié par Eric26 (17 Sep 2006 - 01:53)
A terme, c'est évidemment mon objectif. Il est évident qu'alors il n'y aura plus de problème, ni pour générer le titre de ma rubrique, ni pour afficher un "chemin de fer" en haut de page. Mais pour l'instant je souhaite travailler à l'économie, avec un site déjà existant et du temps disponible (de cerveau et de petits doigts) limité.

Par ailleurs j'ai un défaut qui peut être embarassant en informatique, c'est que j'aime bien comprendre ce qui se passe et en l'occurence pourquoi ça ne passe pas.

Merci pour ta suggestion et bonne nuit.
Voici une solution que l'on vient de me suggérer et qui fonctionne parfaitement :

    <?php

      $fichiercourant = file_get_contents(__FILE__);
      $p = strpos($fichiercourant, '<title>')+7 ;
      $titre = substr($fichiercourant, $p, strpos($fichiercourant, '&f">')-$p);
      echo $titre;
	  
      ?> 


Merci à tous.