<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Tech [Friday] プロモバイルエンジニアブログ</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/" />
    <link rel="self" type="application/atom+xml" href="http://blog.promob.jp/fri/atom.xml" />
    <id>tag:blog.promob.jp,2008-10-29:/fri//1</id>
    <updated>2010-03-26T01:56:30Z</updated>
    <subtitle>Webシステムプログラマーによる、ちょっとためになる（かもしれない）情報共有ブログ</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.22-ja</generator>

<entry>
    <title>【第６９回】Softbank端末の位置情報の取得について</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/03/softbank.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.350</id>

    <published>2010-03-26T01:52:51Z</published>
    <updated>2010-03-26T01:56:30Z</updated>

    <summary>今日はSoftbank端末の位置情報の取得についてです。今週も簡単なサンプルを作...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="位置情報" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gps" label="GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softbank" label="Softbank" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="位置情報" label="位置情報" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はSoftbank端末の位置情報の取得についてです。</div><div><br /></div><div>今週も簡単なサンプルを作ります。</div><div><br /></div><div>まずは簡易位置情報からです。</div><div>2Gと3Gで取得方法が異なりますが、今回は3Gの方法のみ紹介します。</div> ]]>
        <![CDATA[<div>(softbank_area_form)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?xml version="1.0" encoding="Shift_JIS"?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN"<br />"xhtml-basic10-plus.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;簡易位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a<br />href="location:cell?url=http://hogehoge.jp/softbank_area_receive.php"&gt;簡<br />易位置情報取得&lt;/a&gt;<br />&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>受け手側のソースです。</div><div><br /></div><div>(softbank_area_receive.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />/* パラメータの取得 */<br /><br />$pos = getParameter('pos');<span class="Apple-tab-span" style="white-space:pre">				</span>// 緯度経度<br />$geo = getParameter('geo');<span class="Apple-tab-span" style="white-space:pre">				</span>// 測地系<br />$x_acr = getParameter('x-acr');<span class="Apple-tab-span" style="white-space:pre">		</span>// 測位精度<br /><br />/* パラメータを取得する関数 */<br />function getParameter($param){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(isset($_POST["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_POST["$param"];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif(isset($_GET["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_GET["$param"];<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>return $str;<br /><br />}<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN"<br />"http://www.openwave.com/DTD/xhtml-basic.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;簡易位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />pos = &lt;?= $pos ?&gt;&lt;br /&gt;<br />geo = &lt;?= $geo ?&gt;&lt;br /&gt;<br />x_acr = &lt;?= $x_acr ?&gt;&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>Softbankの端末でsoftbank_area_form.htmlにアクセスしてみます。</div><div><br /></div><div>リンクをクリックすると位置情報の取得が始まります。</div><div><br /></div><div>位置情報が取得できました。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">pos = N35.41.57.74E139.46.39.83<br />geo = wgs84<br />x_acr = 1</blockquote><div><br /></div><div>posは緯度と経度にあたります。Nが北緯、Sが南緯、Eは東経、Wは西経になります。</div><div><br /></div><div>geoは測地系です。wgs84は世界測地系、tokyoは日本測地系になります。</div><div><br /></div><div>x-acrは測位精度です。</div><div><br /></div><div>前回のau同様フォームボタンで位置登録をすると、Softbank側から受け手側の</div><div>ページに遷移する際にエラーが発生するため、フォームボタンは対応していない</div><div>ようです。</div><div><br /></div><div><br /></div><div>次はS!GPSナビを使った位置情報の取得方法です。</div><div><br /></div><div>簡易位置情報とほとんど変わりません。</div><div><br /></div><div>変わったところといえば、location:cellとlocation:gpsの違いです。</div><div><br /></div><div>(softbank_gps_form)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?xml version="1.0" encoding="Shift_JIS"?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN"<br />"xhtml-basic10-plus.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;GPS位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a<br />href="location:gps?url=http://hogehoge.jp/softbank_area_receive.php"&gt;GPS<br />位置情報取得&lt;/a&gt;<br />&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>受け手側のソースは先ほどと同じ、softbank_area_receive.phpを使います。</div><div><br /></div><div>実行してみます。</div><div><br /></div><div>位置情報が取得できました。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">pos = N35.41.59.49E139.46.36.87<br />geo = wgs84<br />x_acr = 1</blockquote><div><br /></div><div>簡易位置情報よりもより正確な位置情報が取得できます。</div><div><br /></div><div>しかし、GPSを使った方法の場合、簡易位置情報を使った方法よりも位置情報の</div><div>取得に時間がかかります。</div><div><br /></div><div>Softbankの位置情報の取得はとても簡単にできるので、Softbank端末を持ってい</div><div>る方はぜひやってみてください。</div><div><br /></div><div>毎週金曜日に更新してきたFridayブログですが、都合により今週で最後になります。</div><div>毎週ご覧頂き、ありがとうございました。</div><div><br /></div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>【第６８回】auの位置情報の取得について</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/03/au.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.349</id>

    <published>2010-03-19T03:18:42Z</published>
    <updated>2010-03-19T03:21:54Z</updated>

    <summary>auの位置情報の取り方は簡易位置情報を使った方法とEZナビ(GPS)を使った方法...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="位置情報" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="au" label="au" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ezナビ" label="EZナビ" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="gps" label="GPS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="位置情報" label="位置情報" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>auの位置情報の取り方は簡易位置情報を使った方法とEZナビ(GPS)を使った方法</div><div>の２通りあります。</div><div><br /></div><div>簡易位置情報は基地局を使った位置情報で精度は高くないですが、CDMAのEZナビ</div><div>が搭載されていない端末でも位置情報を取得したい場合に使います。</div><div><br /></div><div>EZナビ(GPS）を使った方法は、精度が高く、EZナビ対応端末で位置情報を取得す</div><div>る場合に使います。auの端末はEZナビ搭載している機種が多いので、こちらの方</div><div>法が主に使われています。</div><div><br /></div><div>まずは簡易位置情報を使った方法からです。</div> ]]>
        <![CDATA[<div>今週も簡単なサンプルを作ってみます。</div><div><br /></div><div>(au_area_form.html)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN"<br />"http://www.openwave.com/DTD/xhtml-basic.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;簡易位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a href="device:location?url=http://hogehoge.jp/au_area_receive.php"&gt;簡<br />易位置情報取得&lt;/a&gt;<br />&lt;br /&gt;<br />&lt;form method="get" action="device:location"&gt;<br />&lt;input type="hidden" name="url"<br />value="http://hogehoge.jp/au_area_receive.php" /&gt;<br />&lt;input type="submit" value="簡易位置情報取得" /&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>フォームで位置情報を取得する場合はメソッドをGETにします。</div><div><br /></div><div>受け手側のソースになります。</div><div><br /></div><div>(au_area_receive.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />/* パラメータの取得 */<br /><br />$datum = getParameter('datum');<span class="Apple-tab-span" style="white-space:pre">				</span>// 測地系<br />$unit = getParameter('unit');<span class="Apple-tab-span" style="white-space:pre">					</span>// 座標系<br />$lat = getParameter('lat');<span class="Apple-tab-span" style="white-space:pre">						</span>// 緯度<br />$lon = getParameter('lon');<span class="Apple-tab-span" style="white-space:pre">						</span>// 経度<br /><br />/* パラメータを取得する関数 */<br />function getParameter($param){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(isset($_POST["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_POST["$param"];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif(isset($_GET["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_GET["$param"];<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>return $str;<br /><br />}<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN"<br />"http://www.openwave.com/DTD/xhtml-basic.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;簡易位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />datum = &lt;?= $datum ?&gt;&lt;br /&gt;<br />unit = &lt;?= $unit ?&gt;&lt;br /&gt;<br />lat = &lt;?= $lat ?&gt;&lt;br /&gt;<br />lon = &lt;?= $lon ?&gt;&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>プログラムを作った後に、auの端末でau_area_form.htmlにアクセスし、リンク</div><div>または</div><div>ボタンをクリックします。</div><div><br /></div><div>確認画面が出てきます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.jpg" src="http://blog.promob.jp/fri/2010/03/19/1.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>OKを押します。</div><div><br /></div><div>おお～っ！位置情報が取れました。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">datum = 1<br />unit = 0<br />lat = 35.41.58.25<br />lon = 139.46.39.50</blockquote><div><br /></div><div>測地系は0はWGS-84、1が東京（日本）測地系となります。</div><div><br /></div><div>unitは緯度経度情報の表記方法です。</div><div><br /></div><div>latは緯度、lonは経度です。</div><div><br /></div><div>こちらの方法で取得するデータは大まかなデータになります。</div><div><br /></div><div><br /></div><div>次はEZナビを使った方法です。</div><div><br /></div><div>先ほどと同じようにリンクとフォームを作ります。</div><div><br /></div><div>(au_area_gps_form.html)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN"<br />"http://www.openwave.com/DTD/xhtml-basic.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;EZナビ位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a<br />href="device:gpsone?url=http://hogehoge.jp/au_area_gps_receive.php&amp;ver=1&amp;datum<br />=0&amp;unit=0&amp;acry=0&amp;number=0"&gt;EZナビ位置情報取得&lt;/a&gt;<br />&lt;br /&gt;&lt;br /&gt;<br />&lt;form method="get" action="device:gpsone"&gt;<br />&lt;input type="hidden" name="url"<br />value="http://hogehoge.jp/au_area_gps_receive.php" /&gt;<br />&lt;input type="hidden" name="ver" value="1" /&gt;<br />&lt;input type="hidden" name="datum" value="0" /&gt;<br />&lt;input type="hidden" name="unit" value="0" /&gt;<br />&lt;input type="hidden" name="acry" value="0" /&gt;<br />&lt;input type="hidden" name="number" value="0" /&gt;<br />&lt;input type="submit" value="EZナビ位置情報取得" /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>(au_area_gps.receive.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />/* パラメータの取得 */<br /><br />$ver = getParameter('ver');<span class="Apple-tab-span" style="white-space:pre">						</span>// パラメータのバージョン<br />$datum = getParameter('datum');<span class="Apple-tab-span" style="white-space:pre">				</span>// 測地系<br />$unit = getParameter('unit');<span class="Apple-tab-span" style="white-space:pre">					</span>// 座標系<br />$lat = getParameter('lat');<span class="Apple-tab-span" style="white-space:pre">						</span>// 緯度<br />$lon = getParameter('lon');<span class="Apple-tab-span" style="white-space:pre">						</span>// 経度<br />$alt = getParameter('alt');<span class="Apple-tab-span" style="white-space:pre">						</span>// 海抜高度（メートル単位）<br />$time = getParameter('time');<span class="Apple-tab-span" style="white-space:pre">					</span>// 時間<br />$smaj = getParameter('smaj');<span class="Apple-tab-span" style="white-space:pre">					</span>// 長軸成分誤差<br />$smin = getParameter('smin');<span class="Apple-tab-span" style="white-space:pre">					</span>// 短軸成分誤差<br />$vert = getParameter('vert');<span class="Apple-tab-span" style="white-space:pre">					</span>// 高度誤差<br />$majaa = getParameter('majaa');<span class="Apple-tab-span" style="white-space:pre">				</span>// 長軸・短軸傾き値<br />$fm = getParameter('fm');<span class="Apple-tab-span" style="white-space:pre">						</span>// 測位結果の制度に関する情報<br /><br />/* パラメータを取得する関数 */<br />function getParameter($param){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(isset($_POST["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_POST["$param"];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif(isset($_GET["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_GET["$param"];<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>return $str;<br /><br />}<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN"<br />"http://www.openwave.com/DTD/xhtml-basic.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;EZナビ(GPS)を使った位置情報&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />ver = &lt;?= $ver ?&gt;&lt;br /&gt;<br />datum = &lt;?= $datum ?&gt;&lt;br /&gt;<br />unit = &lt;?= $unit ?&gt;&lt;br /&gt;<br />lat = &lt;?= $lat ?&gt;&lt;br /&gt;<br />lon = &lt;?= $lon ?&gt;&lt;br /&gt;<br />$alt = &lt;?= $alt ?&gt;&lt;br /&gt;<br />$time = &lt;?= $time ?&gt;&lt;br /&gt;<br />$smaj = &lt;?= $smaj ?&gt;&lt;br /&gt;<br />$smin = &lt;?= $smin ?&gt;&lt;br /&gt;<br />$vert = &lt;?= $vert ?&gt;&lt;br /&gt;<br />$majaa = &lt;?= $majaa ?&gt;&lt;br /&gt;<br />$fm = &lt;?= $fm ?&gt;<br /><br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>プログラムを作った後に、auの端末でau_area_gps_form.htmlにアクセスし、リ</div><div>ンクまたは</div><div>ボタンをクリックします。</div><div><br /></div><div>先ほどと位置登録確認画面が出ます。</div><div><br /></div><div>OKを押します。</div><div><br /></div><div>位置情報を取得する画面が出てきて・・・</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="2.jpg" src="http://blog.promob.jp/fri/2010/03/19/2.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">var = 1<br />datum = 0<br />unit = 0<br />lat = +35.41.57.23<br />lon = +139.46.35.81<br />alt = 45<br />time = 20100319073119<br />smaj = 210<br />smin = 177<br />vert = 39<br />fm = 1</blockquote><div><br /></div><div>おお～っ！位置情報が取れました。</div><div>GPSを使った方法のほうが情報がたくさん取得できます。</div><div><br /></div><div>lat（緯度)、lon（経度）はより正確な数字になります。</div><div><br /></div><div>時刻も取得できます。</div><div><br /></div><div>AUの場合はどちらの方法も簡単ですね。</div><div><br /></div><div>AUの端末でぜひやってみてください。</div><div><br /></div><div>今週はこれでおしまいです。</div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>【第６７回】i-modeの位置情報の取得について</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/03/i-mode.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.345</id>

    <published>2010-03-12T02:11:55Z</published>
    <updated>2010-03-12T02:20:52Z</updated>

    <summary>最近は位置情報を取得して、取得した位置情報でサービスを提供するケースが多く見られ...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="位置情報" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="docomo" label="DoCoMo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="imode" label="i-mode" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="位置情報" label="位置情報" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>最近は位置情報を取得して、取得した位置情報でサービスを提供するケースが多</div><div>く見られるようになりました。</div><div><br /></div><div>例えば、位置情報を取得して近くのお店を表示する、位置情報を利用してマップ</div><div>の塗りつぶしをする。また位置ゲームという分野も出てきましたね。</div><div><br /></div><div>ということで、今週から位置情報の取得について書きたいと思います。</div><div><br /></div><div>今日はi-modeの位置情報の取得についてです。</div><div><br /></div><div>今回使用するのはDoCoMoの携帯電話です。</div><div>DoCoMoの端末を持っている方はぜひチャレンジしてみてください。</div><div><br /></div><div>今週もとても簡単なサンプルを作ります。</div> ]]>
        <![CDATA[<div>(open_i_docomo_form.html)</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//i-mode group(ja)// DTD XHTML<br />i-XHTML(Locale/Ver.=ja/1.1)1.0//EN" "i-xhtml_4ja_10.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;位置情報（DoCoMo）&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a<br />href="http://w1m.docomo.ne.jp/cp/iarea?ecode=OPENAREACODE&amp;msn=OPENAREAKEY&amp;nl=</blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">http://nyoriko.net/test/open_i_docomo_receive.php&amp;posinfo=1&amp;arg1=code%3d111"&gt;<br />オープンiエリアの位置情報取得<br />&lt;/a&gt;<br />&lt;br /&gt;<br />&lt;br /&gt;<br />&lt;form method="post" action="http://w1m.docomo.ne.jp/cp/iarea"&gt;<br />&lt;input type="hidden" name="ecode" value="OPENAREACODE" /&gt;<br />&lt;input type="hidden" name="msn" value="OPENAREAKEY" /&gt;<br />&lt;input type="hidden" name="nl"<br />value="http://hogehoge.jp/open_i_docomo_receive.php" /&gt;<br />&lt;input type="hidden" name="posinfo" value="1" /&gt;<br />&lt;input type="hidden" name="arg1" value="code=111" /&gt;<br />&lt;input type="submit" name="send" value="オープンiエリアの位置情報取得" /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>今週はDoCoMoだけなので、ソースもDoCoMoのXHTML仕様にしています。</div><div><br /></div><div>hogehoge.jpの部分は各自で使用しているドメインパスに置き換えてください。</div><div><br /></div><div>サンプルでは位置情報を呼び出すリンクとフォームボタンの２つを用意しています。</div><div><br /></div><div>arg1はオープンiエリアの指定コード以外に任意で情報を渡したい場合に使います。</div><div>サンプルでは使っていませんがarg2も同様に使います。</div><div><br /></div><div>サンプルではcode=111という任意のパラメータを送っています。</div><div><br /></div><div>最初のリンクのほうでは、=の部分はURLエンコードします。(%3d)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">arg1=code%3d111</blockquote><div><br /></div><div>もう１つはPHPのプログラムで地域情報を受け取る部分となります。htmlフォー</div><div>ムのnl部分にあたるソースを用意します。</div><div><br /></div><div>(open_i_docomo_receive.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />/* パラメータの取得 */<br /><br />// POSINFO:0の場合　エリアコードのみ<br />$AREACODE = getParameter('AREACODE');<span class="Apple-tab-span" style="white-space:pre">	</span>// 5桁のiエリアコード<br />$code = getParameter('code');<span class="Apple-tab-span" style="white-space:pre">			</span>// 任意のコード<br />$ACTN = getParameter('ACTN');<span class="Apple-tab-span" style="white-space:pre">			</span>// OKボタンのパラメータ名<br /><br />// POSINFO:2の場合　緯度経度のみ<br />$LAT = getParameter('LAT');<span class="Apple-tab-span" style="white-space:pre">				</span>// 緯度<br />$LON = getParameter('LON');<span class="Apple-tab-span" style="white-space:pre">				</span>// 経度<br />$GEO = getParameter('GEO');<span class="Apple-tab-span" style="white-space:pre">				</span>// 測地基準系<br />$XACC = getParameter('XACC');<span class="Apple-tab-span" style="white-space:pre">			</span>// 測位結果の誤差レベル<br />$POSINFO = getParameter('POSINFO');<span class="Apple-tab-span" style="white-space:pre">	</span>// 取得方法の指定<br /><br />echo("AREACODE = $AREACODE". "&lt;br /&gt;");<br />echo("code = $code". "&lt;br /&gt;");<br />echo("ACTN = $ACTN". "&lt;br /&gt;");<br /><br />echo("LAT = $LAT". "&lt;br /&gt;");<br />echo("LON = $LON". "&lt;br /&gt;");<br />echo("GEO = $GEO". "&lt;br /&gt;");<br />echo("XACC = $XACC". "&lt;br /&gt;");<br />echo("POSINFO = $POSINFO". "&lt;br /&gt;");<br /><br />/* パラメータを取得する関数 */<br />function getParameter($param){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(isset($_POST["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_POST["$param"];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif(isset($_GET["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_GET["$param"];<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>return $str;<br /><br />}<br />?&gt;</blockquote><div><br /></div><div>DoCoMoの端末でopen_i_docomo_form.htmlにアクセスします。</div><div><br /></div><div>リンクとフォームボタンが表示されます。</div><div><br /></div><div>リンクまたはフォームをクリックします。</div><div><br /></div><div>DoCoMoのサイトに移動してい次のような表示が出てきます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.jpg" src="http://blog.promob.jp/fri/2010/03/12/1.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>位置登録した場所の情報が表示され、確認画面が出てきます。</div><div><br /></div><div>続けてOKボタンを押すと・・・</div><div><br /></div><div>(実行例）</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">AREACODE = 05702<br />code = 111<br />ACTN = OK<br />LAT = +35.41.59.964<br />LON = +139.46.40.404<br />GEO = wgs84<br />XACC = 1<br />POSTINFO = 1</blockquote><div><br /></div><div>それぞれアクセスした地域のコードが表示されます。</div><div><br /></div><div>ドコモのオープンiエリアのページからオープンiエリアの地域コード一覧をダウ</div><div>ンロードして、アクセスした地域を確認してみます。</div><div><br /></div><div>下記のURLからiエリアデータファイルをダウンロードして登録した地域コードを</div><div>確認してみます。</div><div><br /></div><div>★作ろうiモードコンテンツ：オープンiエリア（国内版）</div><div><a href="http://www.nttdocomo.co.jp/service/imode/make/content/iarea/domestic/index.html">http://www.nttdocomo.co.jp/service/imode/make/content/iarea/domestic/index.html</a></div><div><br /></div><div>（地域コード抜粋:i-modeのサイトより）</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">88<span class="Apple-tab-span" style="white-space:pre">	</span>関東甲信越<span class="Apple-tab-span" style="white-space:pre">	</span>東京<span class="Apple-tab-span" style="white-space:pre">	</span>057<span class="Apple-tab-span" style="white-space:pre">	</span>01<span class="Apple-tab-span" style="white-space:pre">	</span>有楽町/日比谷<br />89<span class="Apple-tab-span" style="white-space:pre">	</span>関東甲信越<span class="Apple-tab-span" style="white-space:pre">	</span>東京<span class="Apple-tab-span" style="white-space:pre">	</span>057<span class="Apple-tab-span" style="white-space:pre">	</span>02<span class="Apple-tab-span" style="white-space:pre">	</span>秋葉原<br />90<span class="Apple-tab-span" style="white-space:pre">	</span>関東甲信越<span class="Apple-tab-span" style="white-space:pre">	</span>東京<span class="Apple-tab-span" style="white-space:pre">	</span>057<span class="Apple-tab-span" style="white-space:pre">	</span>03<span class="Apple-tab-span" style="white-space:pre">	</span>神田</blockquote><div><br /></div><div>プロモバイルは秋葉原にあるので地域コードが05702になっています。</div><div><br /></div><div>地域エリアのコード(AREACODE)と登録した場所の緯度(LAT)、経度(LON)も表示さ</div><div>れています。</div><div><br /></div><div>サンプルではPOSTINFO=1に設定しているので、エリアコードと緯度経度情報の両</div><div>方が表示されています。</div><div><br /></div><div>サンプルのコメントでも書いていますが、POSTINFOの指定がない場合はエリア</div><div>コードのみ、POSTINFO=2を指定した場合は緯度経度情報のみが取得されます。</div><div><br /></div><div>次にもう１つ、GPSを利用した位置情報の取得方法についてです。</div><div>サンプルはFOMA用です。</div><div><br /></div><div>(i_gps_docomo_form.html)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//i-mode group(ja)// DTD XHTML<br />i-XHTML(Locale/Ver.=ja/1.1)1.0//EN" "i-xhtml_4ja_10.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;位置情報（DoCoMo）&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;a href="http://nyoriko.net/test/i_gps_docomo_receive.php" lcs&gt;<br />GPS位置情報取得<br />&lt;/a&gt;<br />&lt;br /&gt;<br />&lt;br /&gt;<br />&lt;form method="post" action="http://hogehoge.jp/i_gps_docomo_receive.php"<br />lcs&gt;<br />&lt;input type="submit" name="send" value="GPS位置情報取得" /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>リンク先にlcsをつけます。</div><div>サンプルではボタンとリンク両方書いています。</div><div><br /></div><div>受け側のプログラムも用意します。</div><div><br /></div><div>(i_gps_docomo_receive.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />/* パラメータの取得 */<br />$lat = getParameter('lat');<span class="Apple-tab-span" style="white-space:pre">				</span>// 緯度<br />$lon = getParameter('lon');<span class="Apple-tab-span" style="white-space:pre">				</span>// 経度<br />$geo = getParameter('geo');<span class="Apple-tab-span" style="white-space:pre">				</span>// 測地基準系<br /><br />echo("lat = $lat". "&lt;br /&gt;");<br />echo("lon = $lon". "&lt;br /&gt;");<br />echo("geo = $geo". "&lt;br /&gt;");<br /><br /><br />/* パラメータを取得する関数 */<br />function getParameter($param){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(isset($_POST["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_POST["$param"];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif(isset($_GET["$param"])){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = $_GET["$param"];<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>return $str;<br /><br />}<br />?&gt;</blockquote><div><br /></div><div>DoCoMoの端末からi_gps_docomo_form.htmlにアクセスします。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="2.jpg" src="http://blog.promob.jp/fri/2010/03/12/2.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>確認画面が出て、このように位置情報を取得する画面になります。</div><div><br /></div><div>OKボタンを押すと・・・</div><div><br /></div><div>i_gps_docomo_receive.phpが実行されて・・・</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">lat = +35.42.02.967<br />lon = +139.46.42.968<br />geo = WGS84</blockquote><div><br /></div><div>緯度経度と測地基準が表示されます。</div><div><br /></div><div>位置ゲームなどは、こちらの方法で取得する場合が多いですね。</div><div><br /></div><div>GPSを使う方法はとても簡単です。</div><div><br /></div><div>DoCoMoの端末でぜひやってみてください。</div><div><br /></div><div>ということで、今週はおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６６回】絵文字の出力について(その４）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/03/post-14.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.341</id>

    <published>2010-03-05T05:44:33Z</published>
    <updated>2010-03-05T05:50:28Z</updated>

    <summary>今回は前回の続きで絵文字の出力についてです。絵文字の出力方法については、次のパタ...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="絵文字" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="au" label="au" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="docomo" label="docomo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softbank" label="Softbank" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="絵文字" label="絵文字" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今回は前回の続きで絵文字の出力についてです。</div><div><br /></div><div>絵文字の出力方法については、次のパターンがあることは前回も書きました。</div><div><br /></div><div>1.３キャリアそれぞれのHTMLテンプレートを用意して、それぞれのキャリアに応</div><div>じた絵文字を書く方法。</div><div><br /></div><div>2.キャリアごとに絵文字の配列を作り、キャリアに応じた絵文字を表示する方法</div><div><br /></div><div>3.iモード用の絵文字を書いたテンプレートを用意して、それをezweb、Softbank</div><div>用に変換して出力させる方法</div><div><br /></div><div>4.絵文字用にタグを作っておいて、タグから絵文字に変換して出力する方法。</div><div><br /></div><div>前回は3のiモード用の絵文字を書いたテンプレートを用意してキャリアに応じた</div><div>絵文字に変換する方法について、とても簡単なサンプルを作りました。</div><div><br /></div><div>今回は４の絵文字タグが入ったテンプレートを用意してキャリアに応じた絵文字</div><div>に変換する方法です。</div><div><br /></div><div>とても簡単なサンプルを作ってみます。</div> ]]>
        <![CDATA[<div>今回は、絵文字用のCSVファイルを作ります。</div><div><br /></div><div>(emoji.csv)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">1,晴れ,&amp;#xE63E;,&amp;#xE488;,&amp;#xE04A;<br />2,曇り,&amp;#xE63F;,&amp;#xE48D;,&amp;#xE049;<br />3,雨,&amp;#xE640;,&amp;#xE48C;,&amp;#xE04B;<br />4,雪,&amp;#xE641;,&amp;#xE485;,&amp;#xE048;</blockquote><div><br /></div><div>記事のスペースの関係で今回もデータは４つだけ入れています。</div><div><br /></div><div>今回の絵文字データはUnicodeを使っています。</div><div><br /></div><div>絵文字番号、名前、i-mode絵文字のUnicode、au絵文字のUnicode、Softbank絵文</div><div>字のUnicode</div><div><br /></div><div>の順に入れています。</div><div><br /></div><div>次に次のようなプログラムを作ります。</div><div>(emoji_test.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* DoCoMo端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_docomo(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^DoCoMo", $agent) &amp;&amp; !eregi( "ISIM", $agent )){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}else {<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* au端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_au(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(strpos($agent,"KDDI-") !== FALSE || strpos($agent,"UP.Browser/")<br />!== FALSE){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* Softbank端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_softbank(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* 絵文字タグから絵文字に変換する<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function dec_emoji_output($buffer){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 出力文字データの初期化<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$output = "";<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 入力データがない場合は終了<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(empty($buffer)){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return ;<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 絵文字タグを検索する<br /><span class="Apple-tab-span" style="white-space:pre">		</span>preg_match_all('/{emoji:([0-9]+)}/', $buffer, $matches);<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 絵文字タグ部分を絵文字に置き換える<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if($matches[0] &amp;&amp; $matches[1]){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$output = conv_emoji_output($matches,$buffer);<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$output = $buffer;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $output;<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* 絵文字タグ部分を絵文字に置き換える<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function conv_emoji_output($matches,$str){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 出力データの初期化<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$output = "";<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 入力データがない場合は処理終了<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(empty($matches) || !is_array($matches) || empty($str)){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return '';<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$moji_data = $matches[0];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 絵文字出力変換データを取得する<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji_data = get_emoji_output_data();<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>foreach($moji_data as $value){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// コロン区切りのデータを配列に入れる<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$emoji_num_array = explode(':',str_replace("}", "", $value));<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$emoji_num = $emoji_num_array[1];<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// キャリアに応じて最適な絵文字を呼び出す<br /><span class="Apple-tab-span" style="white-space:pre">			</span>if( is_docomo()){<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>// DoCoMo<span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$output = trim($emoji_data[$emoji_num][0]);<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}elseif(is_au()){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>// au<br /><span class="Apple-tab-span" style="white-space:pre">				</span>$output = trim($emoji_data[$emoji_num][1]);<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}elseif(is_softbank()){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>// Softbank<span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$output = trim($emoji_data[$emoji_num][2]);<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>// PC(DoCoMo)<span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$output = trim($emoji_data[$emoji_num][0]);<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 該当データがない場合はゲタ文字を入れる<br /><span class="Apple-tab-span" style="white-space:pre">			</span>if(empty($output)){<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$output = "〓";<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><span class="Apple-tab-span" style="white-space:pre">				</span>$str = str_replace($value, $output, $str);<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $str;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* 絵文字変換データを取り出す<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function get_emoji_output_data(){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリア絵文字変換表を呼び出す<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$handle = fopen("./emoji.csv", "r");<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// データを配列に格納する<br /><span class="Apple-tab-span" style="white-space:pre">		</span>while(($emoji_data = fgetcsv($handle, 1000, ',')) !== FALSE){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$emoji_all_data_array[$emoji_data[0]] =<br />array($emoji_data[2],$emoji_data[3],$emoji_data[4]);<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ファイルを閉じる<br /><span class="Apple-tab-span" style="white-space:pre">		</span>fclose($handle);<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $emoji_all_data_array;<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br />header("Content-type: text/html; charset=Shift_JIS");<br />ob_start("dec_emoji_output");<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;ProMobile Friday Blog&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />絵文字のテストです&lt;br /&gt;<br />{emoji:1}&lt;br /&gt;<br />{emoji:2}&lt;br /&gt;<br />{emoji:3}&lt;br /&gt;<br />{emoji:4}&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />&lt;?php<br />ob_end_flush();<br />?&gt;</blockquote><div><br /></div><div>サンプルでは、HTML部分に{emoji:絵文字番号}という形で絵文字タグを入れてい</div><div>ます。</div><div><br /></div><div>出力関数でdec_emoji_output()メソッドを呼び出して、絵文字タグの部分を絵文</div><div>字に置き換えて表示します。</div><div><br /></div><div>最初は絵文字タグがあるかどうかを確認し、ある場合はconv_emoji_output()関</div><div>数でCSVから絵文字データを呼び出して、絵文字タグから絵文字番号に相当する</div><div>絵文字に変換します。</div><div><br /></div><div><br /></div><div>emoji.csvとemoji_text.phpをサーバーにアップして、DoCoMo、Au、Softbankの</div><div>携帯電話でemoji_text.phpにアクセスしてみます。</div><div><br /></div><div>おお～～っ！！先週に続き、今週も絵文字が表示されました。</div><div><br /></div><div>絵文字のテストです</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">?<br />?<br />?<br />?</blockquote><div><br /></div><div>これまで、絵文字の表示パターンについて説明してきましたが、先週の3のパ</div><div>ターンはデザイナーが多く、i絵文字も駆使してデザインとHTMLコーディングだ</div><div>けに集中したい場合、4は絵文字の表示だけでなく絵文字掲示板も取り入れたい</div><div>場合に使われます。</div><div><br /></div><div>一昔は、1のようにテンプレートを分ける方法や、2の絵文字配列を使う方法が見</div><div>られましたが、最近は絵文字掲示板機能を使うところが増えており、4の方法が</div><div>多く見られるようになりました。</div><div><br /></div><div>絵文字の扱い方もいろいろありますね。</div><div><br /></div><div>ということで、絵文字の出力についてはこれでおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６５回】絵文字の出力について(その３）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/02/post-13.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.335</id>

    <published>2010-02-26T04:22:45Z</published>
    <updated>2010-02-26T04:25:58Z</updated>

    <summary>今日は久しぶりに絵文字の続きをやりたいと思います。これまで絵文字を表示する方法と...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="絵文字" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="au" label="au" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="docomo" label="DoCoMo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softbank" label="Softbank" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="絵文字" label="絵文字" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日は久しぶりに絵文字の続きをやりたいと思います。</div><div><br /></div><div>これまで絵文字を表示する方法として次のパターンがありますが・・・</div><div><br /></div><div>1.３キャリアそれぞれのHTMLテンプレートを用意して、それぞれのキャリアに応</div><div>じた絵文字を書く方法。</div><div><br /></div><div>2.キャリアごとに絵文字の配列を作り、キャリアに応じた絵文字を表示する方法</div><div><br /></div><div>3.iモード用の絵文字を書いたテンプレートを用意して、それをezweb、Softbank</div><div>用に変換して出力させる方法</div><div><br /></div><div>4.絵文字用にタグを作っておいて、タグから絵文字に変換して出力する方法。</div><div><br /></div><div>これまでは1と2の方法を紹介しました。</div> ]]>
        <![CDATA[<div>今日は3のiモード用の絵文字を書いたテンプレートを用意してキャリアに応じた</div><div>絵文字に変換する方法です。</div><div><br /></div><div>とても簡単なサンプルを作ってみます。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* DoCoMo端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_docomo(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^DoCoMo", $agent) &amp;&amp; !eregi( "ISIM", $agent )){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}else {<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* au端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_au(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(strpos($agent,"KDDI-") !== FALSE || strpos($agent,"UP.Browser/")<br />!== FALSE){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span>* Softbank端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>*/<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_softbank(){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} else {<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/* iモードの絵文字をその他のキャリアの絵文字に変換 */<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function conv_emoji($buffer){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji_data_array[1] = array("?","&amp;#xE488;","\x1B\$Gj\x0F");<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji_data_array[2] = array("?","&amp;#xE48D;","\x1B\$Gi\x0F");<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji_data_array[3] = array("?","&amp;#xE48C;","\x1B\$Gk\x0F");<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji_data_array[4] = array("?","&amp;#xE485;","\x1B\$Gh\x0F");<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>if( is_au()){<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// auの場合<br /><span class="Apple-tab-span" style="white-space:pre">			</span>foreach($emoji_data_array as $value){<br /><span class="Apple-tab-span" style="white-space:pre">					</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$buffer = str_replace($value[0], $value[1], $buffer);<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>} elseif(is_softbank()){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// Softbankの場合<br /><span class="Apple-tab-span" style="white-space:pre">			</span>foreach($emoji_data_array as $value){<br /><span class="Apple-tab-span" style="white-space:pre">					</span><br /><span class="Apple-tab-span" style="white-space:pre">				</span>$buffer = str_replace($value[0], $value[2], $buffer);<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $buffer;<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />header("Content-type: text/html; charset=Shift_JIS");<br />ob_start("conv_emoji");<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;ProMobile Friday Blog&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />絵文字のテストです&lt;br /&gt;<br />?&lt;br /&gt;<br />?&lt;br /&gt;<br />?&lt;br /&gt;<br />?&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />&lt;?php<br />ob_end_flush();<br />?&gt;</blockquote><div><br /></div><div><br /></div><div>記事のスペースの関係で今回使う絵文字のデータは４つだけにしています。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">$emoji_data_array[1] = array("?","&amp;#xE488;","\x1B\$Gj\x0F");<br />$emoji_data_array[2] = array("?","&amp;#xE48D;","\x1B\$Gi\x0F");<br />$emoji_data_array[3] = array("?","&amp;#xE48C;","\x1B\$Gk\x0F");<br />$emoji_data_array[4] = array("?","&amp;#xE485;","\x1B\$Gh\x0F");</blockquote><div><br /></div><div>絵文字のデータはDoCoMo,au,Softbankの順番で絵文字用データを作ります。</div><div><br /></div><div>最初のDoCoMoのデータは文字化けしているかもしれませんが、それぞれ、晴れ、</div><div>曇り、雨、雪の絵文字が入っています。</div><div><br /></div><div>DoCoMoで配布しているi絵文字またはバイナリエディタで入れます。</div><div><br /></div><div>auはUnicode、SoftbankはWebコードを入れています。</div><div><br /></div><div>HTMLの部分にDoCoMo用の絵文字を入れます。</div><div><br /></div><div>同じ様にi絵文字またはバイナリエディタで入れます。</div><div><br /></div><div>前回紹介した出力関数を使って文字の置き換えをします。</div><div><br /></div><div>ob_start関数でconv_emoji関数をコールバックして端末判定をして・・・</div><div><br /></div><div>auとSoftbankの場合はDoCoMoの絵文字をそれぞれのキャリアに変換して出力します。</div><div><br /></div><div>プログラムを作ってアップロードします。</div><div><br /></div><div>DoCoMoとauとSoftbankの3キャリアの端末で確認してみます。</div><div><br /></div><div>おお～絵文字が表示されました。</div><div><br /></div><div>DoCoMo(N-01A)</div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.jpg" src="http://blog.promob.jp/fri/2010/02/26/1.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>au(W41K)</div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="2.jpg" src="http://blog.promob.jp/fri/2010/02/26/2.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>Softbank(923SH)</div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="3.jpg" src="http://blog.promob.jp/fri/2010/02/26/3.jpg" width="480" height="640" class="mt-image-none" style="" /></span></div><div><br /></div><div>元々DoCoMoの絵文字を入れているのでDoCoMoは絵文字が出るのが当たり前ですが、</div><div>au、Softbankでも変換されて表示されました。</div><div><br /></div><div>今日はこれでおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６４回】PHPの出力関数</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/02/php-14.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.330</id>

    <published>2010-02-20T03:23:37Z</published>
    <updated>2010-02-20T03:26:12Z</updated>

    <summary>今日はPHPの出力関数についてです。以前、携帯電話サイトの開発はロジックからHT...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="出力関数" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="出力関数" label="出力関数" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はPHPの出力関数についてです。</div><div><br /></div><div>以前、携帯電話サイトの開発はロジックからHTML出力までShift_JISで統一して</div><div>作ることが多かったのですが、最近はロジックはUTF-8で作り、HTML出力は</div><div>Shift_JISで出力するパターンも出てきました。</div><div><br /></div><div>すると、よくありがちなのが文字化けです。</div><div><br /></div><div>UTF-8でデータを取得していざHTMLの表示で文字化けしてしまう。</div><div><br /></div><div>Shift_JISで出力しなければいけないのに、HTML部分をUTF-8で保存したがために</div><div>出力すると文字化けしてしまう。</div> ]]>
        <![CDATA[<div>なので、ロジックはUTF-8で作って、ob_start関数とmb_output_handler関数を</div><div>使ってHTML出力部分をShift_JISコードに変換して出力します。</div><div><br /></div><div>次のサンプルを作ります。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?<br />// 適当に文章を設定<br />$str = "今年はバレンタインのチョコレートをたくさん食べました";<br /><br />// 出力言語にテンプレートを変換<br />mb_http_output("Shift_JIS");<br />ob_start("mb_output_handler");<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /&gt;<br />&lt;title&gt;バレンタインテスト&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;?= $str ?&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />&lt;? ob_end_flush(); ?&gt;</blockquote><div><br /></div><div><br /></div><div>このサンプルコードをあえて文字コードをUTF-8で保存します。</div><div><br /></div><div>実行してみます。</div><div><br /></div><div>文章が表示されました。</div><div><br /></div><div>今年はバレンタインのチョコレートをたくさん食べました</div><div><br /></div><div>ある場合とない場合の違いはブラウザが選択している文字コードです。</div><div><br /></div><div>ない場合はUTF-8が選択されて表示されますが、上記のサンプルの場合は、</div><div>ブラウザのエンコードもShift_JISが選択されています。</div><div><br /></div><div>ob_start関数は出力のバッファリングをオンにします。 その後は内部で出力内</div><div>容をためていきます。</div><div><br /></div><div>mb_output_handler関数は出力バッファ内で文字エンコーディングをするコール</div><div>バック関数です。サンプルではShift_JISを指定することで、コードをUTF-8から</div><div>Shift_JISに変換しています。</div><div><br /></div><div>ob_end_flush関数は出力バッファを送信した後に、出力のバッファリングをオフ</div><div>にする関数です。</div><div><br /></div><div>ob_startで吸って、ob_end_flashで吐いておしまい！というイメージです。</div><div><br /></div><div>もう１つ、HTML部分をある文字に置き換えて表示したい場合もあるかもしれません。</div><div><br /></div><div>この場合は自分でコールバック関数を作って、オリジナルの処理をして出力する</div><div>こともできます。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />function winter_game($buffer)<br />{<br />&nbsp;// &nbsp;バンクーバーを全てにソチ置換する<br />&nbsp;return (str_replace("Vancouver", "XXII", $buffer));<br />}<br /><br />ob_start("winter_game");<br /><br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />&lt;html&gt;<br /><br />&lt;body&gt;<br />Vancouver Olympic Winter Games&lt;br /&gt;<br />Vancouver Olympic Winter Games&lt;br /&gt;<br />Vancouver Olympic Winter Games&lt;br /&gt;<br />Vancouver Olympic Winter Games&lt;br /&gt;<br />Vancouver Olympic Winter Games&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />&lt;?php<br />ob_end_flush();<br />?&gt;</blockquote><div><br /></div><div>これを実行すると・・・</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">XXII Olympic Winter Games<br />XXII Olympic Winter Games<br />XXII Olympic Winter Games<br />XXII Olympic Winter Games<br />XXII Olympic Winter Games</blockquote><div><br /></div><div>全部ソチになりましたね。</div><div><br /></div><div>まだバンクーバーオリンピック開催中ですが、4年後に期待です。</div><div><br /></div><div>今日はフィギィアスケート男子、高橋選手銅メダル取りましたね。</div><div>フィギィアスケート男子史上初のメダル。すばらしいです！</div><div><br /></div><div>週末は寝不足になりそうです。</div><div><br /></div><div>おしま～い。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６３回】PHPでCSVデータ出力</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/02/phpcsv.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.324</id>

    <published>2010-02-12T07:32:30Z</published>
    <updated>2010-02-12T07:35:24Z</updated>

    <summary>今日はPHPでCSVデータを出力するプログラムです。データベースから結果を呼び出...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ファイル出力" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="csv" label="CSV" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はPHPでCSVデータを出力するプログラムです。</div><div><br /></div><div>データベースから結果を呼び出してCSV形式で出力したり、CSVファイル生成をす</div><div>るためにプログラムを作ることもあるかと思います。</div><div><br /></div><div>まずは、ファイル名をつけてデータをCSV形式に書き出して保存する方法です。</div> ]]>
        <![CDATA[<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />// CSVファイル名の設定<br />$csv_file = "test.csv";<br /><br />// CSVデータの初期化<br />$csv_data = "";<br /><br />// CSVに書き出すデータ<br />$data[0] = array("月曜日","Monday");<br />$data[1] = array("火曜日", "Tuesday");<br />$data[2] = array("水曜日", "Wednesday");<br />$data[3] = array("木曜日", "Thursday");<br />$data[4] = array("金曜日", "Friday");<br />$data[5] = array("土曜日", "Saturday");<br />$data[6] = array("日曜日", "Sunday");<br /><br />// CSVデータの作成<br />foreach($data as $key =&gt; $value ){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $key. ",";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $value[0]. ",";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $value[1];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(count($data) !== intval($key)+1){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$csv_data .= "\n";<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />}<br /><br />// ファイルを追記モードで開く<br />$fp = fopen($csv_file, 'ab');<br /><br />// ファイルを排他ロックする<br />flock($fp, LOCK_EX);<br /><br />// ファイルの中身を空にする<br />ftruncate($fp, 0);<br /><br />// データをファイルに書き込む<br />fwrite($fp, $csv_data);<br /><br />// ファイルを閉じる<br />fclose($fp);<br /><br />// 完了メッセージ<br />echo("Created CSV Data!");<br />?&gt;</blockquote><div><br /></div><div>実行してみます。</div><div><br /></div><div>Created CSV Data!が表示され、サーバー側にtest.csvが作成されています。</div><div><br /></div><div>(test.csv)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">0,月曜日,Monday<br />1,火曜日,Tuesday<br />2,水曜日,Wednesday<br />3,木曜日,Thursday<br />4,金曜日,Friday<br />5,土曜日,Saturday<br />6,日曜日,Sunday</blockquote><div><br /></div><div>基本的な流れは</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">1.CSVデータを作成する<br /><br />2.ファイルを追記モードで開く<br /><br />3.ファイルをロックする<br /><br />4.ファイルの中身を空にする<br /><br />5.データをファイルに書き込む<br /><br />6.ファイルを閉じる</blockquote><div><br /></div><div>といった流れです。</div><div><br /></div><div>サンプルはファイルの中身を空にしてからデータを入れていますが、</div><div>もし、CSVファイルの内容を追記したい場合は、</div><div><br /></div><div>// ファイルの中身を空にする</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">ftruncate($fp, 0);</blockquote><div><br /></div><div>の部分は不要です。</div><div><br /></div><div>次にサーバー下でCSVファイルの生成ではなく、CSVデータをそのままダウンロー</div><div>ドしたい場合があるかもしれません。</div><div><br /></div><div>クライアント向けにCSVデータに提供する場合です。</div><div><br /></div><div>次のサンプルを実行してみます。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />// CSVファイル名の設定<br />$csv_file = "test.csv";<br /><br />// CSVデータの初期化<br />$csv_data = "";<br /><br />// CSVに書き出すデータ<br />$data[0] = array("月曜日","Monday");<br />$data[1] = array("火曜日", "Tuesday");<br />$data[2] = array("水曜日", "Wednesday");<br />$data[3] = array("木曜日", "Thursday");<br />$data[4] = array("金曜日", "Friday");<br />$data[5] = array("土曜日", "Saturday");<br />$data[6] = array("日曜日", "Sunday");<br /><br />// CSVデータの作成<br />foreach($data as $key =&gt; $value ){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $key. ",";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $value[0]. ",";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>$csv_data .= $value[1];<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(count($data) !== intval($key)+1){<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$csv_data .= "\n";<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />}<br /><br />// MIMEタイプの設定<br />header("Content-Type: application/octet-stream");<br /><br />// ファイル名の表示<br />header("Content-Disposition: attachment; filename=$csv_file");<br /><br />// データの出力<br />echo($csv_data);<br /><br />?&gt;</blockquote><div><br /></div><div>実行すると・・・</div><div><br /></div><div>ダイアログが表示されます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.GIF" src="http://blog.promob.jp/fri/2010/02/12/1.GIF" width="439" height="295" class="mt-image-none" style="" /></span></div><div><br /></div><div>ファイル名をtest.csvのままで保存して・・・。</div><div><br /></div><div>CSVファイルを開くと先ほどのCSVデータが表示されます。</div><div><br /></div><div>最初のデータ作成部分は同じですが、その後はMIMEタイプをapplication/octet-</div><div>streamにして、ファイル名を設定して、あとはCSVデータを文字列を出力します。</div><div><br /></div><div>サンプルはecho文を使っていますが、print文でも大丈夫です。</div><div><br /></div><div>これでクライアント側でCSVファイルをダウンロードすることができました。</div><div><br /></div><div>今日はこれでおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６２回】PHPの配列内検索関数の限界</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/02/php-13.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.320</id>

    <published>2010-02-05T03:20:11Z</published>
    <updated>2010-02-05T03:22:54Z</updated>

    <summary>今日はPHPの配列内検索についてのお話です。配列内の検索でよく使われる関数がin...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="配列" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="配列内検索" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="array_search" label="array_search" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="in_array" label="in_array" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="配列内検索" label="配列内検索" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はPHPの配列内検索についてのお話です。</div><div><br /></div><div>配列内の検索でよく使われる関数がin_array関数とarray_search関数です。</div><div><br /></div><div>それぞれの関数の使い方はマニュアルのほうを・・・。</div><div><br /></div><div>★in_array</div><div><a href="http://php.net/in_array">http://php.net/in_array</a></div><div><br /></div><div>★array_search</div><div><a href="http://php.net/array_search">http://php.net/array_search</a></div><div><br /></div> ]]>
        <![CDATA[<div>in_array関数は配列に値があるかどうかをチェック、</div><div>array_search関数は配列に値がある場合はそのキーを返します。</div><div><br /></div><div>ところが、先日in_array関数、array_search関数を使って、このようなパターン</div><div>のプログラムを作成して・・・。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?<br />// 検索対象の配列<br />$find_me_list = array("12345678901234567012","12345678907654321765");<br /><br />// 検索リスト<br />$search_list[0] = "12345432123454321234";<br />$search_list[1] = "12345678901234567012";<br />$search_list[2] = "12345678901234567555";<br />$search_list[3] = "12345678901234565432";<br />$search_list[4] = "12345123451234512345";<br />$search_list[5] = "12345678907654321765";<br />$search_list[6] = "12345678907654321222";<br />$search_list[7] = "12345678907654320123";<br /><br />// 検索リストから検索対象の配列にある数字を取り出す<br />foreach($search_list as $value){<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>$key = array_search($value, $find_me_list);<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if($key !== FALSE ){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>echo("key = $key"."&lt;br /&gt;");<br /><span class="Apple-tab-span" style="white-space:pre">		</span>echo("value = $value". "&lt;br /&gt;");<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>$is_in_array = in_array($value, $find_me_list);<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if($is_in_array){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>echo("This is the same.");<br /><span class="Apple-tab-span" style="white-space:pre">		</span>echo("value = $value". "&lt;br /&gt;");<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br />}<br />?&gt;</blockquote><div><br /></div><div>実行してみたら・・・</div><div><br /></div><div>意外な実行結果が・・・。。。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">key = 0<br />find_me = 12345678901234567012<br />value = 12345678901234567012<br />This is the same.value = 12345678901234567012<br />key = 0<br />find_me = 12345678901234567012<br />value = 12345678901234567555<br />This is the same.value = 12345678901234567555<br />key = 1<br />find_me = 12345678907654321765<br />value = 12345678907654321765<br />This is the same.value = 12345678907654321765<br />key = 1<br />find_me = 12345678907654321765<br />value = 12345678907654321222<br />This is the same.value = 12345678907654321222</blockquote><div><br /></div><div>in_array関数もarray_search関数も使った結果はご覧のとおり。</div><div><br /></div><div>array_search関数の場合は、"12345678901234567012"が一致するとkeyが0</div><div>"12345678907654321765"が一致するとkeyが1を返すはずですが、</div><div>本来ひっかからないはずのデータが引っかかっています。</div><div><br /></div><div>in_array関数も同様にFALSEを返すはずのデータがTRUEになっています。</div><div><br /></div><div>結果をよく見てみると、上の２つは1234567890123456、下の２つは</div><div>1234567890765432が一致しています。</div><div><br /></div><div>PHPの配列検索関数は16桁が限界のようです。</div><div><br /></div><div>16桁を超える数字の配列を扱う場合は注意が必要ですね。</div><div><br /></div><div>ちなみにこのプログラム・・・下3桁の比較を追加して正しく結果を出すように修正</div><div>しました。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?<br />// 検索対象の配列<br />$find_me_list = array("12345678901234567012","12345678907654321765");<br /><br />// 検索リスト<br />$search_list[0] = "12345432123454321234";<br />$search_list[1] = "12345678901234567012";<br />$search_list[2] = "12345678901234567555";<br />$search_list[3] = "12345678901234565432";<br />$search_list[4] = "12345123451234512345";<br />$search_list[5] = "12345678907654321765";<br />$search_list[6] = "12345678907654321222";<br />$search_list[7] = "12345678907654320123";<br /><br />// 検索リストから検索対象の配列にある数字を取り出す<br />foreach($search_list as $value){<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>$key = array_search($value, $find_me_list);<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>if($key !== FALSE ){<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// 検索数字の下3桁を取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str1 = substr($value, -3);<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>foreach($find_me_list as $find){<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 検索対象数字の下3桁を取得<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$str2 = substr($find, -3);<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 下3桁が同じの場合は一致<br /><span class="Apple-tab-span" style="white-space:pre">			</span>if(strcmp($str1, $str2) == 0){<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">					</span>echo("key = $key"."&lt;br /&gt;");<br /><span class="Apple-tab-span" style="white-space:pre">					</span>echo("value = $value". "&lt;br /&gt;");<br /><br /><span class="Apple-tab-span" style="white-space:pre">				</span>break;<br /><span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />}<br />?&gt;</blockquote><div><br /></div><div>(実行結果）</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">key = 0<br />value = 12345678901234567012<br />key = 1<br />value = 12345678907654321765</blockquote><div><br /></div><div><br /></div><div>それにしても、配列で大きな数字を扱うことが少ないとは言え、何だかイケてな</div><div>いですねぇ。。。</div><div><br /></div><div>おしま～い。</div><div><br /></div>]]>
    </content>
</entry>

<entry>
    <title>【第６１回】Puttyの秘密鍵を変換する</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/01/putty.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.314</id>

    <published>2010-01-29T01:10:13Z</published>
    <updated>2010-01-30T03:33:41Z</updated>

    <summary>最近はSSH2+公開鍵方式でのコマンド操作が一般的になってきました。個人的にはタ...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="SSH" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="putty" label="Putty" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="ssh2" label="SSH2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="teraterm" label="TeraTerm" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div><br /></div><div>最近はSSH2+公開鍵方式でのコマンド操作が一般的になってきました。</div><div><br /></div><div>個人的にはターミナルツールはTeraTermが好みなのですが、あるターミナルツー</div><div>ルで作成した秘密鍵が他のターミナルツールで対応していない場面があります。</div><div><br /></div><div>例えば、Puttyで作成された秘密鍵で、TeraTermで接続する場合です。</div><div><br /></div><div>TeraTermで接続すると怒られて接続が切られて、妥協して作成された秘密鍵に合</div><div>わせてターミナルツールを変えたり・・・ということもあるかもしれません。</div><div><br /></div><div>でもやっぱりコマンド使うなら自分好みのターミナルツールで使いたいところです。</div><div><br /></div><div>ということで、今日はPuttyで作られた秘密鍵を変換してTeraTermで使う方法に</div><div>ついてです。</div><div><br /></div><div>まずは、作業の前にPuttyがない場合はPuttyをダウンロードして、特定のディレ</div><div>クトリに解凍しておきます。</div><div><br /></div><div>それでは作業スタートです。</div><div><br /></div> ]]>
        <![CDATA[<div>1.Puttyを解凍したフォルダにあるputtygen.exeを立ち上げます。</div><div><br /></div><div>2.Putty Key Generatorが立ち上がります。</div><div><br /></div><div>Parametersは、SSH-2 RSAにしておきます。</div><div><br /></div><div>3.File → load private key を選択します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.gif" src="http://blog.promob.jp/fri/2010/01/30/1.gif" width="478" height="394" class="mt-image-none" style="" /></span></div><div><br /></div><div>4.秘密鍵で利用している.ppkという拡張子のファイルを選択します。</div><div><br /></div><div>パスフレーズが聞かれる場合はパスフレーズを入力します。</div><div><br /></div><div>5.Conversions→Export OpenSSH keyを選択します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="2.gif" src="http://blog.promob.jp/fri/2010/01/30/2.gif" width="480" height="402" class="mt-image-none" style="" /></span></div><div><br /></div><div>保存先が表示されるので、名前をIdentityにして保存します。</div><div><br /></div><div>6.TeraTermを立ち上げて、接続先を入力します。</div><div><br /></div><div>接続できるとSSH認証画面が表示されます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="3.gif" src="http://blog.promob.jp/fri/2010/01/30/3.gif" width="470" height="458" class="mt-image-none" style="" /></span></div><div><br /></div><div>7.ユーザ名とパスフレーズを入れて、RSA/DSA鍵を使うを指定します。</div><div><br /></div><div>8.秘密鍵ボタンをクリックして、先ほど作成したidentityファイルを指定し、</div><div>ファイルの種類は秘密鍵ファイルにして開くボタンをクリックします。</div><div><br /></div><div>図３の画面に戻ってOKボタンを押します。</div><div><br /></div><div>おお～っ！TeraTermでも接続ができました。</div><div><br /></div><div>Puttyで接続する場合の秘密鍵はhogehoge.ppk、TeraTermではhogehoge.ppkから</div><div>openSSH形式に変換したidentifyファイルを秘密鍵に指定してSSH接続できるよう</div><div>になりました。</div><div><br /></div><div>今日はこれでおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第６０回】MacでGoogle Android（その２）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/01/macgoogle-android-1.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.309</id>

    <published>2010-01-22T05:39:42Z</published>
    <updated>2010-01-22T05:53:12Z</updated>

    <summary>今日は先週に続いてMacでAndroidの続きです。先週は1．JDK6.0のイン...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="Android" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Mac" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="adtpluginforeclipse" label="ADT Plugin for Eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eclipse" label="Eclipse" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="Google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mac" label="Mac" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div><div>今日は先週に続いてMacでAndroidの続きです。</div><div><br /></div><div>先週は</div><div><br /></div><div>1．JDK6.0のインストール</div><div><br /></div><div>2．Android SDKのインストール</div><div><br /></div><div>について書きましたが、今日はEclipseのほうの作業についてです。</div><div><br /></div><div>3．Eclipseのインストール</div><div><br /></div><div>4. ADT Plugin for Eclipseのインストール</div><div><br /></div><div>Eclipseがない場合はEclipseをインストールします。</div></div> ]]>
        <![CDATA[<div><br /></div><div><br /></div><div>3. Eclipseのインストール</div><div><br /></div><div>★Eclipseのダウンロードサイト</div><div><a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></div><div><br /></div><div>今回は、Eclipse IDE for Java Developers Mac Carbon 32bitを選択し、ダウンロードします。</div><div><br /></div><div>解凍した後、Eclipseのインストールします。</div><div><br /></div><div>Eclipseのインストールをしたあと、ADT Plugin for Eclipseのインストールです。</div><div><br /></div><div>4.ADT Plugin for Eclipseのインストール</div><div><br /></div><div>Eclipseを立ち上げて、Help→Install New Softwareを選択します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.png" src="http://blog.promob.jp/fri/2010/01/22/1.png" width="500" height="277" class="mt-image-none" style="" /></span></div><div><br /></div><div>このような画面が出てきます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="2.png" src="http://blog.promob.jp/fri/2010/01/22/2.png" width="500" height="461" class="mt-image-none" style="" /></span></div><div><br /></div><div>Addをクリックします。</div><div><br /></div><div>Add Siteというウィンドウが立ち上がるので次のように記述します。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">Name:Eclipse<br />Location:https://dl-ssl.google.com/android/eclipse/</blockquote><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="3.png" src="http://blog.promob.jp/fri/2010/01/22/3.png" width="480" height="203" class="mt-image-none" style="" /></span></div><div><br /></div><div>OKボタンを押します。</div><div><br /></div><div>AndroidのDeveloper Toolsが表示されます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="4.png" src="http://blog.promob.jp/fri/2010/01/22/4.png" width="500" height="464" class="mt-image-none" style="" /></span></div><div><br /></div><div>３つの項目すべてチェックを入れてNextをクリックします。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="5.png" src="http://blog.promob.jp/fri/2010/01/22/5.png" width="500" height="464" class="mt-image-none" style="" /></span></div><div><br /></div><div>Nextをクリックします。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="6.png" src="http://blog.promob.jp/fri/2010/01/22/6.png" width="500" height="466" class="mt-image-none" style="" /></span></div><div><br /></div><div>Finishをクリックします。</div><div><br /></div><div>インストールが開始されます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="7.png" src="http://blog.promob.jp/fri/2010/01/22/7.png" width="500" height="399" class="mt-image-none" style="" /></span></div><div><br /></div><div>途中でこのような画面が出る場合はOKをクリックします。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="8.png" src="http://blog.promob.jp/fri/2010/01/22/8.png" width="500" height="154" class="mt-image-none" style="" /></span></div><div><br /></div><div>インストールが完了すると、再起動を促すウィンドウが表示されるので、OKを押して再起動します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="9.png" src="http://blog.promob.jp/fri/2010/01/22/9.png" width="500" height="154" class="mt-image-none" style="" /></span></div><div><br /></div><div>再起動した後、再びEclipseを起動します。</div><div><br /></div><div>Eclipse→環境設定(References)をクリックします。</div><div><br /></div><div>AndroidをクリックしてAndroidの設定をします。</div><div><br /></div><div>SDK LocationにAndroidをインストールした時のパスを入れます。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">/Developer/android-sdk-mac/</blockquote><div><br /></div><div>と入れます．</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="10.png" src="http://blog.promob.jp/fri/2010/01/22/10.png" width="500" height="417" class="mt-image-none" style="" /></span></div><div><br /></div><div>次に、Windows→Android SDK and ADV Manager</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="11.png" src="http://blog.promob.jp/fri/2010/01/22/11.png" width="276" height="278" class="mt-image-none" style="" /></span></div><div><br /></div><div>を選択します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="12.png" src="http://blog.promob.jp/fri/2010/01/22/12.png" width="500" height="289" class="mt-image-none" style="" /></span></div><div><br /></div><div>ここでAndroidの端末を追加します。</div><div><br /></div><div>Available Packages を選択し、出てきた項目すべてにチェックを入れます．</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="13.png" src="http://blog.promob.jp/fri/2010/01/22/13.png" width="500" height="289" class="mt-image-none" style="" /></span></div><div><br /></div><div>Install Selectedをクリックして、インストールを開始します。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="14.png" src="http://blog.promob.jp/fri/2010/01/22/14.png" width="451" height="301" class="mt-image-none" style="" /></span></div><div><br /></div><div>インストールが終わると図１２の画面に戻ります。</div><div><br /></div><div>Addをクリックして</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="15.png" src="http://blog.promob.jp/fri/2010/01/22/15.png" width="399" height="582" class="mt-image-none" style="" /></span></div><div><br /></div><div>を表示します。</div><div><br /></div><div>ここでは、名前をADV_1、TargetをAndroid1.1-API Level 2 sizeを64、Build-inはデフォルトに設定します。名前は自由につけてもかまいません。</div><div><br /></div><div>Create AVDをクリックします。</div><div><br /></div><div>AVDが追加されました。</div><div><br /></div><div>ここではAndroid1.1 API Level2のADVを作りましたが、必要に応じて他のバージョンも同様に追加します。</div><div><br /></div><div>これで、MacでAndroidアプリケーションを開発する環境ができました。</div><div><br /></div><div>今日はこれでおしまいです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第５９回】PHPでグラフ作成</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/01/php-12.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.306</id>

    <published>2010-01-15T09:58:01Z</published>
    <updated>2010-01-15T10:01:47Z</updated>

    <summary>今日はAndroidの続きの予定でしたが、時間の都合でPHPでとても簡単なグラフ...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="グラフ作成" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="createuri" label="createUri" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="googleapichart" label="Google API Chart" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jpgraph" label="JpGraph" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はAndroidの続きの予定でしたが、</div><div>時間の都合でPHPでとても簡単なグラフを作成します。</div><div><br /></div><div>PHPでグラフを作成する方法としては、JpGraphを使う方法とGoogle API Chartを</div><div>使う方法がありますが、今回はGoogle API Chartを使う方法です。</div><div><br /></div><div>ひとつ簡単なサンプルを作ります。</div> ]]>
        <![CDATA[<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />// グラフタイトルの設定<br />$title = "グラフのテスト";<br /><br />// グラフタイトルのエンコード<br />$title = rawurlencode($title);<br /><br />// 棒の太さと間隔<br />$bar = "40,60,140";<br /><br />// 背景色の設定(背景を灰色、グラフ領域は白)<br />$background = "bg,s,cccccc|c,s,ffffff";<br /><br />// グラフの要素をセット<br />$datas = array(<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"cht" =&gt; "bvs",<span class="Apple-tab-span" style="white-space:pre">				</span>// グラフタイプ：横棒<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chs" =&gt; "500x300",<span class="Apple-tab-span" style="white-space:pre">		</span>// グラフサイズ<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chds"=&gt; "0,100",<span class="Apple-tab-span" style="white-space:pre">			</span>// Y軸<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chco"=&gt; "ff0000",<span class="Apple-tab-span" style="white-space:pre">			</span>// 棒の色<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chxt" =&gt; "y",<span class="Apple-tab-span" style="white-space:pre">			</span>// 軸ラベル表示位置<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chd" =&gt; "t:20,50,85", // 値<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chtt"=&gt; $title,<span class="Apple-tab-span" style="white-space:pre">			</span>// グラフタイトル<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chts" =&gt; "ffffff,18",<span class="Apple-tab-span" style="white-space:pre">		</span>// タイトル文字色、サイズ<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chbh" =&gt; $bar,<span class="Apple-tab-span" style="white-space:pre">				</span>// 棒の太さ、棒の間隔<br /><span class="Apple-tab-span" style="white-space:pre">	</span>"chf" =&gt; $background<span class="Apple-tab-span" style="white-space:pre">		</span>// 背景<br />);<br /><br />// グラフのURIを作成<br />$graph = createUri($datas);<br /><br />/* グラフのURIを組み立てる関数 */<br />function createUri($datas){<br /><br />&nbsp;&nbsp; // Google Chart APIのアドレス<br />&nbsp;&nbsp; $uri = 'http://chart.apis.google.com/chart?';<br /><br />&nbsp;&nbsp; // クエリの初期化<br />&nbsp;&nbsp; $query = "";<br /><br />&nbsp;&nbsp; // クエリを作成<br />&nbsp;&nbsp; foreach($datas as $key =&gt; $val){<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; if( strcmp($query, "") != 0 ){<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $query .= "&amp;amp;";<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; }<br />&nbsp;&nbsp; &nbsp; &nbsp; $query .= "$key=$val";<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; &nbsp; &nbsp; $uri .= $query;<br /><br />&nbsp;&nbsp; &nbsp; &nbsp; return $uri;<br />}<br />?&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equive="Content-Type" content="text/html; charset=UTF-8" /&gt;<br />&lt;title&gt;グラフ表示テスト&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />グラフを表示します。&lt;br /&gt;<br />&lt;img src="&lt;?= $graph ?&gt;" alt="棒グラフです" /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div>プログラムを実行してみます。</div><div><br /></div><div>グラフが表示されます。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="graph.png" src="http://blog.promob.jp/fri/2010/01/15/graph.png" width="522" height="337" class="mt-image-none" style="" /></span></div><div><br /></div><div>createUriのメソッドは<a href="http://blog.promob.jp/fri/2009/10/phpqr.html">第４７回</a>でQRコードを生成した時と同じものを使ってい</div><div>ます。</div><div><br /></div><div>ここのQRコードも同じGoogle Chart APIで作成したものでした。</div><div><br /></div><div>グラフのタイプや設定を配列で設定して、createUriメソッドでパラメータを作り、</div><div>GoogleAPIのURLを呼び出して表示します。</div><div><br /></div><div>ただ、細かい設定になるとかなりの工夫が必要で、意外と大変でした。</div><div><br /></div><div>短いですが、今日はここまでです。</div>]]>
    </content>
</entry>

<entry>
    <title>【第５８回】MacでGoogle Android（その１）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2010/01/macgoogle-android.html" />
    <id>tag:blog.promob.jp,2010:/fri//1.302</id>

    <published>2010-01-08T02:03:11Z</published>
    <updated>2010-01-08T02:19:03Z</updated>

    <summary>今日はMacでGoogle Androidのプログラミング環境を作ってみました。...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="Android" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Mac" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="eclipse35" label="Eclipse3.5" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="google" label="Google" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jdk60" label="JDK6.0" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="leopard" label="Leopard" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mac" label="Mac" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sdk" label="SDK" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はMacでGoogle Androidのプログラミング環境を作ってみました。</div><div><br /></div><div>利用環境は、Mac OS 10.5(Leopard)、JDK6.0、Eclipse3.5です。</div> ]]>
        <![CDATA[<div>手順としては、</div><div><br /></div><div>1．JDK6.0のインストール</div><div><br /></div><div>２．Android SDKのインストール</div><div><br /></div><div>３．Eclipseのインストール</div><div><br /></div><div>の順番になります。</div><div><br /></div><div>まずはJDKから準備です。</div><div><br /></div><div>1. JDK6.0のインストール</div><div><br /></div><div>Mac OS Xの場合は既にJDK6.0が既にインストールされている可能性があります。</div><div><br /></div><div>まずはターミナルを起動します。</div><div><br /></div><div>次のコマンドを打ってみます．</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">java -version</blockquote><div><br /></div><div>すると、Javaのバージョンが出てきます。</div><div><br /></div><div>何も設定していない場合は、Java 1.5な表記になっている場合はJDK5.0が動いています。</div><div><br /></div><div>ここで、JDK6.0に変更します。</div><div><br /></div><div>MacintoshHD→アプリケーション→ユーティリティ→Java→Java Preferences.app</div><div><br /></div><div>をダブルクリックします。</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="1.png" src="http://blog.promob.jp/fri/2010/01/08/1.png" width="500" height="339" class="mt-image-none" style="" /></span></div><div><br /></div><div>このような画面が出てきます。ドラッグしてJava SE 6を１番上に持ってきます。</div><div><br /></div><div>再度ターミナルを開きます．</div><div><br /></div><div>再度 java -version</div><div><br /></div><div>とコマンドを打ってみます。</div><div><br /></div><div>おお～っ！！</div><div><br /></div><div>こんどは1.6.0と表示されています。</div><div><br /></div><div>これでJDK6.0に切り替わりました。</div><div><br /></div><div>次はAndoroid SDKをインストールしてみます。</div><div><br /></div><div>まずは、以下のサイトからAndroid SDKをダウンロードします。</div><div><br /></div><div>★Android SDK</div><div><a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a></div><div><br /></div><div>ここではMax OS Xのリンクをクリックしてダウンロードします。</div><div><br /></div><div>ダウンロードしたファイルを解凍してディレクトリ名をandroid-sdk-macに名前を変更し、Machintosh HD→Developerフォルダの下に配置します。</div><div><br /></div><div>次に環境変数を設定します。</div><div><br /></div><div>ターミナルを開きます。</div><div><br /></div><div>次のコマンドを叩いて、bash_profileの内容を編集（新規の場合は新規作成）します。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">vi .bash_profile</blockquote><div><br /></div><div>編集モードにして、次の内容を記述し、環境変数を設定します。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">ANDROID_HOME=/Developer/android-sdk-mac<br />PATH=$PATH:${ANDROID_HOME}/tools</blockquote><div><br /></div><div>記述した後は、ESCを押して:wqコマンドで上書き保存して終了します。</div><div><br /></div><div>次に、設定の内容を反映させるため、次のコマンドを叩きます．</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">source &nbsp;~/.bash_profile</blockquote><div><br /></div><div>これで./bash_profileの内容が反映されました。</div><div><br /></div><div>次にAndroid SDKのツールにパスが通っているかどうかを確認します。</div><div><br /></div><div>ターミナルに戻ります。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">adb -help</blockquote><div><br /></div><div>と打ってみます。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">Android Debug Bridge version 1.0.25</blockquote><div><br /></div><div>コマンドが認識され、ヘルプドキュメントがずらずらと表示されます。</div><div><br /></div><div>次はEclipseのダウンロードと設定になりますが、長くなりますので、続きは次回にします。</div>]]>
    </content>
</entry>

<entry>
    <title>【第５７回】CodeIgniterのForm_validationクラスについて（その２）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2009/12/codeigniterform-validation-1.html" />
    <id>tag:blog.promob.jp,2009:/fri//1.296</id>

    <published>2009-12-18T05:33:11Z</published>
    <updated>2009-12-18T05:35:52Z</updated>

    <summary>今日はPHPのフレームワークCodeIgniterのForm_validatio...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="CodeIgniter" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="codeigniter" label="CodeIgniter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="form_validation" label="Form_validation" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日はPHPのフレームワークCodeIgniterのForm_validationについてです。第51</div><div>回の続きになります。</div><div><br /></div><div><a href="http://blog.promob.jp/fri/2009/11/codeigniterform-validation.html">第51回</a>の時はフォームから入力した値を取得する方法について書きましたが、今</div><div>回は確認画面のほうを書きます。</div><div><br /></div><div>ほとんど51回と同じようなソースですが、確認画面にあたるconfirm()メソッド</div><div>と選択した項目を表示するためのメソッドも追加しています。</div> ]]>
        <![CDATA[<div>入力フォーム用のビューは51回と同じですが、一応書いておきます。</div><div><br /></div><div>1.controller/form.php（フォーム用コントローラ）</div><div><br /></div><div>(form.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br />class Form extends Controller{<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// 入力<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function input()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// URLヘルパの読み込み<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;load-&gt;helper('url');<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// フォームバリデーションの読み込み<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;load-&gt;library('form_validation');<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ビューを呼び出す<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;load-&gt;view('form_input_view');<span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// 確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function confirm()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// URLヘルパの読み込み<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;load-&gt;helper('url');<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// フォームバリデーションの読み込み<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;load-&gt;library('form_validation');<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// バリデーションの設定<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;form_validation-&gt;set_rules('your_name', 'お名前',<br />'required|xss_clean');<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;form_validation-&gt;set_rules('pc_user_menu', 'PC利用暦',<br />'required|xss_clean');<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;form_validation-&gt;set_rules('gender', '性別', 'required|xss_clean');<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$this-&gt;form_validation-&gt;set_rules('os[]', '使用OS', 'xss_clean');<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// バリデーションの実行<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if ($this-&gt;form_validation-&gt;run() !== FALSE)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 成功した場合は確認画面ビューを表示<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$view_name = "form_confirm_view";<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// OSテキスト表示用<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$os_text = "";<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$your_name = set_value('your_name');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$pc_user_menu = set_value('pc_user_menu');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$gender = set_value('gender');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$os_list = set_value('os[]');<br /><span class="Apple-tab-span" style="white-space:pre">						</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 選択したOSリストの表示<br /><span class="Apple-tab-span" style="white-space:pre">			</span>if($os_list)<br /><span class="Apple-tab-span" style="white-space:pre">			</span>{<br /><span class="Apple-tab-span" style="white-space:pre">				</span>foreach($os_list as $key =&gt; $value)<br /><span class="Apple-tab-span" style="white-space:pre">				</span>{<br /><span class="Apple-tab-span" style="white-space:pre">					</span>$os_text .= $this-&gt;_get_os_name($value). ",";<br /><span class="Apple-tab-span" style="white-space:pre">				</span>}<span class="Apple-tab-span" style="white-space:pre">				</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// ビューに表示する値を設定<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['your_name'] = $your_name;<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['gender_name'] = $this-&gt;_get_gender_name($gender);<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['pc_user'] = $this-&gt;_get_pc_user($pc_user_menu);<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['os_text'] = $os_text;<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['gender'] = $gender;<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['pc_user_menu'] = $pc_user_menu;<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$data['os_list'] = $os_list;<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// ビューの表示<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$this-&gt;load-&gt;view('form_confirm_view', $data);<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 失敗した場合は入力画面ビューに戻る<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$this-&gt;load-&gt;view('form_input_view');<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// PCユーザ名を取得<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function _get_pc_user($num)<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$pc_user_data = array("","1年未満","1年から2年","2年以上");<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$pc_user = $pc_user_data[$num];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $pc_user;<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// 性別を取得<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function _get_gender_name($gender)<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$str = "";<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(strcmp($gender, "men") == 0)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$str = "男性";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>elseif(strcmp($gender, "woman") == 0)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$str = "女性";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $str;<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// OS情報を取得<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function _get_os_list()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[1] = "Windows95";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[2] = "Windows98";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[3] = "WindowsNT";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[4] = "Windows2000";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[5] = "WindowsXP";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[6] = "WindowsVista";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[7] = "Windows 7";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[8] = "Mac OS 9";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[9] = "Mac OS X";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[10] = "Linux";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list[11] = "Solaris";<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $os_list;<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// OSの名前を取得する<br /><span class="Apple-tab-span" style="white-space:pre">	</span>function _get_os_name($num)<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_name = "";<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_list = $this-&gt;_get_os_list();<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$os_name = $os_list[$num];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>return $os_name;<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />}</blockquote><div><br /></div><div>2.view/form_input_view.php(入力画面用ビュー）</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=" /&gt;<br />&lt;title&gt;サンプルです&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="&lt;?= site_url("form/confirm"); ?&gt;" method="post"&gt;<br />★お名前（必須）&lt;?php echo form_error('your_name'); ?&gt;<br />&lt;input type="text" name="your_name" value="&lt;?php echo set_value('name');<br />?&gt;" /&gt;&lt;br /&gt;<br />★パソコンの利用暦を選んでください。&lt;?php echo form_error('pc_user_menu'); ?&gt;<br />&lt;select name="pc_user_menu"&gt;<br />&lt;option value="0" &lt;?php echo set_select('pc_user_menu', '0', TRUE);?&gt;&gt;▼<br />選択してください<br />&lt;option value="1" &lt;?php echo set_select('pc_user_menu', '1');?&gt;&gt;1年未満<br />&lt;/option&gt;<br />&lt;option value="2" &lt;?php echo set_select('pc_user_menu', '2');?&gt;&gt;1年から2<br />年&lt;/option&gt;<br />&lt;option value="3" &lt;?php echo set_select('pc_user_menu', '3');?&gt;&gt;2年以上<br />&lt;/option&gt;<br />&lt;/select&gt;<br />&lt;br /&gt;<br />★性別を選んでください。（必須）&lt;?php echo form_error('gender'); ?&gt;<br />&lt;input type="radio" name="gender" value="man" &lt;?php echo<br />set_radio('gender', 'man');?&gt; /&gt;男性<br />&lt;input type="radio" name="gender" value="woman" &lt;?php echo<br />set_radio('gender', 'woman');?&gt; /&gt;女性<br />&lt;br /&gt;<br />★使用しているOSをすべて選択してください。(複数選択可)&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="1" &lt;?php echo<br />set_checkbox('os[]', '1'); ?&gt; /&gt;Windows95&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="2" &lt;?php echo<br />set_checkbox('os[]', '2'); ?&gt; /&gt;Windows98&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="3" &lt;?php echo<br />set_checkbox('os[]', '3'); ?&gt; /&gt;WindowsNT&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="4" &lt;?php echo<br />set_checkbox('os[]', '4'); ?&gt; /&gt;Windows2000&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="5" &lt;?php echo<br />set_checkbox('os[]', '5'); ?&gt; /&gt;WindowsXP&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="6" &lt;?php echo<br />set_checkbox('os[]', '6'); ?&gt; /&gt;WindowsVista&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="7" &lt;?php echo<br />set_checkbox('os[]', '7'); ?&gt; /&gt;Windows 7&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="8" &lt;?php echo<br />set_checkbox('os[]', '8'); ?&gt; /&gt;Mac OS 9&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="9" &lt;?php echo<br />set_checkbox('os[]', '9'); ?&gt; /&gt;Mac OS X&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="10" &lt;?php echo<br />set_checkbox('os[]', '10'); ?&gt; &nbsp;/&gt;Linux&lt;br /&gt;<br />&lt;input type="checkbox" name="os[]" value="11" &lt;?php echo<br />set_checkbox('os[]', '11'); ?&gt; /&gt;Solaris&lt;br /&gt;<br /><br />&lt;input type="submit" name="send" value="送信" /&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;</blockquote><div><br /></div><div><br /></div><div>3.views/form_confirm_view.php（確認画面用ビュー）</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=" /&gt;<br />&lt;title&gt;確認画面です。&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="&lt;?= site_url("form/confirm"); ?&gt;" method="post"&gt;<br />★お名前（必須）&lt;br /&gt;<br />&lt;?= $your_name ?&gt;&lt;br /&gt;<br />★パソコンの利用暦を選んでください。&lt;br /&gt;<br />&lt;?= $pc_user ?&gt;&lt;br /&gt;<br />★性別を選んでください。（必須）&lt;br /&gt;<br />&lt;?= $gender_name ?&gt;&lt;br /&gt;<br />★使用しているOSをすべて選択してください。(複数選択可)&lt;br /&gt;<br />&lt;?= $os_text ?&gt;&lt;br /&gt;<br />&lt;br /&gt;<br /><br />&lt;form action="#" method="post"&gt;<br />&lt;input type="hidden" name="your_name" value="&lt;?= $your_name ?&gt;" /&gt;<br />&lt;input type="hidden" name="pc_user_menu" value="&lt;?= $pc_user_menu ?&gt;" /&gt;<br />&lt;input type="hidden" name="gender" value="&lt;?= $gender ?&gt;" /&gt;<br />&lt;?php if($os_list): ?&gt;<br />&lt;?php foreach($os_list as $value): ?&gt;<br />&lt;input type="hidden" name="os[]" value="&lt;?= $value ?&gt;" /&gt;<br />&lt;?php endforeach; ?&gt;<br />&lt;?php endif; ?&gt;<br />&lt;input type="submit" name="send" value="送信" /&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;</blockquote><div><br /></div><div><br /></div><div>サンプルを実行すると、全部入力すると確認画面と入力した内容が表示されます。</div><div><br /></div><div>今回のポイントはform.phpのテキスト表示用に使っている以下の部分です。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><span class="Apple-tab-span" style="white-space:pre">		</span>// バリデーションの実行<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if ($this-&gt;form_validation-&gt;run() !== FALSE)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>// 成功した場合は確認画面ビューを表示<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$view_name = "form_confirm_view";<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>// OSテキスト表示用<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$os_text = "";<br /><span class="Apple-tab-span" style="white-space:pre">			</span><br /><span class="Apple-tab-span" style="white-space:pre">			</span>$your_name = set_value('your_name');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$pc_user_menu = set_value('pc_user_menu');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$gender = set_value('gender');<br /><span class="Apple-tab-span" style="white-space:pre">			</span>$os_list = set_value('os[]');</blockquote><div><br /></div><div><br /></div><div>入力した値は$this-&gt;form_validation-&gt;run()を実行したあと、</div><div>set_valueで取得します。</div><div><br /></div><div>$this-&gt;form_validation-&gt;run()を実行する前にset_valueで値を取ることができ</div><div>ないので注意が必要です。</div><div><br /></div><div>set_valueは入力した項目だけでなく、ラジオボタン、セレクトボックス、</div><div>チェックボックスの選択項目も取得することができます。</div><div><br /></div><div>複数選択のチェックボックスの場合は、os_listに配列で値が入ってきます。</div><div><br /></div><div>この配列からforeach文を利用して、選択された項目をテキストにして表示して</div><div>います。</div><div><br /></div><div>また、確認画面のビューのほうでもforeach文を使って選択内容に応じてhidden</div><div>項目も設定できるようにしています。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php foreach($os_list as $value): ?&gt;<br />&lt;input type="hidden" name="os[]" value="&lt;?= $value ?&gt;" /&gt;<br />&lt;?php endforeach; ?&gt;</blockquote><div><br /></div><div>form_validation機能は入力内容の判定だけでなく、その後のPOST値の取得も簡</div><div>単にできてしまうので、とても便利です。</div><div><br /></div><div>CodeIgniterのForm_validation機能使ってみてください。</div><div><br /></div><div>おしま～い。</div>]]>
    </content>
</entry>

<entry>
    <title>【第５６回】PHPのコーディング規約について考える</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2009/12/php-11.html" />
    <id>tag:blog.promob.jp,2009:/fri//1.291</id>

    <published>2009-12-11T03:20:59Z</published>
    <updated>2009-12-11T03:25:26Z</updated>

    <summary>普段PHPでプログラムを書いていますが、いろいろなPHPのソースを見ていると・・...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="CakePHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="CodeIgniter" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Symfony" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ZEND FRAMEWORK" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cakephp" label="CakePHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="codeigniter" label="CodeIgniter" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="symfony" label="Symfony" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zendframework" label="ZEND FRAMEWORK" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>普段PHPでプログラムを書いていますが、いろいろなPHPのソースを見ていると・・・。</div><div><br /></div><div>人によって条件文の中括弧の位置が異なっています。</div> ]]>
        <![CDATA[<div>(その１）</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if($str === "a"){<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("a");<br /><br />} elseif($str === "b") {<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("b");<br /><br />} else {<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("other");<br />}</blockquote><div><br /></div><div>(その２）</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if($str === "a")<br />{<br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("a");<br />}<br />elseif($str === "b")<br />{<br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("b");<br />}<br />else<br />{<br /><span class="Apple-tab-span" style="white-space:pre">	</span>echo("other");<br />}</blockquote><div><br /></div><div>（その３）</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if($str === "a"){<br /><br />echo("a");<br /><br />}<br />elseif($str === "b"){<br /><br />echo("b");<br /><br />}<br />else{<br /><br />echo("other");<br /><br />}</blockquote><div><br /></div><div>if文を書くとき中括弧をどの位置に書くのかは人それぞれです。</div><div><br /></div><div>ただ、大人数で開発をすることになった場合は、必ずコーディング規約をいうも</div><div>のが必要になってきます。</div><div><br /></div><div>1人1人自由に中括弧の位置を決めると保守が大変です。</div><div><br /></div><div>PHPのフレームワークのコーディング規約はどうなっているのだろうか。</div><div><br /></div><div>今日は最近主に使われているPHPフレームワークのコーディング規約を集めてみ</div><div>ました。</div><div><br /></div><div>まずは、ZEND FRAMEWORKです。</div><div><br /></div><div>★ZEND　FRAMEWORK</div><div><a href="http://framework.zend.com/manual/ja/coding-standard.html">http://framework.zend.com/manual/ja/coding-standard.html</a></div><div><br /></div><div>if文はその１のパターンでした。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if ($a != 2) {<br />&nbsp;&nbsp; $a = 2;<br />} else {<br />&nbsp;&nbsp; $a = 7;<br />}</blockquote><div><br /></div><div>さらに驚いたのが次のパターン。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if (($a == $b)<br />&nbsp;&nbsp; &amp;&amp; ($b == $c)<br />&nbsp;&nbsp; || (Foo::CONST == $d)<br />) {<br />&nbsp;&nbsp; $a = $d;<br />}</blockquote><div><br /></div><div>if文の内容が長くなった時の書き方です。</div><div><br /></div><div>私の場合</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">if (($a == $b) &amp;&amp; ($b == $c) || (Foo::CONST == $d)) {<br />&nbsp;&nbsp; $a = $d;<br />}</blockquote><div><br /></div><div>という感じでよく書いているのですが、ZENDフレームワークのコーディング規約</div><div>によると、複数行にしたほうが後から条件句を追加したり削除したりしたときに</div><div>問題が起こりにくくなるからだそうです。</div><div><br /></div><div>次はCakePHPです。</div><div><br /></div><div><br /></div><div>★CakePHP</div><div><a href="https://trac.cakephp.org/wiki/Developement/CodingStandards">https://trac.cakephp.org/wiki/Developement/CodingStandards</a></div><div><br /></div><div>最近まで見ることができたのですが、見られなくなってしまいました。。。</div><div><br /></div><div>ということで・・・こちらですね。</div><div><a href="http://book.cakephp.org/ja/view/509/Coding-Standards">http://book.cakephp.org/ja/view/509/Coding-Standards</a></div><div><br /></div><div>CakePHPは（その１）のパターンです。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br />if ((expr_1) || (expr_2)) {<br />// action_1;<br />} elseif (!(expr_3) &amp;&amp; (expr_4)) {<br />// action_2;<br />} else {<br />// default_action;<br />}<br />?&gt;</blockquote><div><br /></div><div><br /></div><div>次はSymfonyです。</div><div><br /></div><div>★Symfony</div><div><a href="http://code.google.com/p/symfony-doc-ja/wiki/CodingStandards">http://code.google.com/p/symfony-doc-ja/wiki/CodingStandards</a></div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">function fooFunction()<br />{<br />&nbsp;if (condition2 || condition3)<br />&nbsp;{<br />&nbsp;&nbsp; statement1;<br />&nbsp;&nbsp; statement2;<br /><br />&nbsp;&nbsp; return 1;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;&nbsp; defaultaction;<br />&nbsp;}<br /><br />&nbsp;return null;<br />}</blockquote><div><br /></div><div>symfonyはその２パターンです。</div><div><br /></div><div>最後にCodeIgniterです。</div><div><br /></div><div>★CodeIgniter</div><div><a href="http://codeigniter.jp/user_guide_ja/general/styleguide.html">http://codeigniter.jp/user_guide_ja/general/styleguide.html</a></div><div><br /></div><div>1.6まではコーディングルールはありませんでした。</div><div>1.7になって初登場です。</div><div><br /></div><div>CodeIgniterその２パターンです。</div><div><br /></div><div>PHPはフレームワークのコーディング規約に合わせて、その１またはその２パ</div><div>ターンでプログラムを書いていくといいようです。</div><div><br /></div><div>その他、function名の命名規則では、Zend,Cake,Symfonyが大文字と小文字を併</div><div>用する形に対して、CodeIgniterだけは小文字とアンダースコアの組み合わせに</div><div>なっていたり・・・。</div><div><br /></div><div>さらにCodeIgniterのコーディングルールには、こんな記述も・・・</div><div><br /></div><div>|| はダメでOR</div><div>ANDはダメで&amp;&amp;</div><div><br /></div><div>確かにわかりやすいですが、個人的にはORとANDか||と&amp;&amp;で統一したほうがと思</div><div>うものもあるにはあります。</div><div><br /></div><div>PHPフレームワークによって、コーディングルールもいろいろありますね。</div><div><br /></div><div>自分が書いたPHPのソースを改めて考え直すいい機会でした。</div><div><br /></div><div>おしま～い。</div>]]>
    </content>
</entry>

<entry>
    <title>【第５５回】絵文字の出力について(その２）</title>
    <link rel="alternate" type="text/html" href="http://blog.promob.jp/fri/2009/12/post-12.html" />
    <id>tag:blog.promob.jp,2009:/fri//1.285</id>

    <published>2009-12-04T11:10:12Z</published>
    <updated>2009-12-04T11:12:52Z</updated>

    <summary>今日は先週に続いて絵文字についてです。先週は各キャリアで絵文字を表示する方法をま...</summary>
    <author>
        <name>blogadmin</name>
        <uri>http://blog.promob.jp/mt/mt-cp.cgi?__mode=view&amp;blog_id=1&amp;id=1</uri>
    </author>
    
        <category term="モバイル" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="絵文字" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="au" label="AU" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="docomo" label="DoCoMo" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softbank" label="Softbank" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="モバイル" label="モバイル" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="絵文字" label="絵文字" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://blog.promob.jp/fri/">
        <![CDATA[<div>今日は先週に続いて絵文字についてです。</div><div><br /></div><div>先週は各キャリアで絵文字を表示する方法をまとめてみました。</div><div><br /></div><div>今週は絵文字をプログラムを使って表示する方法についてです。</div><div><br /></div><div>どのように絵文字を扱うか。コンテンツの内容やプロジェクトの規模、人員の構</div><div>成によっていろいろあります。</div> ]]>
        <![CDATA[<div>1.３キャリアそれぞれのHTMLテンプレートを用意して、それぞれのキャリアに応</div><div>じた絵文字を書く方法。</div><div><br /></div><div>2.キャリアごとに絵文字の配列を作り、キャリアに応じた絵文字を表示する方法</div><div><br /></div><div>3.iモード用の絵文字を書いたテンプレートを用意して、それをezweb、Softbank</div><div>用に変換して出力させる方法</div><div><br /></div><div>4.絵文字用にタグを作っておいて、タグから絵文字に変換して出力する方法。</div><div><br /></div><div>主に４つのパターンが考えられます。</div><div><br /></div><div>まずは、1の方法についてです。1は開発とデザイナーの役割がきちんと分かれて</div><div>いる場合に見られます。</div><div><br /></div><div>iモード、ezweb、Yahoo!ケータイのキャリアの判別部分は開発で作って、デザイ</div><div>ナーがHTMLの絵文字部分も含めて全部デザインとコーディングをします。</div><div><br /></div><div>絵文字はデザイナーが各キャリアの絵文字コードを調べて書いていきます。</div><div><br /></div><div>つまり先週のようなHTMLソースをひたすら書くパターンです。</div><div><br /></div><div>次に2の方法についてです。</div><div><br /></div><div>2の場合はコンテンツプログラマーという形でプログラムとHTMLコーディングを</div><div>両方担当しているパターンで見られます。</div><div><br /></div><div>まずは、PHPのほうでそれぞれのキャリアで絵文字用の配列を作り、テンプレー</div><div>ト部分では3キャリア共通の配列を呼び出します。</div><div><br /></div><div>次は3の方法についてです。すでに絵文字変換エンジンがある、または外部で絵</div><div>文字変換エンジンを使う場合です。規模の大きいモバイルサイトまたはデザイ</div><div>ナー以外に開発要員がいない場合に見られます。</div><div><br /></div><div>例えばHTMLの作成をiモード用のHTMLだけ書いてあとは、HTML&amp;絵文字変換エンジ</div><div>ンで、au、Softbank用のHTMLと絵文字を出力します。</div><div><br /></div><div>最後に4の方法です。絵文字対応の掲示板を作る場合、絵文字で入力した内容を</div><div>そのままメールする場合に必要になってきます。</div><div><br /></div><div>どちらがよいのかは、開発チームの状況、予算、サイトの規模、サイトの絵文字</div><div>利用頻度によって決まってきます。</div><div><br /></div><div>絵文字を表示するだけの場合は１または２のパターン、予算があれば３のパター</div><div>ン、絵文字掲示板に対応する場合は４のパターンになってきます。</div><div><br /></div><div>１と２の場合は、簡単に実装が可能です。今日は簡単な１と２の方法でプログラ</div><div>ムを作ってみます。３、４の場合はかなり複雑な処理になってきます。変換方法</div><div>もいろいろあるため、次回以降に紹介したいと思います。</div><div><br /></div><div>まずは１の方法です。</div><div><br /></div><div>キャリア判別をして、それぞれのテンプレートを作ります。</div><div><br /></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?<br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * DoCoMo端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> *<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_docomo()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^DoCoMo", $agent) &amp;&amp; !eregi( "ISIM", $agent ))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * au端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> *<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_au()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(strpos($agent,"KDDI-") !== FALSE || strpos($agent,"UP.Browser/")<br />!== FALSE)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * Softbank端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_softbank()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// キャリアによって表示するHTMLファイルを表示する<br /><span class="Apple-tab-span" style="white-space:pre">	</span>if( is_docomo() ){<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>$view = "emoji_i.html";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>elseif( is_au() )<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$view = "emoji_e.html";<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>} elseif( is_softbank() )<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$view = "emoji_s.html";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>include($view);<br /><br />?&gt;</blockquote><div><br /></div><div>それぞれのhtml部分は先週書いたようなhtmlソースになります。</div><div><br /></div><div>絵文字もHTMLの中に書く形です。</div><div><br /></div><div>ファイル数が多くなりますが、キャリアによってデザインが崩れる危険性がほと</div><div>んどないので、デザイナーさんはデザインに集中しやすいというメリットがあり</div><div>ます。</div><div><br /></div><div>次は２の方法です。</div><div><br /></div><div>(emoji.php)</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">&lt;?php<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * DoCoMo端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> *<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_docomo()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^DoCoMo", $agent) &amp;&amp; !eregi( "ISIM", $agent ))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * au端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> *<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_au()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><span class="Apple-tab-span" style="white-space:pre">		</span><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(strpos($agent,"KDDI-") !== FALSE || strpos($agent,"UP.Browser/")<br />!== FALSE)<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>/**<br /><span class="Apple-tab-span" style="white-space:pre">	</span> * Softbank端末の確認<br /><span class="Apple-tab-span" style="white-space:pre">	</span> */<br /><span class="Apple-tab-span" style="white-space:pre">	</span><br /><span class="Apple-tab-span" style="white-space:pre">	</span>function is_softbank()<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>// ユーザーエージェントの取得<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$agent = $_SERVER['HTTP_USER_AGENT'];<br /><br /><span class="Apple-tab-span" style="white-space:pre">		</span>// キャリアの判別<br /><span class="Apple-tab-span" style="white-space:pre">		</span>if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent))<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return TRUE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">		</span>else<br /><span class="Apple-tab-span" style="white-space:pre">		</span>{<br /><span class="Apple-tab-span" style="white-space:pre">			</span>return FALSE;<br /><span class="Apple-tab-span" style="white-space:pre">		</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>// 絵文字の取得<br /><span class="Apple-tab-span" style="white-space:pre">	</span>if(is_docomo())<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["sun"] = "&amp;#xE63E;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["cloudy"] = "&amp;#xE63F;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["rain"] = "&amp;#xE640;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["snow"] = "&amp;#xE641;";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>elseif(is_au())<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["sun"] = "&amp;#xE488;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["cloudy"] = "&amp;#xE48D;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["rain"] = "&amp;#xE48C;";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["snow"] = "&amp;#xE485;";<br /><br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br /><span class="Apple-tab-span" style="white-space:pre">	</span>elseif(is_softbank())<br /><span class="Apple-tab-span" style="white-space:pre">	</span>{<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["sun"] = "\x1B\$Gj\x0F";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["cloudy"] = "\x1B\$Gi\x0F";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["rain"] = "\x1B\$Gk\x0F";<br /><span class="Apple-tab-span" style="white-space:pre">		</span>$emoji["snow"] = "\x1B\$Gh\x0F";<br /><span class="Apple-tab-span" style="white-space:pre">	</span>}<br />?&gt;<br /><br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"<br />"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"<br />dir="ltr"&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /&gt;<br />&lt;title&gt;絵文字テスト&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;?= $emoji["sun"]; ?&gt;&lt;br /&gt;<br />&lt;?= $emoji["cloudy"] ?&gt;&lt;br /&gt;<br />&lt;?= $emoji["rain"] ?&gt;&lt;br /&gt;<br />&lt;?= $emoji["snow"] ?&gt;&lt;br /&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</blockquote><div><br /></div><div><br /></div><div>絵文字を４つだけにして、とても簡単なサンプルを作ってみました。</div><div><br /></div><div>簡単に絵文字を使って表示してみたい場合は、1または2の方法で十分に事足りる</div><div>と思います。</div><div><br /></div><div>絵文字の変換については、また次回以降に書きたいと思います。</div><div><br /></div><div>おしま～い。</div>]]>
    </content>
</entry>

</feed>
