html bestand uitlezen

Status
Niet open voor verdere reacties.

Niellles

Gebruiker
Lid geworden
21 jun 2008
Berichten
194
Hallo,

Een simpele vraag; hoe lees ik met php een html bestand uit? Ik wil alles binnen het body gedeelte in een variabele. Gewoon uitlezen en dan alles voor en na de body tags verwijderen?? Of is er een speciale php functie voor?
 
Je zou het wellicht het DOM als XML kunnen parsen, maar dat weet ik niet precies.

Je kunt de volledige inhoud in een variabele laden (file_get_contents) en vervolgens de positie van '<body>' en '</body>' bepalen (stripos) en dan het benodigde stuk er tussenuit knippen (substr).
 
Ik gebruik deze functie:
PHP:
function loadFile($file) {
	$lines = file ($file );
	$htmlpage = "";		
	foreach ($lines as $line_num => $line) 
 	{
 		$htmlpage .= $line;
	}
	return $htmlpage;
}
En dan zou je de oplossing van ErikBooy007 kunnen gebruiken om het gedeelte tussen de body-tags uit te lezen. Maar je kan natuurlijk ook gewoon de html, head en body tags weglaten in het bestand dat je wilt laden, als die tags dan tenminste in het bestand staan waarin het word geladen.
 
Waarom jij deze functie hebt geschreven ontgaat me een beetje. Dit doet exact hetzelfde als file_get_contents .
 
Ik ben zelf even aan de gang gegaan en vond dit wel een aardig idee:
PHP:
	if ($bestand != "." && $bestand != "..") 
{
		$bestand = file_get_contents("$mapnaam/$bestand");
		preg_replace("(.*)(<BODY>)(.*)(</BODY>)(.*)","$2",$bestand);
		echo $bestand;
}

Ik zie alleen niet in waarom ik hier de volgende fout melding krijg:
Code:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '(' in /usr/export/www/hosting/guzzi389/test.php on line 14
 
Hmm, ben niet zo goed met regex' .

Probeer dit eens:

PHP:
preg_replace("/^(.*)<BODY>(.*)</BODY>(.*)$/i","$2",$bestand);

Waarom typ je trouwens BODY en niet body ? In dit geval zou ik je regex case-insensitive maken (zoals in m'n voorbeeld).

M'n voorbeeld zou zomaar totaal niet kunnen werken, maar dat merk je dan vanzelf. Heb je in ieder geval weer iets om te proberen.
 
Code:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'b' in /usr/export/www/hosting/guzzi389/test.php on line 18

Deze krijg ik nu :s, maar ook als ik (<body>) en (</body>) heb...
PHP:
preg_replace("/^(.*)<body>(.*)</body>(.*)$/i","$2",$bestand);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan