Lire un fichier html en php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lire un fichier html en php

Re: Lire un fichier html en php

par Bosyphe » 11 mars 2011, 12:04

Merci.
Je comprends.
De telles remarques me font — et peut-être est-ce aussi valable pour d'autres participants :--) — mieux comprendre le fonctionnement de ces fonctions.

Re: Lire un fichier html en php

par stealth35 » 11 mars 2011, 11:29

Quant au 4096, j'ai repris cette valeur de plusieurs exemples rencontrés. Il est vrai qu'elle est inutilement élevée. Mais, bon !
non justement c'est l'inverse, cette valeur est utile pour faire du stream ici elle sert a rien puisqu'on veux récupérer tout le fichier

Re: Lire un fichier html en php

par Bosyphe » 11 mars 2011, 11:27

Magnifique post dans php avancé ... Je ne peux que conseiller de lire ne serait-ce qu'un petit tutoriel d'introduction à php.
Effectivement, j'avais un peu hésité quant à la section — PHP débutant ou avancé — dans laquelle poser cette question.

Mais n'étant plus tout à fait débutant — dans mon traitement de document, j'avais écrit quelques routines relativement élaborées : génération d'une table des matières en une seule passe, d'une table d'accès rapides, de contenus de chapitre, placement d'aides à la traduction (expressions et libellés spécifiques dans la langue cible ajoutés par rapport au texte source...) —, mais étant, oui, débutant en matière de gestion de fichiers, je me suis permis de poser une question de débutant sur ce vénérable forum d'initiés et d'experts, en sachant toutefois que les réponses ne seraient pas forcément des réponses pour débutant...

En tous cas, merci à vous trois qui avez si obligeamment accepté d'aider et de faire avancer un faux-débutant posant une question de débutant :)
Maintenant, si vous pouvez déplacer ce post dans la rubrique débutant, why not ?
la solution correct en stream est de faire stream_get_contents,
sinon pourquoi 4096 pour le fgets ???
Je note aussi cette possibilité, mais je préfère utiliser $document = file_get_contents(Fichier.html'); qui ne nécessite qu'une seule ligne et dont le concept est clair et naturel.

Quant au 4096, j'ai repris cette valeur de plusieurs exemples rencontrés. Il est vrai qu'elle est inutilement élevée. Mais, bon !

Re: Lire un fichier html en php

par devlop78 » 11 mars 2011, 01:12

Magnifique post dans php avancé ... Je ne peux que conseiller de lire ne serait-ce qu'un petit tutoriel d'introduction à php.

Re: Lire un fichier html en php

par stealth35 » 11 mars 2011, 00:45

la solution correct en stream est de faire stream_get_contents,
sinon pourquoi 4096 pour le fgets ???

Re: Lire un fichier html en php

par Bosyphe » 10 mars 2011, 23:43

Bonsoir Misterflo,

Merci de ton explication.
J'ai essayé la première méthode (en initialisant $document) qui fonctionne bien.

Par contre, l'écriture directe $document = fgets($fichier, 4096); (sans initialisation de $document) ne semble pas fonctionner : j'obtiens une page vide, sans aucun code.

Re: Lire un fichier html en php

par misterflo » 10 mars 2011, 23:20

Bonsoir,

Pour le problème de la variable non déclaré c'est simplement le .= qui signifie une concaténation, en gros, tu essaye d'ajouter une valeur à une variable qui n'existe pas. Il faut simplement déclarer/initialiser ta variable d'abord.

Soit en l'initialisant par un $document = '';

Soit en mettant directement ton code comme ca : $document = fgets($fichier, 4096); >>>> sans le .=

Mais la solution stealth35 reste la meilleur (que tu as d'ailleurs mise en place :wink: )!

Re: Lire un fichier html en php

par Bosyphe » 10 mars 2011, 23:11

Merci à vous trois !

Effectivement, j'avais mal compris le principe même de la fonction fopen.

J'ai d'abord essayé la fonction fgets
$fichier = fopen("Fichier xhtml pour essais en php.html", "r");
while (!feof($fichier))
{
	$document .= fgets($fichier, 4096);
}
echo $document;
mais bizarrement la page html générée me signale qu'il y a une variable non définie dans la ligne
$document .= fgets($fichier, 4096);
alors qu'elle affiche bien ensuite le contenu du fichier.

Si vous avez une explication, merci d'avance.


J'ai alors essayé la fonction file_get_contents
$document = file_get_contents('Fichier xhtml pour essais en php.html');
echo $document;
qui, elle, fonctionne parfaitement. (J'ai aussi essayé avec mon fichier réel. Tout est OK.)

Merci de vos indications !

Re: Lire un fichier html en php

par stealth35 » 10 mars 2011, 19:55

un file_get_contents suffis :wink:

Re: Lire un fichier html en php

par macgawel » 10 mars 2011, 16:32

Maintenant j'obtiens "Resource id #3" !
Tu as lu la description de la fonction fopen() (lien donné par misterflo ?
fopen() crée une ressource nommée, spécifiée par le paramètre filename, sous la forme d'un flux.
Une fois que tu as ta ressource, il faut la lire. Par exemple avec fread ou fgets...

Re: Lire un fichier html en php

par Bosyphe » 10 mars 2011, 15:48

Merci Misterflo,

J'ai corrigé toutes mes petites erreurs (le " dans echo était une erreur que j'ai introduite dans le post mais qui n'était pas dans le code) :
<?php
$document = fopen("Fichier xhtml pour essais en php.html", "r");
echo $document;
?>
Maintenant j'obtiens "Resource id #3" !

PS : J'écris ici un bout de code pour essai. En réalité, j'ai tout un processus de traitement sur $document. (Ce processus de traitement se trouve actuellement dans le fichier html de mon document et j'aimerais sortir le code php de ce fichier de façon à obtenir un fichier contenant seulement du code xhtml.)
Mais peut-être effectivement include pourrait suffire. Je vais essayer.

Re: Lire un fichier html en php

par misterflo » 10 mars 2011, 15:37

Salut,
si tu veux simplement afficher les informations contenu dans un autre fichier, utilise plutôt un include

De plus tu as quelques erreurs dans ton code php,
au début la balise <?php ne contient pas d'espace entre le ? et le php.
Tu as mis un guillemet simple en trop à la fin de ton fopen() et enfin, tu as un guillemet double en trop dans ton echo il faut mettre echo $document sans guillemet.

Plus d'informations sur la fonction fopen()
http://php.net/manual/fr/function.fopen.php

Lire un fichier html en php

par Bosyphe » 10 mars 2011, 15:25

Bonjour,

Je bute sur un problème tout simple.
Pour essai, je cherche à lire et à afficher un petit fichier html à partir d'un fichier php.
Le code php dans ce fichier est très simple :
<? php

$document = fopen("Fichier xhtml pour essais en php.html", "r"');
echo "$document;
?>
La page html d'essai est elle aussi très réduite :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fichier xhtml pour  essais en php</title>
</head>

<body>
<h1>Essai php</h1>
<p>Petit bout d'essai pour tester l'ouverture d'un fichier sous php</p>
</body>
</html>
Néanmoins mon code php ne marche pas : j'obtiens une page vide, et en affichant le code, je vois mon code php et non le code html de la page appelée.

Où est l'erreur ? Pourquoi je n'arrive pas à effectuer cette simple opération de lecture et d'affichage ?

Merci d'avance pour votre aide