ホームページ  >  記事  >  バックエンド開発  >  wap 開発に php を使用するときに発生する問題_PHP チュートリアル

wap 開発に php を使用するときに発生する問題_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:34:59723ブラウズ

选择自 slamdunk3 的 Blog

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." ";
}
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 www.knowsky.com
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function isOpera()
{
$uainfo = $this->getUA();
if (preg_match(/.*Opera.*/i,$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 関数名: isM3gate
* 関数の機能: m3gate かどうかを判定します
* 入力パラメーター: なし
* 関数の戻り値: 成功した場合は文字列を返し、失敗した場合は false を返します
* その他の命令: 説明
*/
function isM3gate()
{
$uainfo = $this->getUA();
if (preg_match(/M3Gate/i,$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 関数名: getHttpAccept
* 関数関数: Get HA
* 入力パラメーター: なし
* 関数の戻り値: 成功した場合は文字列を返し、失敗した場合は false を返します
* その他の命令: 説明
*/
function getHttpAccept()
{
if (isset($_SERVER[HTTP_ACCEPT]))
{
Return $_SERVER[HTTP_ACCEPT];
}
else
{
Return false;
}
}

/**
* 関数名: getIP
* 関数関数: 携帯電話の IP を取得します
* 入力パラメーター: なし
* 関数の戻り値: 成功時に返される文字列
* その他の命令: 説明
*/
function getIP()
{
$ip=getenv(REMOTE_ADDR);
$ip_ = getenv(HTTP_X_FORWARDED_FOR);
if (($ip_ != "") && ($ip_ ! = "不明"))
{
$ip=$ip_;
}
return $ip;
}
}
?>

4. ページデザイン

wap を開発する場合、wap ページは html よりも単純です。wap1.0 では、すべてのタグがカード タグ内に記述されます。セグメンテーションができるので、ページの作成が簡単です

5.エミュレータ

Wap の開発では、テストにさまざまなシミュレータを使用する必要があります。より優れたものは、たとえエラーがあっても、m3gate、openwave、opera と呼ばれるものです。ページ上では、ブラウザで Web ページをテストするのと同じように、URL を入力するだけで無視できます

6. 注意事項

1) スペース、特に DTD を定義する場合、


エコー「」;
?>


どこかにスペースがない場合は、問題が発生します。以前、ページを再配置したときに、エラーを見つけるのに 2 日かかりました。

2) タグ。タグがペアになっていない場合、エラーが表示されます。注意してください。修正は簡単です。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508380.html技術記事 slamdunk3 のブログから抜粋 1. ファイル形式 Web 開発を行う場合、誰もが HTML または xhtml を使用しますが、WAP 開発では WML を使用する必要があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。