webForumDet fria alternativet

Jämföra texter och markera skillnader?!

PHP

3 svar · 699 visningar · startad av ponta

Medlem sedan juli 200237 inlägg
Frågan#1

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.

Medlem sedan feb. 200230 inlägg
#2

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

<?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.

Medlem sedan juli 200237 inlägg
#3

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

Medlem sedan juni 20014 421 inlägg
256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)