html标签在Microsoft Word文档中不起作用

时间:2013-08-12 10:42:34

标签: php joomla ms-word

最近我在使用“在php中创建word文档文件”时遇到了问题。

在我的网站上,有一个表格。其中包括10个字段,如“姓名”,“电话”,“地址”等。

当用户填写这些字段并提交表单时,会向管理员发送一封电子邮件,其中包含表格和相应的字段值“mr xxx最近已提交此表单”。

我正在使用文件处理程序。但是当我使用html标签使文件在word doc中看起来更好时,html在那里不起作用,而是将其作为文本打印在该doc文件中。

这是我的代码--->

$fh = fopen(JPATH_BASE.'/files/form_'.$user->id.'_'.$form_id.'_'.$submit_id.'.doc',"w+");
        //print_r($post); exit;
        //ob_start();
        //$data = ob_get_clean();
        //$data = '';
        $data = $emailreceipttext;
        foreach($fieldsInArray as $fields)
        {
            foreach($post as $key=>$p)
            {

                if($key==$fields->name)
                {

                if(is_array($p))
                {
                    $p = implode(",",$p);
                }
                $data = str_replace("{".$fields->name."}", $p, $data);

                }
            }
        }
        //fwrite($fh, $data);

        //print_r($data);exit;
    //}


    /*print_r($data);
    exit;*/
    fwrite($fh, $data); 
    $file = 'form_'.$user->id.'_'.$form_id.'_'.$submit_id.'.doc';

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/msword');
        header('Content-Disposition: attachment; filename='.basename($file));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0,  pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
        }
        fclose($fh);
        //echo hi; print_r($data); exit;
    $this->send_mail($data,$submit_id);

这里$ data是由邮件正文组成的变量。我正在使用str_replace来存储该表单字段的值。

但文件显示如下--->

<p><label>name</label>:<b>arnas sinha</b><br/>
<label>phone</label>:<b>9878790989</b><br/>
 <label>address</label>:<b>india</b><br/>

如何使用html格式创建word doc文件?

1 个答案:

答案 0 :(得分:1)

您可以使用http标头解决此问题:

<?php
    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment;Filename=document_name.doc");

    echo "<html>";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
    echo "<body>";
    echo "<b>My first document</b>";
    echo "</body>";
    echo "</html>";
?>

以上标题 添加到您的文件中,这样就可以了。

另一种方法是通过COM对象。但上面的内容应该足够了。