三、用php动态生成图像
wap应用使用一种特殊黑白的图像格式wbmp。我们可以用一些工具来将已有图像转换成wbmp格式,然后在wml文档中使用。但是在wap站点上如果能动态地生成所需图像如k线图等,将会有广阔的应用前景。幸运的是,php的gd库(版本1.8以上)已经提供了相应函数。
<?php
header(″content-type: image/vnd.wap.wbmp″);
sim = imagecreate(50, 50);
swhite = imagecolorallocate(sim,255,255,255);
sblack = imagecolorallocate(sim,0,0,0);
imagerectangle(sim, 5, 5, 20, 20, sblack);
imagewbmp(sim); imagedestroy(sim);
?>
该文件将在wap模拟器中显示一个黑色矩形框。注意要使用gd的图像函数库,必须在php配置中加载php_gd.dll库文件。
四、在php中处理汉字
wap作为一种全球应用,选择了unicode 2.0作为其标准字符集编码,以便能同时处理包括英文、中文、日文、法文等多种文字。而我们平常处理汉字使用的是gb2312编码,不同的内码标准势必不能通用,因此如果不在两种编码之间通过码表进行转换,就会出现汉字乱码现象。现在已经有较成熟的gb-2312与unicode编码转换的程序和函数,并在asp、php、jsp等系统中使用,我们可以在一些技术站点上找到它们。
目前的大多数wap手机(nokia7110、爱立信r320s等等)都是使用utf-8编码的,也就是采用unicode来编码。这样,如果我们直接在wml使用中文字符(gb2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行unicode的编码。而在少数支持gb2312编码的手机或wap终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字,例如:
<?php
header(″content-type: text/vnd.wap.wml; charset=gb2312″);
echo (″<wml><card><p>″);
echo (″中文测试″);
echo (″</p></card></wml>″);
?>