こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

携帯サイトでの絵文字対応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のみ変換されていないように思います。
考えられる原因がお分かりの方、いらっしゃいましたらよろしくお願いします。
わかりづらい文章で申し訳ありません。

投稿日時 - 2009-10-30 18:17:30

QNo.5409085

すぐに回答ほしいです

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

今回の現象と直接影響してるか全体が判らないので確実ではありませんが、emoji_output関数にheader()を使うのは処理の流れから考えても変です。

また、mbstring 設定オプションは?
設定はプログラムの処理、内容にあったものにしてますか?

投稿日時 - 2009-10-31 20:56:09

お礼

アドバイスありがとうございます。
早速確認してみます。

投稿日時 - 2009-11-01 20:33:33

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問