Конкатенация RTF-файлов в PHP (REGEX) - PullRequest
2 голосов
/ 30 сентября 2008

У меня есть скрипт, который берет загруженный пользователем RTF-документ и объединяет некоторые личные данные в букву (имя, адрес и т. Д.) И делает это для нескольких людей. Я объединяю содержимое письма, а затем объединяю его с содержимым следующего письма слияния для всех записей о людях.

Аффективно я объединяю один RTF-документ в себя для того количества людей, с которыми мне нужно объединить письмо. Тем не менее, мне нужно сначала удалить закрывающую разметку RTF и открытие разметки RTF каждого слияния, иначе RTF не будет отображаться правильно. Это звучит как работа для регулярных выражений.

По сути, мне нужно регулярное выражение, которое удалит всю строку:

} \ n \ page НИЧЕГО \ 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 - лучший подход здесь?

ОБНОВЛЕНИЕ: Почему я должен использовать RTF?

Я хочу разрешить пользователю загружать письмо формы, которое система затем будет использовать для создания объединенных писем. Поскольку RTF - простой текст, я могу сделать это довольно легко в коде. Я знаю, RTF - это катастрофа спецификации, но я не знаю другой хорошей альтернативы.

Ответы [ 2 ]

2 голосов
/ 01 октября 2008

Я бы поставил под сомнение использование RTF в этом случае. Мне не совсем понятно, что вы пытаетесь сделать в целом, поэтому я не могу предложить что-то лучше, но если вы попытаетесь объяснить свой проект более широко, возможно, я смогу помочь.

Если это действительно тот путь, по которому вы хотите пойти, то это регулярное выражение дало мне правильный вывод, учитывая ваши данные:

$output = preg_replace("/}\s?\n\\\\page.*?\\\\par\s?\n/ms", "\\page\n", $input);
1 голос
/ 01 октября 2008

На это я могу сказать ick ick ick. Тем не менее, команда rcar, вероятно, будет работать, за исключением некоторого странного крайнего случая, когда RTF фактически не заканчивается в этой форме, или стили всего документа включают важную информацию, которая полностью портит форматирование, или любой другой из многих режимов сбоя.

...