php将html转成wml的WAP标记语言实例


Posted in PHP onJuly 08, 2015

本文实例讲述了php将html转成wml的WAP标记语言的方法。分享给大家供大家参考。具体实现方法如下:

<?php
//---------------------------------------
// Html 标记WAP语言
//----------------------------------------
function html2wml($content)
{
  //保留图片
  preg_match_all("/<img([^>]*)>/isU", $content, $imgarr);
  if(isset($imgarr[0]) && count($imgarr[0])>0 )
  {
   foreach($imgarr[0] as $k=>$v) $content = str_replace($v, "WAP-IMG::{$k}", $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);
  // 将" "替换为空格
  $content = preg_replace("/\\ \\;/i", " ", $content);
  $content = preg_replace("/\\ /i", " ", $content);
  // 过滤掉剩下的 HTML 标签
  $content = strip_tags($content);
  // 将 HTML 中的实体(entity)转化为它所对应的字符
  $content = html_entity_decode($content, ENT_QUOTES, "GB2312");
  // 过滤掉不能转化的实体(entity)
  $content = preg_replace('/\\&\\#.*?\\;/i', '', $content);
  // 上面是将 HTML 网页内容转化为带换行的纯文本,下面是将这些纯文本转化为 WML。
  $content = str_replace('$', '$$', $content);
  $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] = '';
  }
  $content = str_replace("<p><br /></p>\\n", "", '<p>'.implode("<br /></p>\\n<p>", $content)."<br /></p>\\n");
  //还原图片
  if(isset($imgarr[0]) && count($imgarr[0])>0 )
  {
    foreach($imgarr[0] as $k=>$v)
    {
     $attstr = (preg_match('#/$#', $imgarr[1][$k])) ? '<img '.$imgarr[1][$k].'>' : '<img '.$imgarr[1][$k].' />';
     $content = str_replace("WAP-IMG::{$k}", $attstr, $content);
    }
  }
  $content = preg_replace("/&[a-z]{3,10};/isU", ' ', $content);
  return $content;
}
function text2wml($content)
{
  $content = str_replace('$', '$$', $content);
  $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;
}
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP 开源AJAX框架14种
Aug 24 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
destoon各类调用汇总
Jun 20 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
实例讲解php数据访问
May 09 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
ThinkPHP框架实现数据增删改
May 07 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 #PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 #PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 #PHP
PHP实现多文件上传的方法
Jul 08 #PHP
PHP实现图片自动清理的方法
Jul 08 #PHP
php-redis中的sort排序函数总结
Jul 08 #PHP
PHP通过串口实现发送短信
Jul 08 #PHP
You might like
php分页示例代码
2007/03/19 PHP
PHP的拦截器实例分析
2014/11/03 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
php二维码生成以及下载实现
2017/09/28 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
js获取form的方法
2015/05/06 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
js断点调试经验分享
2017/12/08 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python实现批处理文件
2020/07/28 Python
Python排序函数的使用方法详解
2020/12/11 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
爱护公共设施标语
2014/06/24 职场文书
统计工作个人总结
2015/03/03 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle