1z%K4S I \h}9s0wml的語(yǔ)法非常簡(jiǎn)單,在用php作動(dòng)態(tài)輸出時(shí),一定要發(fā)送一個(gè)頭信息,標(biāo)明本頁(yè)面是wml,而不是別的什么*ml.IT我最牛-程序員的技術(shù)討論與分享園地#Xeu` b[AF L
IT我最牛-程序員的技術(shù)討論與分享園地4ch8@C$X%t3usHh6Gheader("Content-type: text/vnd.wap.wml; charset=\"gb2312\"");
&Qq_Y vhcu0?5A!l1Ek0?>IT我最牛-程序員的技術(shù)討論與分享園地} K:E$~S4}c
這里用的字符集是gb2312,在移動(dòng)的平臺(tái)上是沒(méi)有任何問(wèn)題的,但在聯(lián)通的平臺(tái)上就不行了,一定得用utf-8,為了更通用,還是用utf-8更安全.即IT我最牛-程序員的技術(shù)討論與分享園地9Ycuv W6p)i8Gi
IT我最牛-程序員的技術(shù)討論與分享園地ov(v h!E}y Yheader("Content-type: text/vnd.wap.wml; charset=\"utf-8\"");
0yR8~ I2F_:q0?>
%Ih Pre't$RQ02.編碼IT我最牛-程序員的技術(shù)討論與分享園地"|,Rlb3_$np
IT我最牛-程序員的技術(shù)討論與分享園地2? C D/X)eiV上面說(shuō)了字符集都應(yīng)采用utf-8,這是一種容納了多國(guó)語(yǔ)言的字符集,一個(gè)漢字是占雙字節(jié),utf-8占了4個(gè)字節(jié),因此其容納的信息量更大.在手機(jī)上編寫(xiě)的漢字,在將頁(yè)面內(nèi)碼轉(zhuǎn)成utf-8后,以后再打開(kāi)就可能是一堆亂碼.因此大家在作注釋時(shí),盡可能的用英文注釋,省得以后看不懂.像editplus,ultraedit等工具都可以轉(zhuǎn)文件內(nèi)碼.IT我最牛-程序員的技術(shù)討論與分享園地_7A*Ill|Py
hv"i8}%Rp03.適配
,{F+kTW@@{0 IT我最牛-程序員的技術(shù)討論與分享園地:WXdHZvYD世界各大手機(jī)廠商真是有病,開(kāi)發(fā)出的手機(jī)千奇百怪,可以支持的格式也是五花八門(mén).比如鈴聲,有的可以支持,16,32,48和弦,支持mid,wmv,有的不完全支持;有的支持gif,png,bmp,有的也不完全支持.這雖然是把手機(jī)的檔次和成本拉開(kāi)了,但卻苦了作手機(jī)開(kāi)發(fā)的兄弟們了.因?yàn)椴豢杀苊獾囊獙?duì)手機(jī)所能支持的圖片,鈴聲等多媒體信息作出一個(gè)匹配,這個(gè)匹配的處理,我們一般叫做手機(jī)適配.IT我最牛-程序員的技術(shù)討論與分享園地1D3fctS
要作手機(jī)適配,我們一般得有如下資料.IT我最牛-程序員的技術(shù)討論與分享園地Oo*Ay?0g-\2C
)f5s+m\Il F)Y01)一份詳細(xì)的手機(jī)適配資料表,里面應(yīng)詳細(xì)的說(shuō)明手機(jī)所能支持的鈴聲,圖片格式,還得有手機(jī)型號(hào)等信息
&eFc.tgT$z%d{02)要正確的獲取手機(jī)的UA,什么是UA,就是(user agent),實(shí)際上就是用戶的手機(jī)信息.IT我最牛-程序員的技術(shù)討論與分享園地L{hUvg4n#Q-A'H
#v-y#@ Ga0有了上面的東東我們才能做出適配.以下給出一個(gè)我寫(xiě)的在wap開(kāi)發(fā)中用到的類,可以用來(lái)取手機(jī)號(hào),手機(jī)UA.IT我最牛-程序員的技術(shù)討論與分享園地7A*J^ SO
TOvo:Bi(~0 /**IT我最牛-程序員的技術(shù)討論與分享園地;E&{(T5ROQcl?3F
* 類名: mobile
sh;FMa0* 描述: 手機(jī)信息類IT我最牛-程序員的技術(shù)討論與分享園地/a(GCL5s*ou x_
* 其他: 偶然 編寫(xiě)
6q+jK/e9l"a1XR%l}*j0*/
;N'x~P:N2s0class mobileIT我最牛-程序員的技術(shù)討論與分享園地&B&fgo2y8E
{IT我最牛-程序員的技術(shù)討論與分享園地'b'l^H(a Pa
/**IT我最牛-程序員的技術(shù)討論與分享園地k8S7Z)y Ps
* 函數(shù)名稱: getPhoneNumberIT我最牛-程序員的技術(shù)討論與分享園地K.u$OOLJU2~
* 函數(shù)功能: 取手機(jī)號(hào)IT我最牛-程序員的技術(shù)討論與分享園地I|c:z[Aj%cX
* 輸入?yún)?shù): noneIT我最牛-程序員的技術(shù)討論與分享園地 M M Q%Z-G t_'wX
* 函數(shù)返回值: 成功返回號(hào)碼,失敗返回falseIT我最牛-程序員的技術(shù)討論與分享園地PtYmlM9@"v#P
* 其它說(shuō)明: 說(shuō)明IT我最牛-程序員的技術(shù)討論與分享園地.s]iBj#SQ abi
*/IT我最牛-程序員的技術(shù)討論與分享園地r){ U5W-b9n/k
function getPhoneNumber()
M#~:N;jy1S/G"CZ0{
.u W2N4w a}kX"i9r%ss{0if (isset($_SERVER['HTTP_X_NETWORK_INFO']))IT我最牛-程序員的技術(shù)討論與分享園地2n5z S\k3n)TK
{
OG8D6B7Tc0$str1 = $_SERVER['HTTP_X_NETWORK_INFO'];
4E| i h j"v*^oi0$getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i','',$str1);
\4wQ#M,R0Return $getstr1;IT我最牛-程序員的技術(shù)討論與分享園地4mDq+y9MqYj
}IT我最牛-程序員的技術(shù)討論與分享園地6r%uSc;R"C
elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID']))
} b8Ew.D JrV C6xP0{
\'cO m4bJM0$getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];
|h^{T0Return $getstr2;
umW\O3s$~0}
5qPm z1e*A*BW0I^0elseif (isset($_SERVER['HTTP_X_UP_SUBNO']))IT我最牛-程序員的技術(shù)討論與分享園地:S2my)RY5JKq6\V
{IT我最牛-程序員的技術(shù)討論與分享園地|#^A(}F4| _0F)w1Q
$str3 = $_SERVER['HTTP_X_UP_SUBNO'];IT我最牛-程序員的技術(shù)討論與分享園地7Q6DDk7yT5|
$getstr3 = preg_replace('/(.*)(11[d])(.*)/i','',$str3);IT我最牛-程序員的技術(shù)討論與分享園地8{0s9gI%vN
Return $getstr3;
c4On"j6xN;m*I0}IT我最牛-程序員的技術(shù)討論與分享園地 m*[ x#\1@ E)b c
elseif (isset($_SERVER['DEVICEID']))
;_9n y7HNp^5CY{H0{
i`2Qv u fM0Return $_SERVER['DEVICEID'];
5ZT!pg&rj0}IT我最牛-程序員的技術(shù)討論與分享園地0TorKL:[Z
elseIT我最牛-程序員的技術(shù)討論與分享園地P _6DbY6K(Uh
{IT我最牛-程序員的技術(shù)討論與分享園地izRw p+h&u%i)q
Return false;
z0aK @&uUt3Y+e0}IT我最牛-程序員的技術(shù)討論與分享園地9j$i w6An7G4|
}IT我最牛-程序員的技術(shù)討論與分享園地E6t(G^]F
/**IT我最牛-程序員的技術(shù)討論與分享園地L1| U Kn4J5VK
* 函數(shù)名稱: getHttpHeader
'^I(tp S kiOv0* 函數(shù)功能: 取頭信息IT我最牛-程序員的技術(shù)討論與分享園地9Jzj,g`i_
* 輸入?yún)?shù): none
bH2J ^Y/c0* 函數(shù)返回值: 成功返回號(hào)碼,失敗返回false
W2af\ }L:Zn^x0* 其它說(shuō)明: 說(shuō)明
~oX?n\1R0*/
t@Su#t:b*| Ixw0function getHttpHeader()IT我最牛-程序員的技術(shù)討論與分享園地J}2M)ucnbCK
{IT我最牛-程序員的技術(shù)討論與分享園地zb Wn0eH D6Q
$str = '';
2K$W[awOh*@6AS0foreach ($_SERVER as $key=>$val)IT我最牛-程序員的技術(shù)討論與分享園地2s9J'T^H~'t
{IT我最牛-程序員的技術(shù)討論與分享園地1_(OSAA ^2|
$gstr = str_replace("&","&",$val);IT我最牛-程序員的技術(shù)討論與分享園地'tu)N/Z*]|
$str.= "$key -> ".$gstr."\rIT我最牛-程序員的技術(shù)討論與分享園地umtUII/vx:u[
";IT我最牛-程序員的技術(shù)討論與分享園地]R8NQ'c G
}
TLiV)u0Return $str;IT我最牛-程序員的技術(shù)討論與分享園地%H3iF*gT2N
}IT我最牛-程序員的技術(shù)討論與分享園地2UU#TkQ*ko
Cl2I\|tOy)DZ0/**
)h MV+lt6uJ4iF0* 函數(shù)名稱: getUAIT我最牛-程序員的技術(shù)討論與分享園地r B u'E!|(lsOl%v|
* 函數(shù)功能: 取UA
l'X:s K:[?7`DB2u;]0* 輸入?yún)?shù): noneIT我最牛-程序員的技術(shù)討論與分享園地zTtnw
* 函數(shù)返回值: 成功返回號(hào)碼,失敗返回falseIT我最牛-程序員的技術(shù)討論與分享園地}P8U {Zf:J*J
* 其它說(shuō)明: 說(shuō)明IT我最牛-程序員的技術(shù)討論與分享園地lSL1rapp
*/IT我最牛-程序員的技術(shù)討論與分享園地1KP U5S$r"P&l
function getUA()IT我最牛-程序員的技術(shù)討論與分享園地gS.zV+ex1oCS
{
H^L,G ~N6q T ~$y'c.u0if (isset($_SERVER['HTTP_USER_AGENT']))
j Ac] Bow0{
_ [}JS~3e/vW0Return $_SERVER['HTTP_USER_AGENT'];
5F9K3zeAr-U*w6K i$i4h0}
(D5Wm\H0t3Z9\'O.R0else
r`9V-p^"E?-V9[0{IT我最牛-程序員的技術(shù)討論與分享園地!va$y5rA0V
Return false;IT我最牛-程序員的技術(shù)討論與分享園地Mj8Ej+S0qH0s,D
}
7Pc2] Yx0}
k*GI,T(NJzN0/**
n)_Y'X5\ J!r0* 函數(shù)名稱: getPhoneTypeIT我最牛-程序員的技術(shù)討論與分享園地\0TBLe6~i1u
* 函數(shù)功能: 取得手機(jī)類型
.y viJJ _0* 輸入?yún)?shù): noneIT我最牛-程序員的技術(shù)討論與分享園地3Or7SXU{
* 函數(shù)返回值: 成功返回string,失敗返回falseIT我最牛-程序員的技術(shù)討論與分享園地$L)aa'j KO
* 其它說(shuō)明: 說(shuō)明IT我最牛-程序員的技術(shù)討論與分享園地 fY wl;]M Q
*/IT我最牛-程序員的技術(shù)討論與分享園地-^2{+g4y'J
function getPhoneType()IT我最牛-程序員的技術(shù)討論與分享園地 onXU0Y I
{IT我最牛-程序員的技術(shù)討論與分享園地8|x\C N&Ep8_
$ua = $this->getUA();IT我最牛-程序員的技術(shù)討論與分享園地F&I:Vvj&D$L
if($ua!=false)
!l!O/_r8k]'n0{IT我最牛-程序員的技術(shù)討論與分享園地DL(v~!@+D"l }gZ
$str = explode(' ',$ua);IT我最牛-程序員的技術(shù)討論與分享園地;\!Bc+sRg^6d
Return $str[0];IT我最牛-程序員的技術(shù)討論與分享園地sabYa]$^O:Ui9d x5L
}IT我最牛-程序員的技術(shù)討論與分享園地1PaOIw_3e
elseIT我最牛-程序員的技術(shù)討論與分享園地$O/CR2g/WV
{
[nz(Rj0Return false;
EE.},L6hIN6an0}
0}1[V;u*d`0}
/**
n4R1u*s4@7P4c3B |3M0* 函數(shù)名稱: isOperaIT我最牛-程序員的技術(shù)討論與分享園地CE3NA`!i
* 函數(shù)功能: 判斷是否是opera
D)h x/uea0* 輸入?yún)?shù): none www.knowsky.com
9Vu}KRn6Ai1lz0* 函數(shù)返回值: 成功返回string,失敗返回false
TCh1w/A`S0* 其它說(shuō)明: 說(shuō)明
+D}(H'g$|YC B s0*/IT我最牛-程序員的技術(shù)討論與分享園地$`7y bLf%~
function isOpera()
@9`0L1V,d?a"G0{
@^&}1G/p(e r$t'jKm0$uainfo = $this->getUA();IT我最牛-程序員的技術(shù)討論與分享園地 Q j"U:O7a
if (preg_match('/.*Opera.*/i',$uainfo))
U VD IzU w*i'Y/TB0{IT我最牛-程序員的技術(shù)討論與分享園地SFAN|2g
Return true;IT我最牛-程序員的技術(shù)討論與分享園地FICAA
}IT我最牛-程序員的技術(shù)討論與分享園地 dw6Y9l(\.z6bw
else
#Iv W1P H&wMY0{
H2OIPyr/lB#x0Return false;
4T-S} L+oN0}IT我最牛-程序員的技術(shù)討論與分享園地}Pcc9q \7M$s'R
}
/**IT我最牛-程序員的技術(shù)討論與分享園地8I#{J T;N
* 函數(shù)名稱: isM3gate
/H%h?-hLG/S @Cw0* 函數(shù)功能: 判斷是否是m3gate
!{f S,Ck;KZ0?0* 輸入?yún)?shù): noneIT我最牛-程序員的技術(shù)討論與分享園地qN{8Tl
* 函數(shù)返回值: 成功返回string,失敗返回falseIT我最牛-程序員的技術(shù)討論與分享園地d&Jn1Z?J3nJ7l
* 其它說(shuō)明: 說(shuō)明
5h(B3ho6M1K0*/IT我最牛-程序員的技術(shù)討論與分享園地?a#xt e`$i#g
function isM3gate()
W!c A&y%f#L!`;@ }0{
%y6{0Evu!k-S0$uainfo = $this->getUA();IT我最牛-程序員的技術(shù)討論與分享園地:^iIfx-TODw P
if (preg_match('/M3Gate/i',$uainfo))
kQErE!DS*r8A0{
} y)WJy NU;w'N"]0Return true;
L1z3I*QDqv%SJ0}IT我最牛-程序員的技術(shù)討論與分享園地[l@3l1M+ixi [#t