Я пытаюсь использовать регулярное выражение для поиска текста замены в RTF-файле. Для получения содержимого я использую следующее:
$content = file_get_contents($filePath);
Это открывает файл и считывает содержимое со всей разметкой RTF. Проблема в том, что когда я пытаюсь выполнить поиск и замену (используя preg_replace), это может вызвать проблемы. Например, если я пытаюсь найти следующий текст:
mailMerge: details_end_date
мое регулярное выражение работает довольно хорошо. Но проблема в том, что из-за разметки RTF строка часто может выглядеть примерно так:
mai} {\ rtlch \ fcs1 \ af1 \ afs24 \ ltrch \ fcs0 \ b \ f1 \ fs24 \ insrsid11692171 \ charrsid477488 \ hich \ af1 \ dbch \ af31505 \ loch \ f1 lM} {\ rtlch \ fcs1 \ af1 \ afs24 \ ltrch \ fcs0 \ f1 \ fs24 \ insrsid11692171 \ hich \ af1 \ dbch \ af31505 \ loch \ f1 erge} {\ rtlch \ fcs1 \ af1 \ afs24 \ ltrch \ fcs0 \ i \ f1 \ fs24 \ insrsid11692171 \ charrsid477488 \ hich \ af1 \ dbch \ af31505 \ loch \ f1:} {\ rtlch \ fcs1 \ af1 \ afs24 \ ltrch \ fcs0 \ i \ f1 \ fs24 \ insrsid5912488 \ charrsid477488 \ hich \ af1 \ dbch \ af31505 \ loch \ f1 details} {\ rtlch \ fcs1 \ af1 \ afs24 \ ltrch \ fcs0 \ f1 \ fs24 \ insrsid5912488 \ hich \ af1 \ dbch \ af31505 \ loch \ f1 _end_date
с любым количеством разметки текста между символами. Итак, мой вопрос: как мне лучше всего найти и заменить на поле с такой разметкой. Кажется, что регулярное выражение не сможет справиться с этим.
Длинная история (как работает приложение):
Я пытаюсь создать систему шаблонов, чтобы пользователи могли поместить поля в RTF-документ. Затем этот документ можно загрузить и объединить с полями базы данных. Итак, что я сделал, это создать надстройку текстового документа, которая позволяет пользователю отбрасывать предопределенные поля в документ (например: mailMerge_details_end_date). Затем пользователь может загрузить RTF-файл, и мой PHP-код будет / должен анализировать текст и находить / заменять текстовые поля на значения базы данных. Проблема связана с вышеупомянутыми кодами RTF. благодаря
Ясон