携帯サイト絵文字入りのPHPフォームの使い方と問題解決方法を教えてください

このQ&Aのポイント
  • 携帯サイト絵文字入りのPHPフォームを利用している際に発生する問題について質問です。
  • 絵文字変換スクリプトとPHPフォームのテンプレートを使用していますが、絵文字が表示されない問題が発生しています。
  • 問題の解決方法や、必要な手順について教えていただけると助かります。
回答を見る
  • ベストアンサー

携帯サイト絵文字入りのPHPフォーム

いつもお世話になっています。 携帯サイト制作をしており、こちら→http://www.dspt.net/tools/emoji/で配布されている絵文字変換スプリクトを利用させていただいています。 さらにこちら→http://magical-form.com/ で配布されているPHPフォームも使用させていただいています。 PHPフォームはhtmlのテンプレートを読み込ませるものなので、フォームのURLはform.phpとなり、そこにアクセスするとテンプレートtemp.htmlが表示されます。 そこでtemp.htmlに絵文字スクリプトのSSIを入れたのですが、form.phpにアクセスしても表示されません。 しかしtemp.htmlにアクセスすると絵文字が表示されているのです。 form.phpにも何か手を加えなければいけないのでしょうか? phpもSSIも初めてで配布先のマニュアルに従っているだけの状態です。 どうかお知恵をお貸し下さい。 よろしくお願いします。

noname#127702
noname#127702
  • PHP
  • 回答数3
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

申し訳ございません。 絵文字変換スクリプトを利用しないで、docomo/au/softbankのどれかの絵文字を使ったWebサイトを作成したことがある というのが前提で話してましたが、今回絵文字を扱うのは初めてでしたか? もし、携帯電話向けのWebサイト構築を行ったことがないなら http://34567.jpn.org/study1/emoji/index.html こちらのサイトを参考に絵文字を挿入してみてください。 今回設置したMobilePictogramConverter(以下MPC)の設定はimode絵文字のWebコード記述方法なので 取り急ぎ、適当な場所に以下のように入力して下さい。 「」 docomoの携帯電話で見ると、晴れマーク、曇りマーク、雨マークの順にならびます。 MPCが自動的に変換をかけてくれるのでauの携帯電話でも同様に表示されます。 まず、一度お試しください。 その上で下記が詳細な回答です。 >これはMobilePictogramConverterを使ってhtmlのテンプレートで絵文字を表示させる方法ですか? >それともMobilePictogramConverterを使うということはテンプレート自体をphpにしてしまうということなのでしょうか? 【ご回答】 どちらとも若干違います。 質問者さんが編集したHTMLファイルをWebアプリケーションとして動かすようにmagical-formが パース(テンプレートを解析し、正しく出力する処理)し、ブラウザに出力する直前に 『アクセスしてきたブラウザ(imodeブラウザやPCのIE、Firefoxなど)によって、 絵文字の出力を変換するという前処理』 を行うよう指定しました。 つまりフィルターを一枚かませる、と。 例えば、 最初に記述したものをMPCを使わず表示させると docomoの携帯電話では正しく表示しますが、au/softbankの携帯電話では正しく表示しません。 (一応表示しますが絵文字によって表示がおかしくなったりする) そこでMPCをかませてやれば、アクセスしてきたブラウザを見て、振り分けを行います。 (振り分ける=au/softbankで正しく表示できるバイナリコードに書き換える) 今回設定したやり方は「imode絵文字をWebコードで」記述する場合の設定なので、 絵文字を記述する方法がもし確定して、ソレがimode絵文字のWebコード表記以外の方法で MPCの設定方法が不明であれば、具体的に記述方法を教えていただければ 再度記述するべきコードを記載致します。

noname#127702
質問者

お礼

hogehoge78様、遅くまで本当にありがとうございます。 できました!できましたー!!きれいにお天気が表示されてます。 本当にありがとうございます。 >今回絵文字を扱うのは初めてでしたか? はい、初めてなんです。そもそも携帯サイト自体が初めてで右も左も分からない感じなのです。自分の状況説明が不足しており申し訳ありませんでした。なのにhogehoge78様が謝ったりしないで下さい。 ご説明いただいてようやく理解できました。 本当にありがとうございます。 やっとこれで家に帰れます…。 朝から晩までお付き合いいただいてしまい、申し訳ありませんでした。 こんなに助けていただいたのに、どうにもお礼ができなくて心苦しいです。何でもしたい気分です。 教えて下さったことを糧に精進します。ほんとうに、ありがとうございました!

その他の回答 (2)

回答No.2

