本文实例讲述了html">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程序设计有所帮助。