php : lecture d'un fichier html

TATOINE
WRInaute discret
WRInaute discret
 
Messages: 60
Inscription: 2 Aoû 2005

php : lecture d'un fichier html

Message le Jeu Jan 05, 2006 18:41

Bonjour

je refait un topic suite à mon dernier post ici :
http://www.webrankinfo.com/forums/viewtopic_42799.htm

alors voilà mon problème :

J'ai fait un site à un amis qui n'y connait rien en html, il voudrait pouvoir le mettre à jour via une section admin. J'ai donc installé un éditeur wysiwyg sur le serveur. Celui-ci enregitre le contenu des pages mises à jour dans un fichier html; dans les body de ce fichier ça donne ça :

<H1>premiere page</H1>
mon texte, mes images, mes liens...
<H1>deuxième page</H1>
mon texte, mes images, mes liens...
<H1>troisième page</H1>
mon texte, mes images, mes liens...

J'aimerais donc pouvoir integrer le contenu "mon texte, mes images, mes liens..." de la premiere page sur la première page
mon texte, mes images, mes liens... de la deuxième page sur la deuxième page ...

Comment dire à php par exemple: tu prend seulement "mon texte, mes images, mes liens..." du premier <H1>...</H1> ?

d'avance merci !


n3tfusion
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: 5 Mai 2005

Message le Jeu Jan 05, 2006 21:51

<?
function fichier(){

$url = "fichier.htm";
$source = implode(file("$url"));

// Petite astuce pour différencier les contenu ..
$source.="<!fin>";
$source = preg_replace('!<H1>!','<!fin><!debut><H1>', $source);

$i=1;
do{

// On recherche <!debut>
$pos1 = strpos($source, "<!debut>",$pos2);

if (!($pos1===FALSE)) {

$pos2 = strpos($source,"<!fin>",$pos1);


if (!($pos2===FALSE)) {

// il existe au moins un résultat
$data_brut = substr($source,$pos1,$pos2-$pos1);

// On supprime ce qui est en trop
$data_brut = preg_replace('!<\!debut>!','', $data_brut);

// On enregistre le resultat dans un tableau

$page[$i]['data']=$data_brut;

//Recupere le contenu de H1
preg_match('!<H1>(.+)</H1>!i',$data_brut,$titre);
$page[$i]['titre']=$titre[1];


}
}
$i++;
}while ($pos1);


return $page;
}

// Appel a la fonction pour recuperer le tableau contenant les valeurs
$donnes=fichier();

// Affichage de la page 1 :
echo $donnes[1]['data'];



?>


et fichier.htm contient ce que ton éditeur a généré..
pour la page 1 tu feras simplement

echo $donnes[1]['data'];

libre a toi d'extraire le contenu de H1 via un regex, j'ai plus le code en tete, et le retourner via $page[$i]['titre'] par exemple ..
edit : le contenu de H1 est extrait dans le script :)

Voila, en esperant avoir pu t'aider, sais pas si c'est la facon la plus simple, doit être un peu tordu, mais bon, ca marche ;)

TATOINE
WRInaute discret
WRInaute discret
 
Messages: 60
Inscription: 2 Aoû 2005

Message le Ven Jan 06, 2006 15:01

Magnifique ! merci !! :D :D :D
je vais tester ça, je devrait pouvoir me débrouiller

TATOINE
WRInaute discret
WRInaute discret
 
Messages: 60
Inscription: 2 Aoû 2005

Message le Ven Jan 06, 2006 16:21

bon ça marche nickel, sauf qu'il y a un leger soucis :

Notice: Undefined variable: pos2 ..... on line 26

j'essaye de comprendre ton code mais je débute en php je comprend pas tout très bien, je vais consulter le manuel du php.

j'ai quand meme une théorie :

tu a mis ça :

// On recherche <!debut>
$pos1 = strpos($source, "<!debut>",$pos2);

if (!($pos1===FALSE)) {

$pos2 = strpos($source,"<!fin>",$pos1);

peut être qu'au moment ou il lit cette ligne : $pos1 = strpos($source, "<!debut>",$pos2); la variable $pos2 est inconue au bataillon ?


edit : effectivement, j'ai rajouté ça : $pos2 = "1"; tout simplement au début du code ! et ça marche impecable !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités