Browse Source

Fix displacing issue

master
Orzu Ionut 5 years ago
parent
commit
fb5580d24e
  1. 24
      app/SearchDisplace/SearchAndDisplace.php

24
app/SearchDisplace/SearchAndDisplace.php

@ -43,32 +43,42 @@ class SearchAndDisplace
$replacements[$searcher['key']] = $searcher['replace_with']; $replacements[$searcher['key']] = $searcher['replace_with'];
} }
$updatedDocumentContent = '';
$currentIndex = 0;
$searchers = [];
foreach ($searchResult as $searcher => $searcherResults) { foreach ($searchResult as $searcher => $searcherResults) {
$replacementIndexes[$searcher] = []; $replacementIndexes[$searcher] = [];
foreach ($searcherResults as $searcherResult) { foreach ($searcherResults as $searcherResult) {
$partialContent = substr($this->documentContent, $currentIndex, $searcherResult['start'] - $currentIndex);
$searchers[$searcherResult['start']] = array_merge($searcherResult, [
'searcher' => $searcher
]);
}
}
ksort($searchers);
$updatedDocumentContent = '';
$currentIndex = 0;
foreach ($searchers as $start => $searcherItem) {
$partialContent = substr($this->documentContent, $currentIndex, $searcherItem['start'] - $currentIndex);
$updatedDocumentContent = $updatedDocumentContent . $partialContent; $updatedDocumentContent = $updatedDocumentContent . $partialContent;
$start = strlen($updatedDocumentContent); $start = strlen($updatedDocumentContent);
$updatedDocumentContent = $updatedDocumentContent . $replacements[$searcher];
$updatedDocumentContent = $updatedDocumentContent . $replacements[$searcherItem['searcher']];
$end = strlen($updatedDocumentContent) - 1; $end = strlen($updatedDocumentContent) - 1;
if ($start <= $end) { if ($start <= $end) {
$replacementIndexes[$searcher][] = [
$replacementIndexes[$searcherItem['searcher']][] = [
'start' => $start, 'start' => $start,
'end' => $end, 'end' => $end,
]; ];
} }
$currentIndex = $searcherResult['end'] + 1;
}
$currentIndex = $searcherItem['end'] + 1;
} }
if ($currentIndex < strlen($this->documentContent) - 1) { if ($currentIndex < strlen($this->documentContent) - 1) {

Loading…
Cancel
Save