3 namespace Caxy\HtmlDiff;
7 public static function diffCommonPrefix($old, $new)
9 // Quick check for common null cases.
10 if (strlen($old) == 0 || strlen($new) == 0 || substr($old, 0, 1) != substr($new, 0, 1)) {
16 $pointerMax = min(strlen($old), strlen($new));
17 $pointerMid = $pointerMax;
19 while ($pointerMin < $pointerMid) {
20 $cmp = substr_compare(
22 substr($new, $pointerStart, $pointerMid - $pointerStart),
24 $pointerMid - $pointerStart
27 $pointerMin = $pointerMid;
28 $pointerStart = $pointerMin;
30 $pointerMax = $pointerMid;
32 $pointerMid = floor(($pointerMax - $pointerMin) / 2 + $pointerMin);
37 public static function diffCommonSuffix($old, $new)
39 // Quick check for common null cases.
40 if (strlen($old) == 0 || strlen($new) == 0 || substr($old, strlen($old) - 1, 1) != substr($new, strlen($new) - 1, 1)) {
46 $pointerMax = min(strlen($old), strlen($new));
47 $pointerMid = $pointerMax;
49 $oldLen = strlen($old);
50 $newLen = strlen($new);
51 while ($pointerMin < $pointerMid) {
52 if (substr($old, $oldLen - $pointerMid, $pointerMid - $pointerEnd) == substr($new, $newLen - $pointerMid, $pointerMid - $pointerEnd)) {
53 $pointerMin = $pointerMid;
54 $pointerEnd = $pointerMin;
56 $pointerMax = $pointerMid;
58 $pointerMid = floor(($pointerMax - $pointerMin) / 2 + $pointerMin);