innerhtml in php mogelijk?
onderstaande heb ik als voorbeeld het html bronbestand. Van dit bestand wil ik dus de innerhtml verkrijgen van het div element met id "test2". het resultaat zou dus moeten zijn:
<h1>mijn hoofdtekst van id test2</h1>
Echter ik krijg als resultaat zonder de ht tag. (zie ook mijn php)
Hieronder de inhoud van dokument.html
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<div id="test1">
<h1>mijn hoofdtekst van id test1</h1>
</div>
<div id="test2">
<h1>mijn hoofdtekst van id test2</h1>
</div>
<div id="test3">
<h1>mijn hoofdtekst van id test3</h1>
</div>
<div class="test2">
<h1>mijn hoofdtekst van class test2</h1>
</div>
<h1>mijn hoofdtekst van id test1</h1>
</div>
<div id="test2">
<h1>mijn hoofdtekst van id test2</h1>
</div>
<div id="test3">
<h1>mijn hoofdtekst van id test3</h1>
</div>
<div class="test2">
<h1>mijn hoofdtekst van class test2</h1>
</div>
Hieronder het php bestand tot nu toe:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$dochtml = new DOMDocument();
//libxml_use_internal_errors(true);
$dochtml->loadHTMLFile("dokument.html");
$div = $dochtml->getElementById('test2')->nodeValue;
echo $div;
$div = innerHTML($dochtml->getElementById('test2'));
echo $div;
//libxml_use_internal_errors(true);
$dochtml->loadHTMLFile("dokument.html");
$div = $dochtml->getElementById('test2')->nodeValue;
echo $div;
$div = innerHTML($dochtml->getElementById('test2'));
echo $div;
Gewijzigd op 21/02/2024 19:42:57 door Paul Weiss
Code (php)
1
2
3
4
5
2
3
4
5
// Het gewenste element selecteren op basis van de ID
$element = $dom->getElementById('test2');
// De volledige h1-tag (inclusief inhoud) verkrijgen
$kop = $dom->saveHTML($element->getElementsByTagName('h1')->item(0));
$element = $dom->getElementById('test2');
// De volledige h1-tag (inclusief inhoud) verkrijgen
$kop = $dom->saveHTML($element->getElementsByTagName('h1')->item(0));
Gewijzigd op 21/02/2024 21:14:41 door - Ariën -
Spambericht verwijderd.
Super dank voor je bijdrage.
Ik wil echter graag wanneer ik dokument.html heb geopend de inhoud aanpassen bijv. via contenteditable etc. vervolgens moet ik de nieuwe inhoud zien te verkrijgen verkrijgen. Wat moet ik aan bovenstaande code precies aanpassen? Ik heb al gezocht, maar kom er niet echt aan uit. alles wat ik kan vinden is voornamelijk gebasseerd op een extern bestand.
file_get_contents kan je de inhoud van een bestand uitlezen.
En met file_put_contents kan je deze weer schrijven naar het bestand, waarbij de bestaande inhoud overschreven wordt.
Persoonlijk zou ik in plaats van contenteditable een editor gebruiken, zoals CKeditor, TinyMCE of iets anders.
Met En met file_put_contents kan je deze weer schrijven naar het bestand, waarbij de bestaande inhoud overschreven wordt.
Persoonlijk zou ik in plaats van contenteditable een editor gebruiken, zoals CKeditor, TinyMCE of iets anders.
Gewijzigd op 25/04/2024 12:39:41 door - Ariën -
dus als voorbeeld zou ik de gehele inhoud van het element met id "test" willen opslaan in een variable.
p.s. wat betreft de editor, begrijp waar je heen wilt, maar ik ben dus bezig met een geheel eigen systeem.
contenteditable wordft overigens regelmatig gebruikt bij cms.
Is die er wel?
Ik wil best de gehele pagina opslaan, maar hoe zou dat precies werken?
Je kan dan je pagina verdelen in losse templates, zoals header.html, footer.html, menu.html, content_overons.html, content_routeschrijving.html etc....
Maar is er dan geen manier via php om van de geopende pagina de content van een div element op te vangen? behalve dan dat van een extern bestand?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// HTML-fragment om te gebruiken voor demonstratiedoeleinden
$html = '<div id="content">Dit is de inhoud van mijn div</div>';
// Maak een nieuw DOMDocument-object aan
$dom = new DOMDocument();
// Laad de HTML in het DOMDocument-object
$dom->loadHTML($html);
// Zoek het div-element op basis van het id-attribuut
$divElement = $dom->getElementById('content');
$inhoud = $divElement->nodeValue;
echo "De inhoud van de div is: $inhoud";
?>
// HTML-fragment om te gebruiken voor demonstratiedoeleinden
$html = '<div id="content">Dit is de inhoud van mijn div</div>';
// Maak een nieuw DOMDocument-object aan
$dom = new DOMDocument();
// Laad de HTML in het DOMDocument-object
$dom->loadHTML($html);
// Zoek het div-element op basis van het id-attribuut
$divElement = $dom->getElementById('content');
$inhoud = $divElement->nodeValue;
echo "De inhoud van de div is: $inhoud";
?>
Toevoeging op 25/04/2024 15:53:08:
ik zou dan $dom->loadHTML($html); moeten aanpassen en $html. vervangen voor?
Je doet hier een aanpassing aan, en vervolgens stuur je alles via een POST weer terug naar het html-document.
stel ik heb onderstaande pagina geopend met de naam pagina.php. Ik kan dan vervolgens alles aanpassen binnen het element "content: nu wil ik dus alles in div elemeent met id "content". opslaan? geen idee hoe je dat voor ogen heb? met javascript is dat eenvoudig. hoe ziet de form er dan uit die ik op de pagina plaats?
pagina1.php ziet er dus zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<html>
<body>
<div id="content">
<h1> deze tekst kan worden aangepast via o.a. contenteditable. styling kan ook worden aangepast via javascrit</h1>
<p>deze tekst idem dito</p>
<p> en nog meer content kan volgens</p>
</div>
</body>
</html>
<body>
<div id="content">
<h1> deze tekst kan worden aangepast via o.a. contenteditable. styling kan ook worden aangepast via javascrit</h1>
<p>deze tekst idem dito</p>
<p> en nog meer content kan volgens</p>
</div>
</body>
</html>
Toevoeging op 25/04/2024 16:15:08:
sorry. ik kom er niet aan uit. Maar wellicht hebben wij beide iets anders voor ogen.
Gewijzigd op 25/04/2024 16:15:51 door Paul Weiss
Code (php)
1
2
3
4
5
2
3
4
5
// Haal het div-element op
var DivElement = document.getElementById('content');
// Haal de inhoud van het div-element op
var inhoudVanDiv = DivElement.innerHTML;
var DivElement = document.getElementById('content');
// Haal de inhoud van het div-element op
var inhoudVanDiv = DivElement.innerHTML;
Als vervolg op de vorige PHP-code kan je met deze methode ervoor zorgen dat je de bijgewerkte code hebt.
Gewijzigd op 25/04/2024 16:23:02 door - Ariën -
Wat is er volgens jou mis met AJAX? Ik denk dat het toch echt de enige manier is om elementen uit je je aangepaste content naar PHP te kunnen sturen. Of je moet met een formulier werken.
Toevoeging op 25/04/2024 17:21:47:
je bedoeld de content binnenin een formulier plaatsen natuurlijk. begrijp het al. nee dat is ook niet helemaal wat ik zoek. want in de content gebruik ik ook contactformulieren. dan heb je een form in een form. dat is om problemen vragen natuurlijk.
Toevoeging op 25/04/2024 17:23:45:
maar is er binnen php dan geen manier om de gehele geopende pagina opnieuw op te slaan? is dit iets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...
<?php
echo '1';
// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>
[/code[
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...
<?php
echo '1';
// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>
[/code[
Je zult echt moeten samenwerken met JavaScript, en AJAX is dan de beste oplossing omdat het a-synchroon werkt. Als je een formulier hebt, dan kan je met $_POST de ingevoerde inhoud opvragen en verwerken. Dit is basiskennis PHP, en behoeft geen volledige uitleg in deze post.
Outputbuffering kan prima, maar zoals ik al zei: PHP is niet cliëntside. Dingen die je met contenteditable wijzigt, worden dan niet meegenomen.
Ikzelf ben benieuwd waarom je geen databases wilt gebruiken? Je kan hier je content gestructureerd in opslaan, en eventueel met een template-parser zoals Twig of Smarty heb je een hoop basisfuncties en gereedschap om je view-laag los te trekken van je PHP-code. En je hebt zelfs nog handige cache-functies ;-)
Gewijzigd op 25/04/2024 17:35:50 door - Ariën -
zoals o.a. inline styling toevoegen classes, en dan de tekstinhoud via contenteditable.
alle html elementen zijn totaal verschillende van elkaar. weet nooit welke inhoud er wordt ingeladen.
zo heb ik fotgallerijen, videocontent etc etc.. alles wordt onder elkaar in de pagina geplaatst.
Ik zou ook niet weten hoe ik op deze wijze content in de database moet opslaan ook.
Toevoeging op 25/04/2024 17:38:56:
ik zou dan elke stukje aan php moeten koppelen ook.