こんばんわ(^_^ゞ
お世話になります。
前回は絵文字について色々教えてくださりありがとうございましたO(≧∇≦)O !!
なんとかできたみたいです!!でもあと一歩なんです。
[:F***]みたいなコードありますよねっ!!
抽出も格納も無事にできたんですけど…。
AUとDOCOMOで見てたんですけど…。DOCOMOの携帯から入力している絵文字はAUの携帯でも見れるんですけど…AUの携帯から入力しているAUの絵文字はDOCOMOの携帯で見れないんです。
同じハート絵文字です。格納も同じコード [:F***] になっていて抽出も同じコードです。
なんで同じ絵文字の同じコード なのにAUの携帯から絵文字を入力するとDOCOMOの携帯では見れないのですか。
不思議です(._.)
ちなみにphpファイルです。抽出方法に誤りあるからですか…又はそういうものですか。 ちなみに、キャリア別に絵文字をインクルードしてたりはしていません。
No.1ベストアンサー
- 回答日時:
すみません、作成されているものの全体像が見えない為に、何をして何を確認して、どうされたいのかが、良くわかりませんでした。
・作成しているアプリケーション
・絵文字の取得の解決の為に利用されたライブラリや記述方法
・前回の関連する自身の質問のURLの添付
・又は参考にされたサイトのURLなどを添付
上記を記載していただけませんか?
この回答への補足
こんんちわ!
格納方法はこちらです。
$a = mb_convert_encoding($a,"EUC-JP","shift-JIS");
$a = preg_replace('/\[d:(F[89][0-F]{2})\]/e', "pack('H*', $1)", $a);
抽出方法はこちらです。
$a = mb_convert_encoding($banner_i, mb_internal_encoding());
$a = preg_replace('/BAD\+(F[346789][0-F]{2})/', '[d:$1]', $a);
どちらも抽出・格納共にAUもドコモも同じ形式です!
No.4
- 回答日時:
ちょっと処理を整理しますね。
HTMLはSJISでエンコードされてますね?
まず、フォームのtextareaとかから、絵文字の入ったSJISの文字列がPOSTされます。
そのPOSTされたものをPHPスクリプトはEUCでエンコードされてるので、SJIS⇒EUCに変換したいんですよね。
ただ、文字列の中に絵文字が含まれていて、絵文字は各キャリアが勝手に文字コードに埋めたバイナリ値なので、
mb_convert_encodingをそのまま叩いたのでは、正しく変換できません。
そこで、
mb_substitute_character("long");
と指定してやることで、EUCの文字コードに適合しない文字(つまり絵文字)を違う変換方式にしてやります。
そうすると、例えば、SJISの太陽だと、"\xF8\x9F"というバイナリ値になるのが、"BAD+F89F"という文字列に変換されます。
そこで、iinnffooさんが使った正規表現置換、
preg_replace('/BAD\+(F[346789][0-F]{2})/', '[d:$1]', $a);
これが登場します。
データベースに格納する前に、"BAD+F89F"というものを、"[d:F8F9]"という特殊な形に変換してやってます。
これは恐らく、[d(ドコモの):F8F9(バイナリで\xF8\xF9であらわされる絵文字)]という意味なのでしょう。
変てこなバイナリをDBに挿入しないで、バイナリを文字列で表現してからDBに格納するという手法です。
で、DBから値を取得してHTMLに吐き出す際、[d:F8F9]というままでは絵文字で表示されないので
再度元に戻してやりたい。それが、
$a = mb_convert_encoding($a,"EUC-JP","shift-JIS");
$a = preg_replace('/\[d:(F[89][0-F]{2})\]/e', "pack('H*', $1)", $a);
この一連のプログラムですね。
ということで、[d:F8F9]をauやsoftbankで正しく表示したい場合は、docomoのF8F9はauのどのコードか、
softbankのどのコードか、というのを見つけてくる変換テーブルがやっぱり結局必要になってしまうわけです。
また、
preg_replace('/BAD\+(ここをauのアドレス範囲)/', '[a:$1]', $a);
preg_replace('/BAD\+(ここをsoftbankのアドレス範囲)/', '[s:$1]', $a);
などという別の正規表現も必要になってきますね。
相互変換は結構大変な作業です。
有り難う御座いますっ(*^-^*)
あれだったんですね・・・。
初めから間違っていたんですね!
教えられた通りに格納方法「バイナリを文字列で表現してからDBに格納する」に変えてみたいと思います。
抽出の場合も相互変換しなければダメなんですね。さらに変換テーブルも作らなければダメなんですね。。。基本的な流れが分かりました。
まずは格納方法からしてみたいと思います。
簡単には出来ないんですね(°o°)
大変勉強になりました。
ソフトバンクはよく分からないので絵文字は使わないようにします。
ありがとうございました!
No.3
- 回答日時:
HTMLで表示を確認しているというのを前提としてますが、大丈夫ですよね?
メールだったりすると、各キャリア間で互換しているので、au/docomo/softbankのいずれかの絵文字を使って送信すると、各キャリア間で同じ絵文字が表示されます。
それで表示がされないということだと、メールの送信書式に問題があるかもしれません。
HTMLで、という前提であれば、
PHPでHTMLを出力しているのであれば、
<?php
echo "\xF9\xF8"; //コレは歯を出して笑ってる絵文字のコード
?>
などと記述してやると、バイナリコードを表示してくれます。
太陽として抽出された[d:f908]が本当に太陽としてあっている文字なのであれば、
<?php
echo "\xF9\x08";
?>
として出力して、各携帯電話で確認してみてください。
この回答への補足
こんにちわ(o・・o)
ありがとうございます!!
バイナリコードにしないとダメなんですね。。。
メールじゃいです。phpのhtmlソースです。
ていうことはバイナリコードで格納と言う事って出来たら良いですよね(o^-')b
でも…[d:○○○]は太陽の絵文字
[d:○○○]は曇りの絵文字みたいに出力時に変換しなければいけないんですか。
例えばなんですけど絵文字と一緒に文字も格納されてます。文字の中から[d:○○○]を探しかつバイナリコードに変換させるんですか(^_^ゞ
度々ありがとうございました!!
勉強になりましたっ(^_^)/□☆□\(^_^)
No.2
- 回答日時:
格納方法とありますが、何から取得した何をどこに格納していて、
何から取得した何を何のために抽出しているのかが分かりません。
>[:F***]
これは何のコードですか?絵文字のコードではなさそうですが。
>preg_replace('/\[d:(F[89][0-F]{2})\]/e', "pack('H*', $1)", $a);
この正規表現で表現されるものはdocomoの絵文字のバイナリコードに対応したもので、auの絵文字に適合しない内容となっております。
au/docomo、似ている絵文字(太陽とか)でも、キャリアによって、バイナリ値は全部違いますので、
docomoから入力された絵文字を抽出する方法と
auから入力された絵文字を抽出する方法は違います。
さらに、docomoから抽出した絵文字は、変換テーブル(対応リスト)などを用いて、auのバイナリ値に変更をかける必要があります。
ありがとうございます(・ω・)
不思議なんですけど・・・格納したときにDBをみた時に同じコード[d:f908]
に格納されてます。
太陽の絵文字も同じコード=同じ抽出方法でもAu端末からは見れます。
でもドコモからみた場合は同じコードでもauの絵文字は見れなくなります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) Android携帯のキーボード入力で時間入力を簡単にしたい 1 2023/05/17 02:13
- docomo(ドコモ) dアカウントの携帯電話番号が登録できない。ワンタイムコードがSMSに届かない。 2 2023/07/09 23:07
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- その他(gooサービス) ブログ投稿時の絵文字使用について 2 2023/07/21 14:55
- スタンプ・絵文字・顔文字 LINEで文字の中に入っている絵文字(スタンプみたいな)ってどうやって出すのですか? 1 2022/07/17 18:00
- その他(動画サービス) u-nextの31日間無料体験に申し込むためのdアカウントの電話番号登録について 3 2022/08/27 00:29
- 片思い・告白 恋愛相談 4 2023/05/04 07:49
- その他(悩み相談・人生相談) 会社の同僚に携帯を見られたかもしれません。 見られたくない内容でした。 ただ、その時は一瞬で、 私は 1 2022/12/21 17:31
- その他(悩み相談・人生相談) 会社の同僚に携帯を見られたかもしれません。 見られたくない内容でした。 その時、私は椅子に座わり携帯 3 2022/12/21 18:05
- 出会い・合コン マッチングアプリで男性がよく使う絵文字について。 下記画像の絵文字をプロフィールやメッセージによく使 1 2022/04/03 01:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでPEAR::DBを使っているので...
-
phpでcookieがうまく保存されない
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
アンドロイドスマホでのphp ech...
-
Postgresの特定のカラムからス...
-
PHPのエラーの解消法について教...
-
PHP MySql ページング
-
ECCUBE4のページ管理でPHPを実...
-
PHPで画像の渡しが上手く行きま...
-
ログインした掲示板ですが、直...
-
ここで言う空文字の意味とは?
-
PHP でメールフォームを作成したい
-
MySQLの配置が変わったため、db...
-
phpのクラスメソッドの定義が長...
-
phpでクラスのメソッドで同名の...
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
なんでブラウザでPHPを動かすた...
-
PHP8を使うと、大量のWarningが...
-
ワードプレスサイト PHP8.0.25...
-
PHPSpreadsheetを使って関数を...
-
php 入力画面から確認表示画面...
-
PHPのエラーの解消法について教...
-
掲示板のセキュリティについて...
-
php 完了画面の送信メールのコ...
-
PHPのセッション有効期限について
-
掲示板を作成しておりアップロ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
重複を防ぐ記述について教えて...
-
php 確認表示画面で値をSESSION...
-
ファイルアップロードに関して...
-
メールフォームのタイトルが文...
-
フォームで戻った際に入力済み...
-
PHPで訪問回数を表示するカウン...
-
アップロード画像数でCSSを分け...
おすすめ情報