php 生成WML页面方法详解


Posted in PHP onAugust 09, 2009

由于静态的WAP页面在很多方面不能满足用户个性化的服务请求,因此通过WAP服务器端语言产生动态的WML页面,具有很广泛的应用价值和很高的商业价值。

WAP应用结构非常类似于Internet,一个典型的WAP应用请求是这样的:首先,具有WAP用户代理功能的移动终端(WAP手机等)通过内部运行的微浏览器(Micro Browser)对某一网站以无线方式发送WAP服务请求。该请求先由WAP网关截获,对信息内容进行编码压缩,以减少网络数据流量,同时根据需要将WAP协议转换成HTTP协议,然后将处理后的请求转送到相应WAP服务器。在WAP服务器端,根据页面扩展名等性质,被请求的页面直接或由服务器端脚本解释后输出,再经网关传回用户。

从上述WAP应用流程可以看到,生成动态WAP页面与动态产生Web网页的过程非常类似。但是由于WAP应用使用的WML语言来源于语法严格的XML,因此要求输出的格式必须按WAP网页的规范输出。同时,由于WAP协议的应用范围、移动客户端的软硬件水平等特殊性,对每次输出的页面的大小、图像的格式及容量都有一定限制。下面我们以PHP脚本语言为例,看看如何动态输出WAP页面。 中.国站长站

一、设置WEB服务器

首先你的 Web服务器要安装好PHP,即能处理PHP脚本程序。其次,为使Web服务器能同时识别和处理PHP、WML、WBMP等文件,Web 服务器的MIME表需添加以下的几种文件类型。

text/vnd.wap.wml .wml

image/vnd.wap.wbmp .wbmp

application/vnd.wap.wmlc .wmlc

text/vnd.wap.wmls.wmls

application/vnd.wap.wmlsc .wmlsc

二、用PHP输出简单动态WAP页面 Www^Chinaz^com

下面有一个最简单的PHP生成WAP页面的例子。注意由于需要PHP解释器来解释该程序,并输出WAP页面,因此所有类似程序应以.php为扩展名。

header(″Content-type: text/vnd.wap.wml″);

echo (″
″);

echo date( ″l dS of F Y h:i:s A″ );

echo (″
″);

?>

该例子在WAP手机模拟器中可以浏览,输出当前日期时间,而在普通的浏览器中无法识别,甚至会被认为是错误下载。这是因为在程序开头就声明了该输出文档为WML类型,该类型只有WAP设备能够识别并解释。值得注意的是,我们常见的HTML语言对规范性要求不严,大多数浏览器能“容忍”其中相当多的编写错误,而WML规范相当严格,一点失误都可能导致无法输出所需页面。

一旦我们知道了用PHP脚本输出WAP页面的标准过程,我们就能够使用PHP强大的功能配合以WML语言的交互处理以及WML Script的简单脚本,开发出适合我们需要的应用系统了。

三、用PHP动态生成图像

WAP应用使用一种特殊黑白的图像格式WBMP。我们可以用一些工具来将已有图像转换成WBMP格式,然后在WML文档中使用。但是在WAP站点上如果能动态地生成所需图像如K线图等,将会有广阔的应用前景。幸运的是,PHP的GD库(版本1.8以上)已经提供了相应函数。

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等系统中使用,我们可以在一些技术站点上找到它们。 Www^Chinaz^com

目前的大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码的,也就是采用UNICODE来编码。这样,如果我们直接在WML使用中文字符(GB2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字,例如:

header(″Content-type: text/vnd.wap.wml; charset=gb2312″);

echo (″ ″);

echo (″中文测试″);

echo (″ ″);

?>

PHP 相关文章推荐
生成静态页面的PHP类
Nov 25 PHP
php批量删除数据
Jan 18 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
第二章 PHP入门基础之php代码写法
Dec 30 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
php验证码生成代码
Nov 11 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
彻底杜绝PHP的session cookie错误
Aug 09 #PHP
PHP 5.3.0 安装分析心得
Aug 07 #PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 #PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 #PHP
PHP 翻页 实例代码
Aug 07 #PHP
php Sql Server连接失败问题及解决办法
Aug 07 #PHP
php_xmlhttp 乱码问题解决方法
Aug 07 #PHP
You might like
PHP添加MySQL数据记录代码
2008/06/07 PHP
php eval函数用法总结
2012/10/31 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
使用百度地图实现地图网格的示例
2018/02/06 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
python并发2之使用asyncio处理并发
2017/12/21 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
简短的公司员工自我评价分享
2013/11/13 职场文书
员工趣味活动方案
2014/08/27 职场文书
工程移交协议书
2016/03/24 职场文书
golang import自定义包方式
2021/04/29 Golang
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python