hoe kan ik dit eruit filteren?
wat ik nu graag wil is de inhoud van dit bestand filteren en alle elementen verwijderen die de class "verwijderen" bevatten. Ik heb daarvoor al een php code die 1 en ander eruit filter. alleen deze werkt niet bij de elementen die naast de class "verwijderen" ook andere classes bevatten.
Onderstaande het stuk code dat gefilterd moet worden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<header id="headerbackcolor-9827" onclick="get_backgroundcolor_info(this.id)" class="backgroundpaul-webcolor2 headermenupaul_fixed">
<a id="hreflogo-9827" onclick="get_element_info(this.id)" href="https://toffewebsite.nl" target="_blank" class="logo_fixed res-logo_fixed">
<img onclick="changeimage(this.id);setimagelogo();stopprog()" id="logoimage-9827" style="max-width: 200px" src="images/logo/logo.png" title="Goochelshow" alt="Hier alt text"></a>
<input class="menu-btn_fixed" type="checkbox" id="menu-btn_fixed">
<label class="menu-icon_fixed" for="menu-btn_fixed"><span class="navicon_fixed"></span></label>
<ul id="headermenuitems-9827" class="menu_fixed">
<li id="remove-button1-9827">
<a contenteditable="plaintext-only" data-id="button1-9827" id="button1-9827" onclick="headermenu(this.id);" href="#"><i class="fa fa-fw fa-lg fa-home"></i>Home</a>
<div class="verwijderen centreren-tekst">
<button data-id="button1-9827" onclick="remove_menuitem(this)" type="button">deze wordt niet verwijderd</button>
</div>
</li>
</ul>
<div class="verwijderen">
<h1>deze wordt wel verwijderd</h1>
</div>
</header>
<a id="hreflogo-9827" onclick="get_element_info(this.id)" href="https://toffewebsite.nl" target="_blank" class="logo_fixed res-logo_fixed">
<img onclick="changeimage(this.id);setimagelogo();stopprog()" id="logoimage-9827" style="max-width: 200px" src="images/logo/logo.png" title="Goochelshow" alt="Hier alt text"></a>
<input class="menu-btn_fixed" type="checkbox" id="menu-btn_fixed">
<label class="menu-icon_fixed" for="menu-btn_fixed"><span class="navicon_fixed"></span></label>
<ul id="headermenuitems-9827" class="menu_fixed">
<li id="remove-button1-9827">
<a contenteditable="plaintext-only" data-id="button1-9827" id="button1-9827" onclick="headermenu(this.id);" href="#"><i class="fa fa-fw fa-lg fa-home"></i>Home</a>
<div class="verwijderen centreren-tekst">
<button data-id="button1-9827" onclick="remove_menuitem(this)" type="button">deze wordt niet verwijderd</button>
</div>
</li>
</ul>
<div class="verwijderen">
<h1>deze wordt wel verwijderd</h1>
</div>
</header>
Onderstaande het stuk php code om het eruit te filteren. de onlick en de contenteditables worden verwijderd. daarnaast ook alle elementen die alleen de class "verwijderen". bevatten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$inputFile = 'bestand1.html';
$html = file_get_contents($inputFile);
$outputFile ="index.html;"
?>
<?php
libxml_use_internal_errors(true); // Negeer warnings over HTML-structuur
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // voorkom automatische <html>/<body> tags
$xpath = new DOMXPath($dom);
// Vind ALLE elementen met class "verwijderen" (ook als ze andere classes hebben)
$nodes = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' verwijderen ')]");
// Verzamel te verwijderen nodes eerst in array (anders raakt de NodeList corrupt)
$toRemove = [];
foreach ($nodes as $node) {
$toRemove[] = $node;
}
// Verwijder ze nu veilig
foreach ($toRemove as $node) {
$node->parentNode->removeChild($node);
}
// Sla resultaat op
file_put_contents($outputFile, $dom->saveHTML());
?>
$inputFile = 'bestand1.html';
$html = file_get_contents($inputFile);
$outputFile ="index.html;"
?>
<?php
libxml_use_internal_errors(true); // Negeer warnings over HTML-structuur
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // voorkom automatische <html>/<body> tags
$xpath = new DOMXPath($dom);
// Vind ALLE elementen met class "verwijderen" (ook als ze andere classes hebben)
$nodes = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' verwijderen ')]");
// Verzamel te verwijderen nodes eerst in array (anders raakt de NodeList corrupt)
$toRemove = [];
foreach ($nodes as $node) {
$toRemove[] = $node;
}
// Verwijder ze nu veilig
foreach ($toRemove as $node) {
$node->parentNode->removeChild($node);
}
// Sla resultaat op
file_put_contents($outputFile, $dom->saveHTML());
?>
Toevoeging op 20/06/2025 15:41:37:
de php oplossing heb ik van chatgpt. kwam er namelijk niet aan uit. Maar deze werkt dus niet helemaal zoals het moet
Gewijzigd op 20/06/2025 16:31:15 door - Ariën -
Vergeet hij er sommige? of worden er te veel verwijderd?
Even getest, maar bij mij verdwijnt die DIV gewoon, incl de onderliggende button.
Dat is vreemd. Mijn code is uiteraad wat langer als in de voorbeeld. Wellicht bevindt er zich iets in de code dat het verhinderd?
Staat in die tag ook maar 1x 'class="..."?
Is de html valide? heb je die evt. door een html-validator gehaald?
Ik heb een nieuwe topic aangemaakt voor wat betreft de html die fouten weergeeft.
link: https://www.phphulp.nl/php/forum/topic/hoe-geldige-html-maken/105126/