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 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
Jul 23 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
php删除数组指定元素实现代码
May 03 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 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 pki加密技术(openssl)详解
2013/07/01 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
python dataframe NaN处理方式
2019/12/26 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
保密普查工作实施方案
2014/02/25 职场文书
2014年端午节活动方案
2014/03/11 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
2016母亲节感恩话语
2015/12/09 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
python 统计代码耗时的几种方法分享
2021/04/02 Python
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL