记录下项目遇到的问题和解决方法。
1. 显示中文
在PHP页面显示的时候,我们通常需要在开头加入下面的代码来让我们的页面能正确显示中文:
<pre name="code" class="html"><meta content = text/html; charset=UTF-8 http-equiv = Content-Type>
是的,让页面显示UTF-8, 这样我们在写诸如此类的php代码时
echo '哈哈哈';
就能正确的在页面上显示中文了。
但是这样会有一个问题,我们存储到数据库时,如果直接写入中文,会导致在数据库里面看起来是这样的:
这样虽然你从PHP页面上打印出来的内容是争取的,可是如果你直接查看数据库的话,就不懂是什么内容了。
同样的,如果你在数据库里面输入的是能看懂的GBK编码的中文,如果用页面打印就变成了这样
那到底改怎么办?我们想要找到一种方法,要同时满足:
1. 通过php代码 echo直接可以打印出来中文
2. 在数据库里面显示的是能看懂的中文
3. 读取数据库到页面显示时也是能看懂的中文
毫无疑问,要想满足第1条,那么我们在开头毫无疑问要加入:
<meta content = text/html; charset=UTF-8 http-equiv = Content-Type>
那如何将UTF-8编码的中文存储到数据库后我们可以看懂呢?这里就需要进行两次转换了,UTF-8和GBK之间的转换了。
在我们从页面的内容(UTF-8编码)存到数据库(GBK)时和从数据库(GBK)读出到页面(UTF-8):
我们只需要用到这个函数:
iconv()
想要了解关于这个函数更多的内容请点击:
PHP:iconv- Manual
所以,我们在输入到数据库时,进行下列的转换:
同理,如果是从数据库读出来到页面,我们就进行gbk到utf-8的转换。
2. PHP:date()函数
date函数是用来从时间戳换算成我们想要的日期格式然后打印出来,这里主要记录一下各个单词代表的含义:
参数如下:
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
如果显示的时间与系统不一致,就要改PHP.ini配置文件。
系统默认是UTC时间
可以打开php.inc
设置 date.timezone = PRC
所以,如果我们想要输出例如 2015年05月27日 15:45格式的时间,我们就需要这样写:
echo date('Y年m月j日, H:i', $suggestions['suggestion_time']);
想要输出其他格式的,参照上面的各个参数就好了!