У меня есть сценарий, в котором пользователь загружает RTF-документ и объединяет некоторые данные человека в письмо (имя, адрес и т. Д.) И делает это для нескольких людей. Я объединяю содержимое письма, а затем объединяю его со следующим содержимым слияния, для всех записей людей.
Аффективно я объединяя один RTF-документ в себя для многих записей людей, которым мне нужно объединить письмо. Однако мне нужно сначала удалить закрывающую разметку RTF и открыть разметку RTF для каждого слияния, иначе RTF не будет отображаться правильно. Это похоже на работу для регулярных выражений.
По существу мне нужно регулярное выражение, которое удалит всю строку:
} \ n \ страница НИЧЕГО \ par
Например, это регулярное выражение будет соответствовать этому:
crap } \page{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}} {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 September 30, 2008\par more crap
Поэтому я мог бы сделать это просто:
crap \page more crap
Является ли RegEx лучшим подходом здесь?
UPDATE: Почему мне нужно использовать RTF?
Я хочу, чтобы пользователь мог загрузить письмо формы, которое система будет использовать для создания объединенных писем. Поскольку RTF – это простой текст, я могу сделать это довольно легко в коде. Я знаю, RTF – это катастрофа спецификации, но я не знаю никакой другой хорошей альтернативы.
В этом случае я бы поставил под вопрос использование RTF. Мне не совсем понятно, что вы пытаетесь сделать в целом, поэтому я не могу предложить ничего лучше, но если вы попытаетесь объяснить свой проект более широко, возможно, я смогу помочь.
Если это действительно так, как вы хотите это сделать, это регулярное выражение дало мне правильный результат с учетом вашего ввода:
$output = preg_replace("/}\s?\n\\\\page.*?\\\\par\s?\n/ms", "\\page\n", $input);
На это я могу сказать ick ick ick. Тем не менее, трюк rcar, вероятно, сработает, если не будет какой-то странный крайний случай, когда RTF на самом деле не заканчивается в этой форме, или стили всего документа включают важную информацию, которая полностью испортит форматирование или любой другой из многих режимов отказа.