| @@ 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 | } |
|