@@ 19-33 (lines=15) @@ | ||
16 | $pointerMax = min(strlen($old), strlen($new)); |
|
17 | $pointerMid = $pointerMax; |
|
18 | $pointerStart = 0; |
|
19 | while ($pointerMin < $pointerMid) { |
|
20 | $cmp = substr_compare( |
|
21 | $old, |
|
22 | substr($new, $pointerStart, $pointerMid - $pointerStart), |
|
23 | $pointerStart, |
|
24 | $pointerMid - $pointerStart |
|
25 | ); |
|
26 | if (0 === $cmp) { |
|
27 | $pointerMin = $pointerMid; |
|
28 | $pointerStart = $pointerMin; |
|
29 | } else { |
|
30 | $pointerMax = $pointerMid; |
|
31 | } |
|
32 | $pointerMid = floor(($pointerMax - $pointerMin) / 2 + $pointerMin); |
|
33 | } |
|
34 | return $pointerMid; |
|
35 | } |
|
36 | ||
@@ 51-59 (lines=9) @@ | ||
48 | $pointerEnd = 0; |
|
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; |
|
55 | } else { |
|
56 | $pointerMax = $pointerMid; |
|
57 | } |
|
58 | $pointerMid = floor(($pointerMax - $pointerMin) / 2 + $pointerMin); |
|
59 | } |
|
60 | return $pointerMid; |
|
61 | } |
|
62 | } |