---
title: "Jämföra texter och markera skillnader?!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/171830-jämföra-texter-och-markera-skillnader"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "ponta"
published: "2008-05-28T11:58:30.000Z"
updated: "2008-06-18T09:55:26.000Z"
replies: 3
views: 713
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/171830-jämföra-texter-och-markera-skillnader"
---

# Jämföra texter och markera skillnader?!

## #1 — ponta, 2008-05-28T11:58Z

Jag vill få iordning på en funktion som ska jämföra två versioner av samma text och markera skillanderna mellan dessa på en webbsida.

Ex.
Orginal text: Det här är orginaltexten som visas på sajten!
Ändrad text: Det här är ändrat! Helt nytt!!

Ska visas som: Det här är ändrat! som visas på sajten!Helt nytt!!

Eller nåt liknande.. Texten kan innehålla en massa html redan från start, så jag kan inte bara söka ord för ord o sedan lägga till 

```
<span class="changed">blabla</span>
```

, det förstör html formatteringen som fanns från början (i vissa fall).

Nån som sett nån liknande funktion som man skulle kunna använda, eller har några ideér om hur jag ska gå till väga? Har försökt med regex ett tag nu, men lyckas inte få till nåt som fungerar fullt ut.

Permalänk: https://www.webforum.nu/p/171830

## #2 — her0n, 2008-06-03T08:57Z

Är inte helt säker på att det är precis såhär du vill ha det.

```php
<?php

function formatdiff($val)
{
	return "<span style=\"background: #fff987;\">$val</span>";
}

$str1 = "Det här är <h1>orginaltexten</h1> som visas på sajten!";
$str2 = "Det här är ändrat! Helt <a href=\"http://www.webforum.nu\">nytt!!</a>";

$str1 = explode(" ", strip_tags($str1));
$str2 = explode(" ", strip_tags($str2));

for ($i = 0; $i <= count($str1); $i++) 
{
	$foo .= $str1[$i] ." ";

    if($str1[$i] == $str2[$i]) //Är det samma ord vi har att göra med?
		$bar .= $str2[$i] ." ";
	else
		$bar .= formatdiff($str2[$i]) ." "; //Nej, formatera med formatdiff.
	
}

echo $foo ."<br />". $bar;

echo "<h4>Vad är förändrat?</h4>";

echo "<code>";
	print_r(array_diff_assoc($str2, $str1));
echo "</code>";

?>
```

Edit: Kom just på att det är dumt att bara gå efter första strängens längd. Har tyvärr inte tid nu. Men det kanske hjälper dig på vägen.

Permalänk: https://www.webforum.nu/p/2116578

## #3 — ponta, 2008-06-18T08:30Z

Tack! Ska testa det så fort jag kan :)

Permalänk: https://www.webforum.nu/p/2118895

## #4 — colione, 2008-06-18T09:55Z

<http://www.holomind.de/phpnet/diff.src.php>

<http://www.holomind.de/phpnet/diff.php>

Alternativt paketet som finns i PEAR: <http://software.zuavra.net/inline-diff/>
<http://pear.php.net/package/Text_Diff>

Eller PECL-paketet:
<http://se.php.net/manual/en/book.xdiff.php>

Permalänk: https://www.webforum.nu/p/2118912

---

Tråden på webben: https://www.webforum.nu/amne/php/171830-jämföra-texter-och-markera-skillnader
