php将html转成wml的WAP标记语言实例
内容摘要
本文实例讲述了php将html转成wml的WAP标记语言的方法。分享给大家供大家参考。具体实现方法如下:
<?php
//---------------------------------------
// Html 标记WAP
<?php
//---------------------------------------
// Html 标记WAP
文章正文
本文实例讲述了php将html转成wml的WAP标记语言的方法。分享给大家供大家参考。具体实现方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | <?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程序设计有所帮助。
代码注释