いつも感謝してますが、また質問してしまいました。
本当に情けないです。。。。
現在携帯サイトを構築しています。
PHP×携帯デベロッパーズバイブルって本の掲示板の一部分なんですが、以下の箇所(具体的には正規表現の箇所)でエラーがでます。
またこの掲示板のスクリプトなんですが、この本自体のサンプルコードはどこかに落ちてないのでしょうか?
できれば、それが一番早いんですが。。。。
/*
* 絵文字の入った入力文字列を内部絵文字の入った文字列に変換する(SoftBankの3GC)
*
* @param integer $data 入力された文字列
* @return string 内部絵文字に変換された文字列
*/
function emoji_text_input_softbank_utf8($data){
//入力文字が空の場合
if(empty($data)){
return $data;
}
$old_data=$data;
$new_data='';
while(1){
if(strlen($old_data)==0){
break;
}
$moji=mb_substr($old_data,0,1,'UTF-8');
$old_data=mb_substr($old_data,1,mb_strlen($old_data),'UTF-8');
//内部絵文字に変換する。
$output=preg_replace_callback('/\xEE([\x80\x81\x84\x85\x88\x89\x8C\x8D\x90\x91\x94][\x80-\xBF])/','emoji_input',$moji);
$new_data.=$output;
}
return $new_data;
}
No.2
- 回答日時:
No1のyyr446です。
emoji_input()が無ければ作るしかないですね。
ソフトバンクの絵文字は、x1Bとx0Fでエスケープされた、2バイトのx21~x7Aの文字列でもって、内部の絵文字を表示しているみたいです。
正規表現でマッチさせるパターンの文字列をキーとして対応する内部絵文字コードを値に持つ連想配列を予め準備しておき、関数emoji_input()で絵文字コードを返せばよいわけです。
function emoji_input($matches) {
$si = "\x1B";
$so = "\x1B";
$henkan = array("\xEE\x80\x80" => "\x21\x7A",
"\xEE\x80\x81" => "\x21\x7B",
"\xEE\x80\x82" => "\x21\x7C",
・・・・・・・
と対応させたい絵文字を247個設定する
);
return $si . $henkan[$matches[1]] . $so
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列同士の足し算のループ処理
-
doxygenを使用する環境について
-
mysqlと出力側PHPの文字コード...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
別ファイルの構造体の値を読み...
-
VBAでcsvファイルもシートもあ...
-
2次元配列から1次元配列へのデ...
-
Resource id #3 と表示されま...
-
クラスで使用する「参照渡し」...
-
FortranのOPEN文
-
CSVファイルの最終行のデー...
-
行数が30万件ほどあるCSVから、...
-
fgetc関数について
-
php 1桁になるまでの和 スマー...
-
$_SESSIONに二次元配列を使える...
-
Smartyの自作プラグインで配列...
-
スカラーのベクトル微分
-
配列をループでたくさん宣言し...
-
配列にある文字列を1つの変数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
バイナリファイルの内容を、そ...
-
PHPでCSVの一部の行を編集したい
-
CSVファイルの最終行のデー...
-
ヒアドキュメントの中のfor文
-
stdClass Objectを連想配列のよ...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
phpでCSVファイルの中身を多次...
-
rubyで複数列のデータを一行に...
-
多次元配列の一次元目の最大値...
-
行数が30万件ほどあるCSVから、...
-
配列同士の足し算のループ処理
-
FortranのOPEN文
-
自動で番号を振りたい
-
csvの内容を行単位で削除したい
-
CSVデータの行数カウントをした...
-
While文を使って配列の中身を全...
おすすめ情報