ご質問の件、分かりました。 【エラーの件】 アップしていただきました、mpcフォルダ内のCarrierフォルダ、 この中の「ezweb.php」「softbank.php」「foma.php」これらのファイルを開いていただきまして、 先頭にある、 ------------------------------- require_once 'common.php'; ------------------------------- とある部分を、全て ------------------------------- require_once dirname(__FILE__).'/common.php'; ------------------------------- に修正し、修正したものを再度上書きでアップロードしてください。 これでエラーが解消されます。 この現象は、質問者さん、または質問者さんが利用されているアプリケーションが、「common.php」と同名のファイル名で、include_pathを指定しているからです。 include_pathに指定したファイルは、require/include/require_once/include_onceなどのファイル読み出し命令でフォルダ名まで指定しないでファイル名だけで呼び出せるようにすることが出来る為、優先順位が高いほうを読んでしまったので、エラーが出ました。 直、本現象は、該当ライブラリのブログページのコメント欄に他のユーザが情報を上げていたものです。(先人に感謝) 【imgフォルダの画像に関して】 MobilePictogramConverterは、携帯電話及びそれ以外のPCなど、全てで絵文字表示が行えるようにするためのライブラリになります。 その為、PCで表示した場合に、絵文字を出力する際、画像にして出力するようになってます。 これは、例えば掲示板(BBS)アプリケーションを作成した場合に、色々な端末から書き込みが行われても、全ての端末で、それぞれの絵文字を表示できるようにしたい場合に有用です。 【注意事項】 MobilePictogramConverterは、無償で利用できますが、サイト上の「ライセンス」部分と「注意事項」部分は目を通すようにして下さい。 以上です。

noname#127702
質問者

お礼

hogehoge78様、度々ありがとうございます。 何度も申し訳ないのですがどうしても分からないのでまたお尋ねしても良いですか? おかげさまで先に出ていたエラーは教えていただいた内容にて解決しました。お調べいただいてしまい、恐縮です。 根本的な質問に戻るのですが、hogehoge78様が今回教えて下さったのは、magic-formのテンプレート中に絵文字を表示させる方法ですよね? これはMobilePictogramConverterを使ってhtmlのテンプレートで絵文字を表示させる方法ですか? それともMobilePictogramConverterを使うということはテンプレート自体をphpにしてしまうということなのでしょうか? 私にはどうしてもMobilePictogramConverterの使い方が分かりませんでした。開発者さまのブログなどを拝見するとphpを用意するようですが、それがmagic-formで使用するテンプレートになるのでしょうか? 物分りが悪く申し訳ありません。何度もごめんなさい。 ※「ライセンス」「注意事項」拝見しております。

回答No.1

SSIは通常、PHPファイル上で使うことが出来ないようです。 Googleアタリで、「SSI PHP」を検索してみると悩ましい人がたくさん居ました。 さらに今回の場合ですとSSIの代わりにHTML中にPHPコードを埋め込もうと思っても、magical-formの仕様上、上手く行きません。 解決策としては、MobilePictogramConverterという別の絵文字変換ライブラリを利用した上で、magical-formを修正するしかないようです。 コード自体の改変は、数行程度に収まりましたので、お伝えいたします。 【1】MobilePictogramConverterをダウンロード http://php-develop.org/MobilePictogramConverter/ こちらからダウンロード。 【2】設置 ダウンロードしたZIPファイルを解凍し、フォルダを「mpc」と変更。 そのフォルダ内に入っているimgフォルダをmagial-formのindex.phpと同じフォルダにアップロードします。 その後、mpcフォルダもアップロード 【3】index.phpの改変 一番最後の行に ------------------------- echo $html_v; ------------------------- とあると思いますので、これを ------------------------- require_once './mpc/MobilePictogramConverter.php'; $mpc =& MobilePictogramConverter::factory($html_v, MPC_FROM_FOMA, MPC_FROM_CHARSET_SJIS, MPC_FROM_OPTION_WEB); $mpc->setImagePath('./img/'); echo $mpc->autoConvert(); ------------------------- とします。 これで絵文字を表示することが出来るようになると思います。 ただし、上記の記述方法ですと、imode絵文字のWEBコードで記述する場合の例です。auの絵文字で、softbankの絵文字で記述する場合は MPC_FROM_FOMAとなっている部分を、MPC_FROM_EZWEBなどと変更する必要があります。 また、バイナリコードでの記述を行う場合は、MPC_FROM_OPTION_WEBを、MPC_FROM_OPTION_RAWなどと変更する必要があります。 MobilePictogramConverterの詳しい、便利な使用方法は、余力がありましたら該当サイトにてお調べください。

