een div gedeelte uit een bestaande code weg halen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Schuffelers

Pascal Schuffelers

05/04/2019 11:43:43
Quote Anchor link
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.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<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.
 
PHP hulp

PHP hulp

08/04/2020 15:55:00
 
Thomas van den Heuvel

Thomas van den Heuvel

05/04/2019 12:11:21
Quote Anchor link
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.
 
Adoptive Solution

Adoptive Solution

05/04/2019 12:24:07
Quote Anchor link
1 minuut zoeken. 5 minuten oefenen :


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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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);

?>
Gewijzigd op 05/04/2019 12:27:12 door Adoptive Solution
 
Thomas van den Heuvel

Thomas van den Heuvel

05/04/2019 12:46:38
Quote Anchor link
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.
 
Pascal Schuffelers

Pascal Schuffelers

05/04/2019 16:44:02
Quote Anchor link
Thx, zal hem de codes doorsturen en jullie advies.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.