当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 利用 PHP 将 HTML 转化为 WML

Javascript
Javascript常用运算符(Operators)-javascript基础教程
JS是否可以跨文件同时控制多个iframe页面的应用技巧
不用ajax实现点击文字即可编辑的方法
用javascript来实现动画导航效果的代码
javascript支持firefox,ie7页面布局拖拽效果代码
IE与Firefox下javascript getyear年份的兼容性写法
javascript 不让鼠标事件触发
一个简单横向javascript日期控件
使Ext的Template可以解析二层的json数据的方法
表单项的name命名为submit、reset引起的问题
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
两个DIV等高的JS的实现代码
支持IE和firefox的js代码美化加亮源码
2007/12/23更新创意无限,简单实用(javascript log)
DOMAssitant最新版 DOMAssistant 2.5发布
用js实现的页面关键字密度查询代码
Javascript函数加壳多用于事件绑定
收集的几个不错的javascript类小例子
javascript下function声明一些小结
JS的replace方法与正则表达式结合应用讲解

Javascript 中的 利用 PHP 将 HTML 转化为 WML


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 424 ::
收藏到网摘: n/a

WML,WAP,PHP,HTML

最近在做学校的 WAP 网站,其中通知公告、新闻等信息来源于原来的学校网站上的信息,因此就涉及到一个 HTML 转化为 WML 的问题。尽管现在的 WAP 2.0 支持 XHTML 的内容显示,但是 XHTML 语法要求比 HTML 严格,我们来源信息的 HTML 内容并不能保证符合 XHTML 的要求,而且 XHTML 相对于 WML 来说,内容的流量还是相对比较多一些的,另外仅支持 WAP 1.x 的手机设备也不支持 XHTML,因此为了支持更多的手机设备用户能够正常的浏览我们 WAP 网站,我们采用了 WML,而不是 XHTML。

对于新闻、通知、公告之类的信息,对手机设备用户来说,最关心的是文字内容,因此我们的主要工作就是按照一定的格式(比如该换行分段的地方要换行分段)来从原来的 HTML 页面里提取出纯文本信息,并将其转化为 WML。下面的代码演示了如何来实现这个步骤:

PHP代码:
<?php
       
    
/**
    * @author 马秉尧
    * @copyright 2005 CoolCode.CN
    */
       
    
function text2wml($content) {
        
// 将 WML 变量前缀"$"转义
       
$content = str_replace('$', '$$', $content);
       
// 转换特殊字符,并将 Windows/DOS 换行符(\r\n)转化为 Unix 换行符(\n)
       
$content = str_replace("\r\n", "\n", htmlspecialchars($content));
       
// 通过换行符来将各行分开进行处理(过滤空行)
       
$content = explode("\n", $content);
       for (
$i = 0; $i < count($content); $i++) {
           
// 过滤首尾空格
           
$content[$i] = trim($content[$i]);
           
// 如果去掉全角空格为空行,则设为空行,否则不对全角空格过滤。
           
if (str_replace(" ", "", $content[$i]) == "") $content[$i] = "";
       }
       
//合并各行,转化为 WML,并过滤掉空行
       
$content = str_replace("<p><br /></p>\n", "", "<p>".implode("<br /></p>\n<p>", $content)."<br /></p>\n");
       return
$content;
   }
      
   function
html2wml($content) {
       
// 过滤掉样式表和脚本
       
$content = preg_replace("/<style .*?<\/style>/is", "", $content);
       
$content = preg_replace("/<script .*?<\/script>/is", "", $content);
       
// 首先将各种可以引起换行的标签(如<br />、<p> 之类)替换成换行符"\n"
       
$content = preg_replace("/<br \s*\/?\/>/i", "\n", $content);
       
$content = preg_replace("/<\/?p>/i", "\n", $content);
       
$content = preg_replace("/<\/?td>/i", "\n", $content);
       
$content = preg_replace("/<\/?div>/i", "\n", $content);
       
$content = preg_replace("/<\/?blockquote>/i", "\n", $content);
       
$content = preg_replace("/<\/?li>/i", "\n", $content);
       
// 将"&nbsp;"替换为空格
       
$content = preg_replace("/\&nbsp\;/i", " ", $content);
       
// 某些不规范的网页中可能有"&nbsp",在普通网页中显示会按照"&nbsp;"显示,不会引起错误,但是在 WAP 中会原样显示,因此也要替换成空格。
       
$content = preg_replace("/\&nbsp/i", " ", $content);
       
// 过滤掉剩下的 HTML 标签
       
$content = strip_tags($content);
       
// 将 HTML 中的实体(entity)转化为它所对应的字符(WML 仅支持很有现的几个 entity),这里我转化的是中文网页,因此我指定了"GB2312"编码。
       
$content = html_entity_decode($content, ENT_QUOTES, "GB2312");
       
// 过滤掉不能转化的实体(entity)
       
$content = preg_replace("/\&\#.*?\;/i", "", $content);
      
       
// 上面是将 HTML 网页内容转化为带换行的纯文本,下面是将这些纯文本转化为 WML。
       
return text2wml($content);
   }
   
?>