noname#127702
質問者

お礼

hogehoge78様、ご回答ありがとうございます。 スクリプトを2つも使用し、かなり面倒だったにも関わらずとても丁寧に教えて下さり、本当にありがとうございます。 おかげさまでmagical-formのindex.htmlで絵文字が表示できました!!嬉しいです~。 ご報告として手順を書かせていただきます。 1)教えていただいた別の絵文字変換スプリクトをDLさせていただきました。 2)ディレクトリを └magic-form   └index.php//magic-formのindex.php(質問文中のform.php)   └mb.html//テンプレート(質問文中のtemp.html)   └img//mpcフォルダ内のimgフォルダ   └mpc//DLしたmpcフォルダ としました。 3)テンプレートのmb.htmlに<img src="img/i/63647.gif" alt=""~>として絵文字を入れました。 4)これでアップロード だけでできたのです。 教えていただいたようにmagic-form中のindex.phpを変更したら Warning: require_once(./jcode/jcode.php) [function.require-once]: failed to open stream: No such file or directory in /usr/local/lib/php/common.php on line 42 Fatal error: require_once() [function.require]: Failed opening required './jcode/jcode.php' (include_path='.:/usr/local/lib/php') in /usr/local/lib/php/common.php on line 42 というエラーになってしまいました。そこでindex.phpに何も手を加えずに(echo $html_v;のまま)単に上記ディレクトリでアップしたら表示されました。 PCと3キャリアともで表示が確認できたのですが、おかしいのでしょうか? 一応もう少し質問締め切らずにおきますのでもし何かあったらコメントいただけますか? でも、とりあえず解決したと思うのでお忙しかったらご無理なさらないで下さい。2~3日空けておいてお返事なければこのまま締め切らせていただきます。 本当にありがとうございました!

noname#127702
質問者

補足

hogehoge78様、度々すみません。 全然解決してませんでした…。お恥ずかしい限りです。確かに絵文字は表示されてるんですが、img~で指定しているのでauでもsoftbankでもdocomoの絵文字になっています。一つしか絵文字を表示させずに確認していたので全然気づきませんでした。よく考えれば当たり前です。 ということはつまりmpcの使い方そのものを間違っていますよね。mpc配布先のブログを読んでみたのですがさっぱりです。 こんな私に救いの手を差し伸べていただけませんか?…すみません!

