PHP作WAP开发时遇到的问题_PHP
1.文件格式
首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查更详细的资料,我这里只是略微的提到.在我看来wml类似于xml,有非常严格的格式,在作wap页面时,都得用wml来作为显示.
wml的语法非常简单,在用php作动态输出时,一定要发送一个头信息,标明本页面是wml,而不是别的什么*ml.
header("Content-type: text/vnd.wap.wml; charset=\"gb2312\""); ?> |
这里用的字符集是gb2312,在移动的平台上是没有任何问题的,但在联通的平台上就不行了,一定得用utf-8,为了更通用,还是用utf-8更安全.即
header("Content-type: text/vnd.wap.wml; charset=\"utf-8\""); ?> |
2.编码
上面说了字符集都应采用utf-8,这是一种容纳了多国语言的字符集,一个汉字是占双字节,utf-8占了4个字节,因此其容纳的信息量更大.在手机上编写的汉字,在将页面内码转成utf-8后,以后再打开就可能是一堆乱码.因此大家在作注释时,尽可能的用英文注释,省得以后看不懂.像 editplus,ultraedit等工具都可以转文件内码.
3.适配
世界各大手机厂商真是有病,开发出的手机千奇百怪,可以支持的格式也是五花八门.比如铃声,有的可以支持,16,32,48和弦,支持mid, wmv,有的不完全支持;有的支持gif,png,bmp,有的也不完全支持.这虽然是把手机的档次和成本拉开了,但却苦了作手机开发的兄弟们了.因为不可避免的要对手机所能支持的图片,铃声等多媒体信息作出一个匹配,这个匹配的处理,我们一般叫做手机适配.
要作手机适配,我们一般得有如下资料.
1)一份详细的手机适配资料表,里面应详细的说明手机所能支持的铃声,图片格式,还得有手机型号等信息
2)要正确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息.
有了上面的东东我们才能做出适配.以下给出一个我写的在wap开发中用到的类,可以用来取手机号,手机UA.
/** * 类名: mobile * 描述: 手机信息类 * 其他: 偶然 编写 */ class mobile { /** * 函数名称: getPhoneNumber * 函数功能: 取手机号 * 输入参数: none * 函数返回值: 成功返回号码,失败返回false * 其它说明: 说明 */ function getPhoneNumber() { if (isset($_SERVER['HTTP_X_NETWORK_INFO'])) { $str1 = $_SERVER['HTTP_X_NETWORK_INFO']; $getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i','',$str1); Return $getstr1; } elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID'])) { $getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID']; Return $getstr2; } elseif (isset($_SERVER['HTTP_X_UP_SUBNO'])) { $str3 = $_SERVER['HTTP_X_UP_SUBNO']; $getstr3 = preg_replace('/(.*)(11[d])(.*)/i','',$str3); Return $getstr3; } elseif (isset($_SERVER['DEVICEID'])) { Return $_SERVER['DEVICEID']; } else { Return false; } } /** * 函数名称: getHttpHeader * 函数功能: 取头信息 * 输入参数: none * 函数返回值: 成功返回号码,失败返回false * 其它说明: 说明 */ function getHttpHeader() { $str = ''; foreach ($_SERVER as $key=>$val) { $gstr = str_replace("&","&",$val); $str.= "$key -> ".$gstr."\r\n"; } Return $str; } /** * 函数名称: getUA * 函数功能: 取UA * 输入参数: none * 函数返回值: 成功返回号码,失败返回false * 其它说明: 说明 */ function getUA() { if (isset($_SERVER['HTTP_USER_AGENT'])) { Return $_SERVER['HTTP_USER_AGENT']; } else { Return false; } } /** * 函数名称: getPhoneType * 函数功能: 取得手机类型 * 输入参数: none * 函数返回值: 成功返回string,失败返回false * 其它说明: 说明 */ function getPhoneType() { $ua = $this->getUA(); if($ua!=false) { $str = explode(' ',$ua); Return $str[0]; } else { Return false; } } /** * 函数名称: isOpera * 函数功能: 判断是否是opera * 输入参数: none * 函数返回值: 成功返回string,失败返回false * 其它说明: 说明 */ function isOpera() { $uainfo = $this->getUA(); if (preg_match('/.*Opera.*/i',$uainfo)) { Return true; } else { Return false; } } /** * 函数名称: isM3gate * 函数功能: 判断是否是m3gate * 输入参数: none * 函数返回值: 成功返回string,失败返回false * 其它说明: 说明 */ function isM3gate() { $uainfo = $this->getUA(); if (preg_match('/M3Gate/i',$uainfo)) { Return true; } else { Return false; } } /** * 函数名称: getHttpAccept * 函数功能: 取得HA * 输入参数: none * 函数返回值: 成功返回string,失败返回false * 其它说明: 说明 */ function getHttpAccept() { if (isset($_SERVER['HTTP_ACCEPT'])) { Return $_SERVER['HTTP_ACCEPT']; } else { Return false; } } /** * 函数名称: getIP * 函数功能: 取得手机IP * 输入参数: none * 函数返回值: 成功返回string * 其它说明: 说明 */ function getIP() { $ip=getenv('REMOTE_ADDR'); $ip_ = getenv('HTTP_X_FORWARDED_FOR'); if (($ip_ != "") && ($ip_ != "unknown")) { $ip=$ip_; } return $ip; } } ?> |
4.页面设计
作wap开发时,wap页面是非常简单的.比html来说是简单到不能再简单了.在wap1.0里是没有表格之类的乱七八糟的东西的.所有的标签都是写在一个叫card的标签之内.可以用来分段.所以做页面的算是轻松了.
5.模拟器
作wap开发免不了要用各式各样的模拟器来测试,比较好的有m3gate,openwave,opera,还有一个叫winwap的,大家最好别用他来作测试,他的兼容性太好了,即使页面有错误都能给忽略掉.测试时跟用浏览器测试web页面一样,输入网址就可以了.没有比这更容易的事了.
6.注意事项
1)空格,特别是在定义DTD时,
echo "";
?>
里面如果哪个地方少个空格,就有你受的了.以前写的时候用了页面重排之后,把一些空格给干掉了,整整找了两天才找出错误来,大家千万别步我的后尘.
2)标签,如果标签不成对,会提示错误,大家注意就是了,很容易修正.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

