"utf-8" standalone="yes"?>'';
$xml = "<response>
<code>0</code>
</response>";
//Send xml data
echo $xml;
工作得不错. 但需要一些改进.
$xml = ''<?xml version="1.0" encoding="utf-8" standalone="yes"?>'';
$xml = "<response>
<code>0</code>
</response>";
//Send xml data
header("content-type: text/xml");
echo $xml;
注意header行. 该行告知浏览器发送的是xml类型的内容. 所以浏览器能正确的处理. 很多的javascript库也依赖头信息.
类似的有 javascript , css, jpg image, png image:
JavaScript
header("content-type: application/x-javascript");
echo "var a = 10";
CSS
header("content-type: text/css");
echo "#div id { background:#000; }";
9. 为mysql连接设置正确的字符编码
曾经遇到过在mysql表中设置了unicode/utf-8编码, phpadmin也能正确显示, 但当你获取内容并在页面输出的时候,会出现乱码. 这里的问题出在mysql连接的字符编码.
//Attempt to connect to database
$c = mysqli_connect($this->host , $this->username, $this->password);
//Check connection validity
if (!$c)
{
die ("Could not connect to the database host: <br />". mysqli_connect_error());
}
//Set the character set of the connection
if(!mysqli_set_charset ( $c , ''UTF8'' ))
{
die(''mysqli_set_charset() failed'');
}
一旦连接数据库, 最好设置连接的 characterset. 你的应用如果要支持多语言, 这么做是必须的.
10. 使用 htmlentities 设置正确的编码选项
php5.4前, 字符的默认编码是ISO-8859-1, 不能直接输出如À â等.
$value = htmlentities($this->value , ENT_QUOTES , CHARSET);
php5.4以后, 默认编码为UTF-8, 这將解决很多问题. 但如果你的应用是多语言的, 仍然要留意编码问题,.
11. 不要在应用中使用gzip压缩输出, 让apache处理
考虑过使用 ob_gzhandler 吗? 不要那样做. 毫无意义. php只应用来编写应用. 不应操心服务器和浏览器的数据传输优化问题.
使用apache的mod_gzip/mod_deflate 模块压缩内容.
12. 使用json_encode输出动态javascript内容
时常会用php输出动态javascript内容:
$images = array(
''myself.png'' , ''friends.png'' , ''colleagues.png''
);
$js_code = '''';
foreach($images as $image)
{
$js_code .= "''$image'' ,";
}
$js_code = ''var images = ['' . $js_code . '']; '';
echo $js_code;
//Output is var images = [''myself.png'' ,''friends.png'' ,''colleagues.png'' ,];
更聪明的做法, 使用 json_encode:
$images = array(
''myself.png'' , ''friends.png'' , ''colleagues.png''
);
$js_code = ''var images = '' . json_encode($images);
echo $js_code;
//Output is : var images = ["myself.png","friends.png","colleagues.png"]
优雅乎?
13. 写文件前, 检查目录写权限
写或保存文件前, 确保目录是可写的, 假如不可写, 输出错误信息. 这会节约你很多调试时间. linux系统中, 需要处理权限, 目录权限不当会导致很多很多的问题, 文件也有可能无法读取等等.
确保你的应用足够智能, 输出某些重要信息.
$contents = "All the content";
$file_path = "/var/www/project/content.txt";
file_put_contents($file_path , $contents);
这大体上正确. 但有些间接的问题. file_put_contents 可能会由于几个原因失败:
>>父目录不存在
>>目录存在, 但不可写
>>文件被写锁住?
所以写文件前做明确的检查更好.
$contents = "All the content";
$dir = ''/var/www