Tompa Tompa - 12 days ago 6
PHP Question

PHP - Edit specific HTML content in file

I got a HTML file containing:

<div>
<p class="derp">Hello</p>
<p>Hi</p>
<p>Heyo</p>
</div>


What I want to do is to do is to update the HTML file's p-tag, with specific instructions like this:

<?php
$value = "I am here to replace something!";
$index = 1;

$page_source = file_get_contents($file_name);
// Something here to replace the second p-tag with $value
file_put_contents($file_name, $page_source);
?>


I have tried 2 different methods to do this (loadHTML, preg_replace), but I want to hear your opinion on which might be the best fit in my situation.

Very greatful for answers!

Answer

I personally prefer native PHP extensions. They are way faster than any other 3rd-party lib - depends on your task, but that is generally the case - and I get all the control I need over the document. DOM is the one I mostly use.

The best 3rd-party lib I have used so far, anyhow, is FluentDom; it provides a jQuery-like interface to navigate through the elements of the document and it may be installed using Composer.

I would not use regular expressions, unless I had to apply a really tiny change for which creating a new instance of DOMDocument would seem like a waste.

Edit: Gordon goes into much more details with this amazing answer.