Функция форматирует вывод утилиты diff PHP: <?php function diff_format($left_filename, $right_filename) { $file_left = file($left_filename, FILE_IGNORE_NEW_LINES); $file_right = file($right_filename, FILE_IGNORE_NEW_LINES); array_unshift($file_left, ''); array_unshift($file_right, ''); $exec_exp = 'diff "' . $left_filename . '" "' . $right_filename . '"'; exec($exec_exp, $output); $result = ''; $cur_line = 1; foreach ($output as $line) { if (preg_match('/^([\d,]+)([adc])([\d,]+)/', $line, $match)) { $command = $match[2]; // a - add, c - change, d - delete $lines_left = explode(',', $match[1]); $lines_right = explode(',', $match[3]); if (!isset($lines_left[1])) { $lines_left[1] = $lines_left[0]; } if (!isset($lines_right[1])) { $lines_right[1] = $lines_right[0]; } $result .= '<div class="diffn">'; for ($i = $cur_line; $i < $lines_left[0]; $i++) { $result .= htmlspecialchars($file_left[$i]) . '<br />'; } $result .= '</div>'; switch ($command) { case 'a': { $result .= '<div class="diffa">'; for ($i = $lines_right[0]; $i <= $lines_right[1]; $i++) { $result .= htmlspecialchars($file_right[$i]) . '<br />'; } $result .= '</div>'; } break; case 'c': { $result .= '<div class="diffd">'; for ($i = $lines_left[0]; $i <= $lines_left[1]; $i++) { $result .= htmlspecialchars($file_left[$i]) . '<br />'; } $result .= '</div>'; $result .= '<div class="diffc">'; for ($i = $lines_right[0]; $i <= $lines_right[1]; $i++) { $result .= htmlspecialchars($file_right[$i]) . '<br />'; } $result .= '</div>'; } break; case 'd': { $result .= '<div class="diffd">'; for ($i = $lines_left[0]; $i <= $lines_left[1]; $i++) { $result .= htmlspecialchars($file_left[$i]) . '<br />'; } $result .= '</div>'; } break; } $cur_line = $lines_left[1] + 1; } } $lines_count = count($file_left); $result .= '<div class="diffn">'; for ($i = $cur_line; $i < $lines_count; $i++) { $result .= htmlspecialchars($file_left[$i]) . '<br />'; } $result .= '</div>'; $result = str_replace("\t", ' ', $result); return str_replace(' ', ' ', $result); } PHP: print diff_format('1.txt', '2.txt'); Посмотреть тут http://codepaste.ru/diff/?new=1612&old=1611 Форум сожрал & nbsp;, в конце так PHP: return str_replace(' ', '& nbsp; ', $result); без пробела между & и nbsp;