• ベストアンサー

Smartyで携帯絵文字を表示する方法

Smartyで作っている携帯用HPに携帯絵文字を表示したくて試行錯誤しているのですが、 絵文字ではなく、文字列が表示されてしまいます。 例えばPHPで print('') と書くと、ソフトバンクの3G携帯では、男の子の絵が表示されます。 でも、smartyで $_smarty->assign("emozi",''); と設定し、 {$emozi}とすると、絵文字ではなく、  と文字列が表示されてしまいます。 どのようにすればSmartyの{$emozi}に絵文字が表示されるのか アドバイスお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

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

default_modifiersあたりで、標準でエスケープするようにしてませんか。 その場合は、HTMLエンティティのようなものもすべてエスケープされてしまうと思います。 その場合は、 {$emozi|smarty:nodefaults} と記述することでエスケープされないようです。

yorkies
質問者

お礼

アドバイスいただきありがとうございます。 ご指摘の方法でも解決しないので、もう一度、じっくり確認したところ、原因がわかりました。 UTF-8で作成したファイルをSJISで表示するため、最後に、 $buffer = $smarty->fetch( 'test.tpl' ); echo mb_convert_encoding( $buffer, 'sjis-win', 'UTF-8' ); と、スマーティのテンプレートの文字コードを変更していたのが原因でした。 試しに、文字コードを変更せずに、そのまま、表示したら、 絵文字は表示されました。 どうもありがとうございました。

