PHP代码没有在rtf模板中创建新行


PHP code not creating new line in rtf template

我将php脚本简化为解决一个令人困惑的问题所需的确切代码(至少对我来说是这样!)。下面的脚本所要做的就是用一个硬编码的变量替换rtf模板中的"++name",该变量将在一行上打印"me",在下一行打印"you"。除了尝试"''r''n"来创建新行外,我还尝试了"''par",但没有成功。下面的代码将"++名称"替换为一行中的"meyou"。我在stackoverflow和其他论坛上找到了很多"解决方案",但没有一个对我有效

非常感谢您的帮助。

    <?php
    $name = "me" . "'r'n" . "you";
    header('Content-type: application/msword');
    header('Content-Disposition: inline, filename=filenot.rtf');
    $filename = 'rtfnotice.rtf';
    $fp = fopen ($filename, 'r');
    $output = fread( $fp, filesize($filename));
    fclose ($fp);
    $output = str_replace('++name', $name, $output);
    echo $output;
?>

使用RTF,每个格式化的部分都用小胡子括起来。"格式化"放在开头。因此,为了做一些大胆的事情,{'b hey, this text is bold}

要在单独的行中输出"我"answers"你",可以在它们之间放置{'pard'par},也可以使它们成为自己的段落。{'pard me 'par}{'pard you 'par}

我想,你也可以简单地放'line。RTF不是很有趣吗?

不久前,我写了一个用于输出RTF的库。你可能会发现我的"格式化"功能很有用。基本上,您为文本提供了一组属性,然后它以RTF格式输出。这是AS3,但很容易翻译成PHP。

这可能与您的内容类型有关。我会用application/rtf替换application/msword,然后您关联的RTF应用程序至少会根据正确的MIME类型来呈现它。

当我刚才在服务器上尝试这个时,它在Word中的换行符显示得很好。