Ik heb een kleine vraag van een collega uit, die een beetje aan het stoeien is met een oude php code van een overleden oud collega.
Ik had hem naar deze site door gestuurd , maar aangezien hij niet veel op forums zit had hij mij gevraagd om deze vraag hier te stellen.

Hij heeft een pagina die hij zo toont.:

<body>
    <div>
    <?php echo $out?>
    </div>
</body>


Nu zit in die $out code diverse div's waaronder id="hulpjeandre".
Nu is dus zijn vraag, is het mogelijk die id eruit te filteren en de code dan opnieuw te tonen, zo ja wellicht hoe?

Alvast bedankt van zijn kant uit.
Ja, maar dat is symptoombestrijding. Je (de code) stopt immers zelf ergens eerst dat id erin. Daarbij wordt de code met zo'n aanpak (ik zou het geen oplossing noemen) onnodig (nog) complexer.

De correcte oplossing zou het opsporen van de daadwerkelijke boosdoener en het verwijderen hiervan zijn, niet het na afloop eruit filteren hiervan.

Dan is het misschien ook de vraag of er niet teveel in $out gebeurt waarbij je dus te weinig controle hebt over de output.

Misschien is dit ook een uitgelezen moment om e.e.a. te reverse engineeren en wellicht te vervangen, want het klinkt niet alsof men veel vertrouwen heeft in de omgang met deze code, en een aanspreekpunt heb je niet meer. Dat (legacy code waarvan niemand weet hoe deze werkt) is sowieso een onwenselijke situatie.
1 minuut zoeken. 5 minuten oefenen :


https://stackoverflow.com/questions/47130986/how-to-get-html-code-inside-div-with-an-id-with-simplehtmldom-php

<?php

$html = '<div id="hulpjeandre">
	<div id="second">second</div>
	<div class="third">Third</div>
	<h1>Fourth</h1>
</div>';

$dom = simplexml_load_string( $html );
$results = $dom->xpath('//div[@id="hulpjeandre"]/*');
$innerHtml = "";
foreach( $results as $result )
{
	$innerHtml .= $result->saveXML();
}
echo $innerHtml;

?>


https://stackoverflow.com/questions/12110519/get-complete-div-content-using-class-name-or-id-using-php
<?php

function getHTMLByID($id, $html) {
	$dom = new DOMDocument;
	libxml_use_internal_errors(true);
	$dom->loadHTML($html);
	$node = $dom->getElementById($id);
	if ($node)
	{
		return $dom->saveXML($node);
	}
	return 'not found';
}

$html = file_get_contents('extract.html');
echo getHTMLByID('defaultDiv', $html);

?>

Dit neemt weliswaar het ongewenste gedrag weg, maar lost het niet op...

Dit is een band aid, die ook nog eens wat performance kost vanwege de inzet van (zware?) hulpstukken.

En wellicht creƫer je hier nieuwe problemen mee. Wat als DOMDocument zich verslikt in een foutieve HTML-opmaak die soms optreedt? :/

Verwijder het uit de bron, dit lijkt mij de enige juiste (en tevens simpelste) oplossing.
Thx, zal hem de codes doorsturen en jullie advies.

Reageren