Reputation: 344
I'm trying to compare two string in PHP which both contain HTML. (they are both placed into a database via a wysiwyg editor).
The result I want to get is to see which words are removed and which ones have been added.
To do this I'm using this bit of code as follows:
$old = "<p>Lorem ipsum is standard dummy text</p>";
$new = "<p>Lorem ipsum was standard dummy jibbrish</p>";
echo htmlDiff($old, $new);
which works perfectly fine. However when I add some tags such as <li>
, the fun ends.
For example if I would have the following:
$old = "<p>Lorem ipsum is standard dummy text. <ul><li>Lorem</li><li>Ipsum</li><li>Dolor</li></ul></p>";
$new = "<p>Lorem ipsum was standard dummy jibbrish. <ul><li>Lorem</li><li>Dolor</li></ul></p>";
echo htmlDiff($old, $new);
The <del>
tag gets added correctly after the first list item, but the removed list item gets placed outside of the <del>
tag, making it look like it was not removed.
I could resolve this by stripping all tags, but I would like to keep the layout of both strings.
Any help or suggestions are greatly appreciated.
Upvotes: 3
Views: 5051
Reputation: 449
You could try one of the following alternatives to the htmlDiff function:
Upvotes: 5