関連するQ&A

  • 携帯サイトを作っています。

    携帯サイトを作っています。 http://www.dspt.net/tools/emoji/ 上記のサイトにある3キャリア対応の絵文字変換スプリクトを使っており、実際に絵文字の表示葉問題なくできます。 しかし、絵文字を表示すると、 w3c mobileOK checker <http://validator.w3.org/mobile/> において、携帯サイトとして認識される度合いが60%以上も下がってしまいます。 色々原因をさぐってみたところ、上記したスプリクトを作動させるために、 .htaccessファイルに AddHandler server-parsed html と記述してアップロードしているのですが、これが原因だということがわかりました。 この記述をしない、または他の記述で代替する、ssiをphpに書き換えるなどの方法は無いでしょうか? phpなど全くの無知で、絵文字の表示も上記サイトのマニュアルどおりに設置してようやく出来たという状況です。 何卒よいお知恵をいただきますようよろしくお願いします。

    • ベストアンサー
    • PHP
  • 携帯3キャリア対応絵文字のPHPが上手く作動しません。

    初めまして。 携帯サイトに3キャリア対応の絵文字を使いたく、http://www.dspt.net/tools/emoji/このサイトのPHPを使用しましたが 絵文字を挿入した部分に[an error occurred while processing this directive]というエラーが表示され、正常に絵文字が反映されません。 サーバーはPHP4.0、SSIに対応しているサーバーです(CORESERVER)。 プログラム設置は以下の通りにしました。 public_html / ●●.com / index.html | +-- php(←このphpフォルダはpublic_htmlの下の階層でいいのでしょうか?) | +-- emoji / trans.php emojih.csv emojix.csv | +-- images / .htaccessはindex.htmlと同じ場所に入れ、 AddType application/xhtml+xml .htm .html AddHandler server-parsed html と記載しています。 絵文字記載タグの相対パスは"/php/emoji/trans.php?emoji=絵文字番号" としています(デフォルトのまま)。 Mobile Site Coding&Designという本でも調べたのですが、こちらも同じPHPを使用(説明文もほぼ同じでした)しているのですが なぜか相対パスは"/php/emoji/trans.php?emoji=絵文字番号"となっていました。 また、AddHandler server-parsed htmlの記述の.htaccessもPHPフォルダの中に入れるとありました。 色々なパターンを試しましたがどれも上手くいかず、結局どれが正しいのか分からなくなってしまいました。 お詳しい方がいましたらご教授いただけましたら幸いです。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 携帯で3キャリア対応の絵文字を表示する方法

    http://www.dspt.net/tools/emoji/ ↑の絵文字自動変換スプリクトを使って携帯サイトを作っています。 サイトの解説どおりにやって、ドコモでは問題なく絵文字が表示されました。 しかし、auでは一部の絵文字が「?」と表示されてしまいます。 そしてソフトバンクでは 「お客様の端末からはご利用になれません。(WJ46042E)」 というエラーメッセージが出てしまいます。 phpなどは初めてで原因が全くわかりません。 ネット「WJ46042E」のエラーについて調べてもあまり情報がありません。 何とか1ソースで3キャリア対応の携帯サイトを作りたいのですが、ヒントだけでも教えていただけれたらうれしいです。 もしくは、もっと簡単な変換スプリクトなどがありましたら教えていただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ドコモの絵文字だけが・・カラーで表示しない

    どうしてもドコモだけが、絵文字を呼び出した時に、黒色で表示され、本来のドコモの色付の絵文字になりません。 なお、構築方法は SSIをHTMLで表示させてHTMLファイルはSJISでコーディングしています。絵文字の呼び出しには <!--#include virtual="/php/trans.php?emoji=絵文字番号"--> バイナリデータをPHPで扱う場合には特殊な処理はしないとダメでしょうか。アドバイス願います。 サンプルコードは http://www.dspt.net/data/emoji/sample.txt ダータファイル http://www.dspt.net/data/emoji/emoji.csv

    • 締切済み
    • PHP
  • HTMLでフォームを作ってPHPで受け取ることができません。

    プログラミング超初心者です。本でPHPを勉強中です。HTMLでフォームを作成しPHPでフォームに入力された内容を受け取るというところでつまづいてます。本に紹介されているサンプルスクリプトをローカルホストでブラウザで試しているのですがうまくいきません。 フォーム内に入力しSUBMITのボタンを押してもPHPの方のページが表示されません。2つのファイル名はform.html と form.php 名のですが、ブラウザのアドレスバーが http://localhost/form.html から http://localhost/form.html/form.php に替わりHTMLが再表示されるだけです。 環境は os windows XP SP1 ブラウザ IE6 php 4.2.2 です。 スプリクト載せると800字超えてしまいますので回答に載せます。 お解りになる方いらっしゃいましたらよろしくお願いいたします。

    • 締切済み
    • PHP
  • 現在、PHPにて携帯サイトを作成しています。

    現在、PHPにて携帯サイトを作成しています。 ほぼ完成しているのですが、絵文字処理にてつまづいています。 3キャリアに対しそれぞれの絵文字コードを割り振るスクリプト(下記URL参照)を設置しました。 http://dspt.blog59.fc2.com/blog-entry-57.html PHPファイルの、絵文字を表示させたい部分に <?php emoji('1');?> といった型で 独自のコードを挿入するだけで、各キャリア対応の絵文字が表示されるスクリプトです。 設置も動作テストも正常に出来ました。 ですが、私の場合、PHPファイルの「print <<<EOD  ・・・・ EOD;」内に、 絵文字を表示させたいのです・ そこに、<?php emoji('1');?>といったソースを表示させると、ソースがそのまま表示されてしまいます。 何か対処法はありませんでしょうか? お分かりになる方、アドバイス頂けるとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯サイトでの絵文字対応BBSの作成で絵文字の変換に困っています。

    PHPとMySQLを使って絵文字対応の携帯サイト用BBSを構築しています。データベースに登録した絵文字付のコメントを取得すると、絵文字部分がうまく表示されずに困っています。 現在、携帯サイト用の絵文字対応BBSを作成しています。フォームから絵文字付のコメントを入力して、それをDBに登録、または登録されている絵文字付コメントをDBから取得するというものです。 DBに登録する際に入力した絵文字を「<emoji=1,,,>」のような形に変換してeucJP-winでDBに登録します。 出力する際には「<emoji=1,,>」を対応する絵文字に変換(事前に変換表を作成しました。)して画面に出力します。 その際、直接ソースに記述した<emoji=1,,>は対応する絵文字に変換されて表示されるのですが、DBから取得した絵文字付コメント(例:こんにちは<emoji=1,,>)は対応する絵文字に変換されない状態になっており困っています。 ob_start();                     :                     : <?php $mysql=new MySQL; $sql="SELECT no,title,imp FROM s001osirase ORDER BY no DESC LIMIT 0,3"; $mysql->query($sql); while($row=$mysql->fetch()){ $no=$row['no']; $title=$row['title']; $title=mb_convert_encoding($title,'SJIS-win',mb_internal_encoding()); $imp=$row['imp']; if($imp=="yimp"){ echo '<div style="color:#FF0000;font-size:xx-small;">[重要</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; }else{ echo '<div style="color:#FF0000;font-size:xx-small;">[普通]</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; } } ?>                 : //内部文字コード(eucJP-win)をSJIS-winに変換する関数 outpue_encode(); //<emoji=1,,,>部分を絵文字に変換してバッファを出力する関数 emoji_output(); emoji_output関数は以下のとおりです。 function emoji_output(){ $output_str=ob_get_contents(); ob_end_clean(); header('Content-Type: application/xhtml+xml;'); $output_str=preg_replace_callback('/<emoji=([0-9,]+)>/','emoji_output_changea',$output_str); echo $output_str; } コールバック関数emoji_output_changeaで$output_str内の<emoji=1,,,>を絵文字に変換しています。 ob_start()を使ってバッファにためて、emoji_outputで<emoji=1,,>を一括でpreg_replace_call関数を使って絵文字に変換して出力しています。この関数は問題なく動いていると思います。 DBから取得した記事が格納された変数$titleのみ変換されていないように思います。 考えられる原因がお分かりの方、いらっしゃいましたらよろしくお願いします。 わかりづらい文章で申し訳ありません。

    • ベストアンサー
    • PHP
  • PHPのソース内でのVodafone絵文字の扱い方

    PHPで、DoCoMo,Vodafone,auの3機種の絵文字を出し分けるファンクションを書いていました。 function emoji($imode,$vodafone,$ez){ $ua = $_SERVER["HTTP_USER_AGENT"]; if(ereg("DoCoMo",$ua)){ print $imode; }else if(ereg("J-PHONE",$ua)){ print $vodafone; }else if(ereg("Vodafone",$ua)){ print $vodafone; }else if(ereg("UP.Browser",$ua)){ print "<IMG LOCALSRC=".$ez." />"; } } というファンクションを定義し、 <?php emoji(ドコモの絵文字,Vodafoneの絵文字,EZの絵文字番号); ?> と書けば、アクセスしたキャリアによって絵文字を出し分けるしくみです。 しかし、Vodafoneの絵文字のコードが特殊なため、エラーになってしまいます。 $記号が含まれているせいかな?と思って $の前に\を入れてみたりもしましたが、ダメでした。 何かよい回避方法はありますでしょうか?

    • ベストアンサー
    • PHP
  • 絵文字変換スクリプトに使用方法について

    現在、携帯サイトを作成中です。 1ソースで3キャリア対応のサイトを目指しているのですが、 絵文字の互換性のなさにつまずいております。 そこで、絵文字変換スクリプトを使い、絵文字を3キャリアで表示 可能にしようと思ったのですが、使用方法が分かりません。 絵文字変換スクリプトを使用する際、やったことは (1)<http://www.dspt.net/tools/emoji/>を参考にしています。 (2)<http://fs-server.net/index.html>⇒こちらのサーバーを使用しています。 (3)絵文字変換スクリプトをDL (4)画像以外はアスキーモードでサーバーにUL (5)サーバーのTOPディレクトリに「.htaccess」ファイルを作成。 記述内容は、1行目(AddHandler server-parsed html ) 2行目(AddType application/xhtml+xml .html )です。 ローカルでテキスト編集し、サーバー上で「.htaccess」ファイル に変換しました。 (6)絵文字を表示させたいhtmlファイルに<!--#include virtual="/php/emoji/trans.php?emoji=1"-->と記述。 以上のことをした時、絵文字が表示されませんでした。 代わりに、「an error occurred while processing this directive」 と表示されました。 私的にphpの仕組みがよく分かっておらず、原因は.htaccessファイルの 置き方が悪いのかと思っています。 お分かりになる方がいらっしゃったら、絵文字が表記されない原因を 教えて頂ければと思います。 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯からフォーム投稿した絵文字の表示

    PHPとMySQLで携帯用の掲示板を作成しているのですが、フォームから絵文字を投稿すると?マークになってしまい表示されません。 どのような問題が考えられるでしょうか?PHPファイルはShift_JISで、MySQL(3.23.58)はeucです。文字コードの問題なのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう