如何在php联系人表单中设置UTF-8编码.只有拉丁字符才能正确显示



这是我的网站联系人表单的php代码。问题是没有任何utf-8编码,所以字符(除了拉丁语(以符号的形式返回。数据被插入到一个数组中,因此数组以信息的形式返回。

function handle_form_postdata( $post_array ) {
$data = array();
// Sanitize data, or initialize if they don't exist.
$data['the_name']    = isset( $post_array['the_name'] ) ? trim( $post_array['the_name'] ) : '';
$data['the_email']   = isset( $post_array['the_email'] ) ? trim( $post_array['the_email'] ) : '';
$data['arrive']      = isset( $post_array['arrive'] ) ? trim( $post_array['arrive'] ) : '';
$data['depart']      = isset( $post_array['depart'] ) ? trim( $post_array['depart'] ) : '';
$data['guests']      = isset( $post_array['guests'] ) ? trim( $post_array['guests'] ) : '';
$data['room_select']      = isset( $post_array['room_select'] ) ? trim( $post_array['room_select'] ) : '';
$data['children']    = isset( $post_array['children'] ) ? trim( $post_array['children'] ) : '';
$data['the_message'] = isset( $post_array['the_message'] ) ? filter_var( $post_array['the_message'], FILTER_SANITIZE_STRING ) : '';
$data['errorString'] = '';
$data['emailbody']   = '';
$data['emailSent']   = false;
$data['emailSent'] = mail( 'info@alleywayhouse-hydra.gr', 'Availability question for alleywayhouse-hydra', $data['emailbody'], 'From: "' . $data['the_name'] . '" <' . $data['the_email'] . '>' );  
}
}
return $data;}

邮件功能需要:

mail($to, $subject, $message, $headers)

将标题添加到函数中的第四个参数

"Content-Type: text/html; charset=UTF-8"

它应该是这样的:

$headers = "Content-Type: text/html; charset=UTF-8rn".
"From: {$data['the_name']} <{$data['the_email']}>";
$subject = 'Availability question for alleywayhouse-hydra';
$data['emailSent'] = mail('info@alleywayhouse-hydra.gr', $subject, $data['emailbody'], $headers);

此外,您的函数可以这样重构:

function handle_form_postdata($post_array)
{
$data = [];
$keys = ['the_name', 'the_email', 'arrive', 'depart', 'guests', 'room_select', 'children'];
foreach ($keys as $key) {
$data[$key] = isset($post_array[$key]) ? trim($post_array[$key]) : '';
}
$data['the_message'] = isset($post_array['the_message']) ? filter_var($post_array['the_message'], FILTER_SANITIZE_STRING) : '';
$data['errorString'] = '';
$data['emailbody'] = '';
$data['emailSent'] = false;
$headers = "Content-Type: text/html; charset=UTF-8rn" .
"From: {$data['the_name']} <{$data['the_email']}>";
$subject = 'Availability question for alleywayhouse-hydra';
$data['emailSent'] = mail('info@alleywayhouse-hydra.gr', $subject, $data['emailbody'], $headers);
return $data;
}

最新更新