関連するQ&A

  • smartyについて

    phpからassignしテンプレートに表示するには問題ないのですがテンプレートでassignし 表示させたく単純に以下のようにしてみましたがエラーになってしまいます。 <{assign var="aaa"value="名前"}> <{$aaa}> ※デリミタ設定は『<{』と『}>』で指定してます エラー内容は以下の通りです。 Fatal error: Smarty error: [in テンプレートファイル line assignしている行]: syntax error: invalid attribute name: '=' (Smarty_Compiler.class.php, line 1550) in ~中略~\Smarty\Smarty.class.php on line 1093 なんとなくではありますが'='が原因のような事はわかるのですが解決できずにおります。 この場合どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • 私の携帯の絵文字にはないのに他の携帯から送られてくれば表示される絵文字?

    四角の中に数字が入ってるものなんですけど、 ドコモとソフトバンクでは普通にあります・・よね(?) 私の携帯ではその絵文字を打てないんですが、送られてくれば表示されます。 (ちなみに私が使ってるのはW51CA) もしかして同じauでも使える絵文字が違うんでしょうか? どーにかして送る方法などあれば教えてください。

  • smarty3で変数表示について

    smarty3 でエラーが発生しています。 現在自宅のサーバーでsmarty3を勉強しているのですが以下のエラーで困っています。 詳しい方ご教授お願いします。 環境 : CentOS 6.3 PHP 5.3.3 Smarty 3.1.13 読み込んでいるファイル test.php 1 <?php 2 ini_set('display_errors', 1); 3 ini_set('date.timezone','Asia/Tokyo'); 4 define('SMARTY_DIR', 'Smarty/libs/'); 5 require_once( SMARTY_DIR. 'Smarty.class.php'); 6 7 $smarty = new Smarty(); 8 9 $smarty->template_dir = '../templates/'; 10 $smarty->compile_dir = '../templates_c/'; 11 $smarty->config_dir = '../config/'; 12 $smarty->cache_dir = '../cache/'; 13 14 $msg = "テストを表示します"; 15 $smarty->assign('msg', $msg); 16 17 $smarty->display('test.tpl'); 18 19 20 ?> テンプレートファイル 1 <html> 2 {$msg} 3 </html> 表示されるエラー文 Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "../templates/test.tpl" on line 2 "{$msg}" unknown tag "private_print_expression"' in /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:665 Stack trace: #0 /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(451): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "pr...', 2) #1 /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2353): Smarty_Internal_TemplateCompilerBase->compileTag('private_print_e...', Array, Array) #2 /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r27() #3 /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(27) #4 /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_intern in /usr/local/lib/php/includes/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 665 テンプレートファイルの{$msg}を削除して動作させるとコンパイルされてはいるようです。 よろしくお願いします。

    • 締切済み
    • PHP
  • エムペなどのHPに絵文字が表示されなくなっちゃいました…

    どうも! 今HPやってるんですけど、 昔のケータイで(ボーダフォンV603SH)掲示板や日記などにはたくさん絵文字を載せれたんですけど ケータイ変えて今、ソフトバンクの911SHなんですけど、絵文字を載せると「??」みたいにクエスチョンマークで表示されてしまいます… なんで絵文字がこうゆう風に表示されるようになっちゃったんですかね… 詳しい方本当にお願いします!!

  • SmartyでのShift-JIS使用

    現在、携帯サイトの構築を行っています。 EUC-JPならば問題なく表示されるのですが携帯電話はShift-JISをサポート。 一応、EUC-JPも表示はされますがサポート外である事実は変わりません。 そこで、表示に関してはShift-JISで行いと考えています。 (全ての携帯がEUC-JPでも問題なく表示できる確証がない限り表示はShift-JISを考えています。) しかし、今度はSmartyがShift-JISがサポート外。 普通にShift-JISを使うと文字化けを起こしたりエラーが表示されます。 PHPもShift-JIS、SmartyのテンプレートもShift-JISにすれば とりあえずはPHPからの表示する文字に関してはShift-JIS表示できますが Smartyテンプレートに直接書いた文字は文字化けを起こします。 自分なりに調べて http://blog.livedoor.jp/alpha1280/archives/50225918.html http://www.knym.net/wiki/index.php?PHP%2FSmarty のサイトを見つけて記事内に書いてあるPHPを利用してみました。 Smarty_Extends.phpをSmarty.class.phpと同じフォルダに作成して テンプレートをShift-JISで作成、プレフィルタとポストフィルタのコメントを外して Smarty_Extendsを利用して表示するPHPを作成↓ <?php include_once('Smarty_Extends.php'); $smarty = new Smarty_Extends('templates','templates_c'); $smarty->assign("test", "Shift-JISによる表示だよ。必須"); $smarty->display("Enc_Shift-JIS.tpl"); ?> エラーは出なかったんですが従来通り文字化け、何度もテストしているんですが判りません。 SmartyでShift-JIS表示の経験がある方、上記の問題点や解決作の判る方。 お力を頂ければ幸いです、宜しくお願い致しますm(_ _)m

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

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

    • ベストアンサー
    • PHP
  • Smartyを使って、テーブルを表示

    Smartyを使って、列の数を指定したテーブルを表示させたいと考えています。配列から受け取った値を、4つずつの列で表示させようとしています。 PHPから、$movies という配列を受け取ったとして、現在、 <table border="1" cellpadding="1"> ({section name="group" loop=$movies}) <tr> ({section name="frower" loop=$movies max=4}) <td width="123"> <img src="({$movies[frower].image_filename_1})" alt="" border=0 width="160" height="120" /><br> </td> ({/section}) </tr> ({/section}) </table> と、試行錯誤の末書いてみたのですが、うまく動きません。 nameの部分をうまくカウントさせないといけないと思うのですが、どのようにしたらよいでしょうか。 よろしくお願いします!

    • ベストアンサー
    • PHP
  • 携帯の絵文字について

    私はソフトバンク911SHを使っています。友人はドコモのSH906Iを使っています。友人から絵文字のついたメールがきますが、ときどき[チェリー]や[カタツムリ]と文字で表示されています。明らかにチェリーやカタツムリは絵文字だ思いますが、この表示はドコモ同士だけの絵文字ですか?それとも私のほうで絵文字を見られるようにできますか? どうすれば絵文字が表示表示されますか? よろしくお願いします。 友人もどうしたら表示できるのか知りたいらしいのですが どういう風に説明したらいいでしょうか? 友人はパソコン用語や携帯用語が分かりません

  • 携帯絵文字について

    携帯サイトを作成しており各キャリアの絵文字コードを Unicode表記で以下のようにテキストファイルにまとめています。 番号,名前,DOCOMO,au,Softbank 1,晴れ,&#xE63E;,&#xE488;,&#xE04A; 2,曇り,&#xE63F;,&#xE48D;,&#xE04A; ・・・ 絵文字のベースはドコモにしようと以下のURLを参考に設定 しました。 http://www.nttdocomo.co.jp/service/imode/make/content/pictograph/basic/index.html auやSoftbankのサイトを参考にすればUnicode表記のコードが わかるのですがドコモの絵文字表をベースとしている事もあり それぞれの順番がバラバラで途方に暮れてしまいます。 どこかに見やすくまとまっているサイトがないものかと思い 探してみましたがみつかりませんでした。 Unicode表記で3社の絵文字とコードがわかればいいのですが そのようなサイトをご存知の方がおりましたら是非教えて下さい! 宜しくお願い致します。

  • Smartyのテンプレートにincludeしたファイルを表示したいので

    Smartyのテンプレートにincludeしたファイルを表示したいのですが、うまくいきません。 具体的には、意図しない数値が入ってしまいます。 どうすればよいのでしょうか? ■呼び出す側 require("../../libs/Smarty.class.php"); require_once('../../lib/set_include_path.php'); $header = include("header.php"); $smarty = new Smarty(); $smarty->assign("header",$header); $smarty->display("date.html"); ■テンプレート <body> {$header}<br>日付<br> ■表示例 include("header.php"); の内容が正常表示 1 日付 include("header.php"); の内容が正常表示された後、勝手に「1」と表示されるので、困ってます。表示されないようにするにはどうすればよいでしょうか。 var_dump($header);ってしたところ、int(1) ってなるので、この1が表示されているのかと思うのですが、なんで表示されるのか、表示されないようにするにはどうすればよいか、教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう