从字符串中剥离RTF标记

时间:2014-03-06 15:25:43

标签: php regex

有没有人知道任何可以串起所有RTF标签字符串的库或正则表达式模式?例如,使用以下字符串:

{\field\flddirty{\*\fldinst ref {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187  MERG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid15665935 
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 EFIELD details_awardee_name }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1024\langfe1024\noproof\insrsid11370280\charrsid4074187 \'abdetails_awardee_name\'bb}}}

这应该被细分为MERGEFIELD details_awardee_name

1 个答案:

答案 0 :(得分:0)

由于我不知道解析(RTF' s)其嵌套标签的规则,我只是发布这个,这似乎是 过滤掉一些杂乱的东西。

   # Raw:        \\[^\s]*\s*|[{}]+\s*
   # Delimited:  '/\\\[^\s]*\s*|[{}]+\s*/'

   \\ [^\s]* \s* 
|  [{}]+ \s* 

Perl测试用例 -

$/ = undef;
$str = <DATA>;

$str =~ s/\\[^\s]*\s*|[{}]+\s*//g;

print "'$str'\n";

__DATA__
{\field\flddirty{\*\fldinst ref {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187  MERG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid15665935 
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 EFIELD details_awardee_name }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1024\langfe1024\noproof\insrsid11370280\charrsid4074187 \'abdetails_awardee_name\'bb}}}

输出&gt;&gt;

'ref MERGEFIELD details_awardee_name '