是否可以使用PHP在网页内显示RTF文件? - php

在将标签替换为用户输入后,我有一个RTF文件,希望在网页内显示。

我希望能够显示RTF文件,而不必在显示之前将其转换为某些内容。

现在,每次我尝试使用它时,都会弹出一个打开/保存框,即使我告诉它以以下方式内联显示:

header("Content-type: application/msword");
header("Content-Disposition: inline; filename=mark.rtf");
header("Content-length: " . strlen($output));

echo $output;

参考方案

大多数浏览器无法可靠地显示RTF内容。可以将RTF解析为HTML,然后在您的网页上显示HTML内容。

您需要某种程序来解析RTF并将其转换为HTML。我假设它必须是免费的。我不知道任何可靠的免费RTF解析或PHP中的HTML库的RTF。

我建议您使用RTF2HTML之类的命令行转换程序:http://sageshome.net/?w=downloads/soft/RTF2HTML.html

您将需要在网络服务器上下载并安装此程序,允许用户将文件上传到temp目录,然后使用shell_exec()从PHP调用命令行应用程序:

$html_output_path = '/path/for/processing/files/'
$html_output_filename = $username . $timestamp;
if (is_uploaded_file($_FILES['userfile']['tmp_name'])
{
  shell_exec('rtf2html ' . 
    escapeshellarg($_FILES['userfile']['tmp_name']) . " " .
    $html_output_path . $html_output_filename);
}
$html_to_display = file_get_contents($html_output_path . 
  $html_output_filename);

然后,将结果解析为HTML并显示。不错的策略。请注意,如果要在另一个网页中显示内容,则可能需要删除head,body和其他标签。

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP标头功能不起作用 - php

我曾经使用此功能从一个PHP页面重定向到另一个:header( 'Location: student.php?cnp='.$_REQUEST['name']) ; 在我的本地主机中,它确实可以工作,但是如果在Internet中对其进行测试,则不会重定向。我也尝试给出完整的路径(如http://.../student.p…

排序PHP迭代器 - php

有没有一种简单的方法可以在PHP中对迭代器进行排序(而不仅仅是将其全部拉入数组并进行排序)。我有一个具体的例子是DirectoryIterator,但是对所有迭代器都有一个通用的解决方案会很好。$dir = new DirectoryIterator('.'); foreach ($dir as $file) echo $file->…

php fopen相对路径断开-神秘 - php

我知道“必须进行某些更改”,但是我的代码似乎整夜无故中断。我的服务器目录结构是这样的: / /脚本 /审计 /其他事情我在“脚本”文件夹中有一个脚本(假设它被称为“ /scripts/MyScript.php”),该脚本使用curl收集网页中的数据,并将其日期过的副本保存在“审核”文件夹中。要写入审核文件夹,我使用了 $ fh = fopen(“ ./ au…