У меня есть требование вставить строку между двумя маркерами.
Сначала я получаю строчку (из файла, хранящегося на сервере) между # DATA # и # END #, используя:
function getStringBetweenStrings($string,$start,$end){
$startsAt=strpos($string,$start)+strlen($start);
$endsAt=strpos($string,$end, $startsAt);
return substr($string,$startsAt,$endsAt-$startsAt);
}
Я делаю некоторую обработку и, основываясь на деталях строки, запрашиваю некоторые записи.Если есть записи, мне нужно иметь возможность добавить их в конец строки, а затем заново вставить строку между # DATA # и # END # в файле на сервере.
Как мне лучше всегодобиться этого?
Возможно ли вставить запись в файл за раз до # END # или лучше всего манипулировать строкой на сервере и просто вставить поверх существующей строки в файле насервер?
Пример данных:
AGENT_REF^ADDRESS_1^ADDRESS_2^ADDRESS_3^ADDRESS_4^TOWN^POSTCODE1^POSTCODE2^SUMMARY^DESCRIPTION^BRANCH_ID^STATUS_ID^BEDROOMS^PRICE^PROP_SUB_ID^CREATE_DATE^UPDATE_DATE^DISPLAY_ADDRESS^PUBLISHED_FLAG^LET_RENT_FREQUENCY^TRANS_TYPE_ID^NEW_HOME_FLAG^MEDIA_IMAGE_00^MEDIA_IMAGE_TEXT_00^MEDIA_IMAGE_01^MEDIA_IMAGE_TEXT_01^~
#DATA#
//Property records would appear here and match the string above, each field separated with ^ and terminating with ~
//Once the end of data has been reached, it will be fully terminated with:
#END#
Когда я проверяю новые свойства, я делаю следующее:
- Получение всех существующих свойств между #DATA# и # END #
- Получить идентификаторы свойств и запросить новые свойства, которые не соответствуют этим идентификаторам
Затем мне нужно повторно вставить новые свойства перед #END #, но после последнего свойства в файле.
Структура файла - файл Rightmove BLM.