7月29日消息,除1,799元的OPPOA3活力版手機之外,OPPO還推出了一款A3x(PKD130),提供星光白、暗夜紫、雲羽粉三種配色。根據@完美編排數位的說法,OPPOA3x似乎是一款定位線下的機型,跟活力版區別主要在於後置鏡頭換為32+2MP雙攝。總結定價如下:4+128GB版本1199元6+128GB版本1499元8+256GB版本1999元1.搭載聯發科天璣6300處理器配備LPDDR4X內存和UFS2.2閃存支援2TB存儲拓展採用6.67英寸“陽光屏” ,擁有1600×720解析度、1

8月17日消息,消息源@i冰宇宙今天發布微博,表示蘋果iPhone16ProMax精確尺寸6.88英寸,GalaxyS25Ultra精確尺寸6.86英寸,兩者都可視為6.9英寸。訊息源表示三星GalaxyS25Ultra比S24Ultra更窄的機身,還有更寬的螢幕,橫向螢幕佔94.1%,而S24Ultra橫向螢幕佔比是91.5%。 fenye查詢該訊息來源相關微博,他也評論了最新曝光的iPhone16ProMax照片,認為接近微曲是錯誤的,該機然是直屏+2.5D玻璃。

雖然最近幾年的蘋果一直被詬病創新不足,但是蘋果也並不總是止步不前。至少在硬體設計上,在蘋果產品的高單價支援下,它的工程師可以輕鬆嘗試一些全新的技術,而不需要過多的考慮成本問題。例如iPadPro,身為蘋果最愛的「顯示技術」試驗田,iPadPro從2021年的miniLED到2024年的串聯OLED,一直走在便攜智慧型裝置的顯示技術前端。雖然iPadPro並非首款搭載miniLED螢幕的便攜式智慧型裝置(微星較蘋果早一年發布miniLED筆記型電腦),但是當你比較兩者的參數,你會很快意識到他們不是一個

8月9日消息,在FMS2024峰會上,SK海力士展示了其最新的儲存產品,包括尚未正式發布規範的UFS4.1通用快閃記憶體。根據JEDEC固態技術協會官網訊息,目前公佈的最新UFS規範是2022年8月的UFS4.0,其理論介面速度高達46.4Gbps,預計UFS4.1將在傳輸速率上實現進一步的提升。 1.海力士展示了512GB和1TBUFS4.1通用快閃記憶體產品,基於321層V91TbTLCNAND快閃記憶體。 SK海力士也展出了3.2GbpsV92TbQLC和3.6GbpsV9H1TbTLC顆粒。海力士展示了基於V7

7月30日消息,消息來源YogeshBrar昨天(7月29日)在X平台發布推文,分享了小米POCOM6Plus5G手機以及POCOBudsX1耳機的實體照片,兩款產品官宣將於8月1日發布。小米POCOM6Plus5G手機訊息源表示,小米POCOM6Plus5G手機將配6.8吋LCD螢幕,搭載高通驍龍4Gen2AE處理器,背面配1.08億像素攝像頭,5030mAh容量電池。先前報導,這款手機可選紫色、黑色、銀色三種配色,整體與標準版POCOM6手機大致相同,但LED閃光燈環相對更加突出。 POCOB

8月19日消息,努比亞自Z50Ultra發布以來,一直秉承著真全面屏的設計,並且一直在高像素屏下前攝領域不斷探索。今日,據數位部落客智慧皮卡丘爆料稱,今年下半年即將發布的努比亞Z70Ultra將首發1.5K螢幕下攝影技術,是迄今為止業界分辨率最高的UDC方案。據悉,目前中興旗下的屏下前攝方案已推進到第六代。最新的屏下前攝方案在努比亞Z60Ultra、紅魔鬼9SPro系列中皆有所應有。螢幕解析度為2480x1116,介於1080P和1.5K解析度之間。這次努比亞將透過突破現有解析度的限制,將在業界

7月31日消息,消息源@i冰宇宙昨日(7月30日)在X平台發布推文,只寫道“16GByes!”,但從上下推文來判斷,應該是指三星GalaxyS25Ultra手機將會配備16GB的記憶體。三星手機記憶體容量更新三星曾在GalaxyS20Ultra和GalaxyS21Ultra手機上推出16GB記憶體。從GalaxyS22Ultra開始,包括最新旗艦GalaxyS24Ultra手機,三星手機的記憶體容量上限均為12GB。有消息稱,即將推出的三星GalaxyS25和GalaxyS25+將採用12GBLPDD

7月31日消息,科技媒體SamMobile昨(7月30日)發布博文,在SafetyKorea認證網站發現了適用於三星GalaxyS25Ultra手機的電池資訊。根據公告的訊息,本次曝光的電池型號為EB-BS938ABY和EB-BS938ABE,暫不清楚兩個型號有何不同。 fenye三星GalaxyS25Ultra手機不會採用GalaxyZFold6、GalaxyZFlip6折疊手機的雙電池方案,而是採用單電池設計。先前曾報道,三星不會升級優化GalaxyS25Ultra手機的電池規格,仍會採
