Een gedeelte van HTML vervangen door PHP

Ik probeer een gedeelte van een HTML-sjabloonbestand dat ik heb te vervangen door reguliere expressies in PHP. tot nu toe heb ik dit:

$docText = OLD_TEXT;
$text = NEW_TEXT;
$docText = preg_replace('#<div id="information">[<div>(?R)</div>]*</div>#i x U',
                         $text,
                         $docText,
                         1);

// Save file

Op de momenten dat het geen overeenkomsten maakt. Het doel is om het de gehele buitenste div te laten vervangen, wat betekent dat het moet weten dat alle andere s niet de afsluitende tag zijn.

1
Eerste vraag in weken waar het op zijn minst relevant zou zijn, maar niemand plaatst de domme link. - Dus, uhm. Moet het regex zijn? Of zijn eenvoudigere suggesties toegestaan? - Hoe dan ook, uw syntaxis voor ? R en vervolgens omsluiten als tekenklasse is verkeerd. Waar heb je dat gevonden?
toegevoegd de auteur mario, de bron
kan je een voorbeeld van $ tekst plaatsen?
toegevoegd de auteur Jaison Erick, de bron
Eenvoudiger opties zijn prima. Ik probeerde oorspronkelijk DOMDocument, maar daarna werkte het niet. Ik besloot om direct met de reeks te werken. Sorry als ik een link zou plaatsen. Dit is de eerste keer dat ik op StackOverflow heb gepost.
toegevoegd de auteur DaBritishyankee, de bron

1 antwoord

Ik weet niet zeker wat je wilt, maar ik denk dat je dit probeert te doen:

$html = <<
            <div>Hi!</div>
        </div>
        <div id="otherInformation">Hi again!</div>
    </body>
</html>
HTML;

$replace = '<div id="newInformation">Bye!</div>';

$dom    = new DOMDocument();
$dom->loadHTML($html);

$tmp     = $dom->createTextNode('{newContent}');

$xpath   = new DOMXPath($dom);

$divInformation = $xpath->query('//div[@id="information"]');
$divInformation->item(0)->parentNode->replaceChild($tmp, $divInformation->item(0));

$newHTML = str_replace('{newContent}', $replace, $dom->saveHTML());
var_dump($newHTML);

Can I ask why?

2
toegevoegd
Dus, wat dacht je van doorzettingsvermogen? Ik neem aan dat je een database gebruikt? Is dit waarom je spul in een textarea echo om het te posten en op te slaan?
toegevoegd de auteur kasimir, de bron
Ik probeer een inhoudbeheersysteem te maken. Tot nu toe heb ik mijn site de informatie in de tags laten kopiëren en deze in een textArea echoën. Vervolgens stuur ik dit naar de php-pagina, die het informatiegebied met de nieuwe informatie vervangt. Ik heb het gevoel dat ik misschien het wiel opnieuw uitvind, maar het is logisch in mijn hoofd.
toegevoegd de auteur DaBritishyankee, de bron
Het is een paar maanden later en ik heb net gecontroleerd op deze post. Na veel werk heb ik dit eindelijk dankzij Fy-; Ik heb sindsdien echter een andere site gedaan en in plaats daarvan heb ik een MYSQL-database gebruikt. ZO VEEL MEER! Ik maakte een volledig nieuw bestand voor elke dynamische pagina door een tekst in een sjabloon te vervangen (ik vraag me af waarom), maar MYSQL maakt het een stuk eenvoudiger om dit te doen. Ach ja, alles werkte uiteindelijk goed. Les geleerd.
toegevoegd de auteur DaBritishyankee, de bron