最近、「PHPでWord文書ファイルを作成する」作業中に問題に直面しています。
私のウェブサイトにはフォームがあります。「名前」、「電話番号」、「住所」などの10個のフィールドが含まれています。
ユーザーがこれらのフィールドに入力してフォームを送信すると、「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/>
等
word docファイルを作成するためにhtml形式を使用する方法は?