这是我的联系功能:
public static function contact_anon()
{
$form = new Form('contact_anon');
$form->field('email', 'text', array
(
'max_length' => 45,
'valid_email' => true
));
$form->field('message', 'textarea', array
(
'max_length' => 400,
'min_length' => 25
));
if($data = $form->validate())
{
$envoi = array
(
'message' => $data['message'],
'email' => $data['email']
);
mail('mymail@gmail.com', lang('contact_anon'), lang('contact_anon_text', $envoi), 'From: noreply@'.$_SERVER['HTTP_HOST']);
}
return $form;
}
然后我有另一个 php 文件,其中包含将要发送的内容文本 + 来自表单的消息:
<?php
fw::$lang = array_merge(fw::$lang, array
(
'contact_anon_text' => "You have been contacted :
Message : {message}
Mail : {email}"
));
表单运行良好,但{message}
无法正确显示,例如:
j\'écris avec des accents pour voir si ça marche.
该网站有一个 UTF8 字符集,但我不了解 php,我尝试了以下内容:
'message' => htmlentities((utf8_decode($data['message']), ENT_QUOTES),
但它返回:
syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting '('
我知道有数百篇关于 UTF8 的帖子,我检查了它们,阅读了 php mnual 和 sql 手册,但由于我是初学者而不是说英语的人,所以无法理解。
即使数据库使用的是utf8_general_ci,我在向数据库发送文本字段时也遇到了同样的问题。所以我想这绝对是我的 php 代码的问题。我正在使用带有控制器的 MVC 脚本。为了部分解决 SQL 问题,我使用:
return mysql_real_escape_string($string);
....
db::escape($username)
所以输出是正确的,但我更喜欢将 php 配置为使用 UT8 并允许使用法语口音等特殊字符。