php : lecture d'un fichier html

WRInaute discret
Bonjour

je refait un topic suite à mon dernier post ici :
https://www.webrankinfo.com/forum/t/question-php-la-fonction-include.42799/

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 !
 
WRInaute discret
<?
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 ;)
 
WRInaute discret
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 !
 
Discussions similaires
Haut