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