• 締切済み

auの絵文字コードをphpソース内に記述

PHPの中でHTMLを記述しstr_replace関数で 例として <!--emoji_1-->に対して<img localsrc="44" />に置換する方法をとっていますが、 実機で確認した場合 Auだけがなぜか (1)<p>絵文字:<!--emoji_1--></p>→変換OK! (2)<input type="submit" value="GO <!--emoji_1-->" /> ↓ <input type="submit" value="GO <img localsrc="44" />" /> サブミットにGo+ソースが文字として表示 (3)<title><!--emoji_1-->タイトルだよ</title> ↓ タイトルタグに記載したのにもかかわらず bodyの一行目に表示されます。 auの公式サイトには記載がなく、これはPHP側での変換処理の問題かと思い困っています。 このような経験のある方やアドバイスがあれば教えてください。

みんなの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

IMGタグなので、INPUTタグのVALUEに入れているのもおかしいし、 TITLEタグに入れるのもおかしいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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
  • auの絵文字をtextareaで表示

    はじめまして 調べていましても分かりませんでしたので、 どなたかご存知の方がいらっしゃいましたらお教えください。 JAVAServletで、auの絵文字を出力しております。 <img localsrc="絵文字番号" /> という形で表示をしているのですが、 <input type="text">でのvalueや、textareaで囲んで、 <img localsrc="絵文字番号" /> と出力しましても、絵文字が表示されません。 (熟知している人からみたら、当然なのかもしれませんが) <input type="text">でのvalueや、textareaで、 auの絵文字を表示するには、 どのようなやり方で出力してあげれば宜しいのでしょうか? ご存知の方がいらっしゃいましたら、ご教授お願いいたします。

  • コードの何が間違っているのか分からない(PHP)

    ●質問の主旨 コードの何が間違っているのかよくわからない。 (check.php)のファイルで、 print'<input type="hidden" name="nickname" value="'$nickname.'">'; の行がsyntaxerrorとして、返されるがなぜそうなるのか分からない (マニュアル本に記述して、スペルミスもチェックしているのですが) 何かお気づきのかた、ご教示願います。 ●質問の補足 添付の画像のように名前、メールアドレス、ご意見を入力してもらう フォームをとして作りました(index.html) すべてのフォームに入力がされているかどうかチェックし、 (check.php) サンクスページを返すようにしました (thanks.php) ●環境 Windows8 XAMMP(ローカル開発環境) ●コード (index.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="check.php"> <p>あなたの名前を入力してください</p> <input name="nickname" type="text" style="width:100px"> <p>メールアドレスを入力してください</p> <input name="email" type="text" style="width:200px"> <p>ご意見をお聞かせください</p> <input name="goiken" type="text" style="width:300px"><br/> <input type="submit" value="送信"> </form> </body> </html> (check.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname = $_POST['nickname']; $email = $_POST['email']; $goiken = $_POST['goiken']; $nickname = htmlspecialchars($nickname); $email = htmlspecialchars($email); $goiken = htmlspecialchars($goiken); if ($nickname == '') { print '名前が入力されてません!<br/>'; } else { print 'ようこそ!'; print $nickname; print 'さま'; print '<br/>'; } if ($email == '') { print 'emailが入力されてません!<br/>'; } else { print 'メールアドレス'; print $email; print '<br/>'; } if ($goiken == '') { print 'ご意見が入力されてません!<br/>'; } else { print 'ご意見'; print $goiken; print '<br/>'; } if($nickname == '' || $email == '' || $goiken == '') { print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">';   print'<input type="hidden" name="nickname" value="'$nickname.'">'; print'<input type="hidden" name="email" value="'.$email.'">'; print'<input type="hidden" name="goiken" value="'.$goiken.'">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK!">'; print'</form>'; } ?> </body> </html> (thanks.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print 'ご意見ありがとうございました!'; print $nickname; print '様<br/>'; print 'ご意見ありがとうございました<br/>'; print '頂いたご意見『'; print $goiken; print '』<br/>'; print $email; ?> </body> </html>

    • ベストアンサー
    • 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
  • 携帯サイトでの絵文字対応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の文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • 携帯絵文字変換スクリプトで20個目以降がエラーに

    ただいま1つのソースで3キャリアに対応した携帯サイトを作成しております。 絵文字を表示させるために、HTMLタグボードさんで配布されている「携帯絵文字変換スクリプト 3キャリア対応」 http://www.dspt.net/tools/emoji/ (フリーソフト/改変・改造自由)を組み込んでみたのですが、 下のようなエラーになってしまいました。 絵文字が19個目までは正常に表示されて、20個目以降がエラーになってしまいます。 (テストの為にHTMLファイルの<BODY></BODY>内に同じ絵文字だけを20個以上並べたところ、絵文字の種類にかかわらず20個目から[an error occurred while processing this directive]となってしまいます。) HTMLファイルをPCから開いても携帯から開いても上記と同じ現象が起こるので、もしかしたら携帯絵文字変換スクリプトの中に表示数の上限に関係した記述があるのではと思ったのですが、php初心者のためスクリプトを見ても原因がわかりませんでした。 もし原因の分かる方がいらっしゃったら、ぜひ教えていただければと思います。 どうぞよろしくお願いいたします。 ■絵文字変換スクリプト本体 trans.php <?php //┌───────────────────────────────── //│ [ EMOJI TRANS Ver2.3] //│ trans.php - 2008/06/15 //│ Copyright (C) DSPT.NET //│ webmaster@dspt.net //│ http://www.dspt.net/ //└───────────────────────────────── /********************** 初期設定 ***********************/ //絵文字変換表 $emoji_data = "emojix.csv"; //入力値取得 $num = $_GET["emoji"]; //PC用絵文字格納フォルダ $img_dir = "/php/emoji/images/"; //ドコモ→au絵文字自動変換利用(on:1 off:0) $ie = "1"; /********************** 以下からは改変しないほうが無難 ***********************/ //変換表を配列に格納 $emoji_array = array(); $emoji_array[] = ""; $contents = @file($emoji_data); foreach($contents as $line){ $line = rtrim( $line ); $emoji_array[] = explode(",", $line); } function encode($data) { $data = mb_convert_encoding($data, "SJIS", "auto"); return $data; } //携帯UA取得 $agent = $_SERVER["HTTP_USER_AGENT"]; //携帯端末のユーザエージェントを判定 function mobile($data){ if(preg_match("/^DoCoMo\/[12]\.0/i", $data)) { return "i";// i-mode } elseif(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]980|SoftBank)\//i", $data)) { return "s";// softbank } elseif(preg_match("/^KDDI\-/i", $data) || preg_match("/UP\.Browser/i", $data)) { return "e";// ezweb } elseif(preg_match("/^PDXGW/i", $data) || preg_match("/(DDIPOCKET|WILLCOM);/i", $data)) { return "w";// willcom } elseif(preg_match("/^L\-mode/i", $data)) { return "l";// l-mode } else { return "p";// pc } } //携帯キャリアに合わせて絵文字を出力 function emoji($data) { global $agent,$emoji_array,$img_dir,$ie; if(preg_match("/[0-9]{1,3}/", $data) && is_numeric($data) && 0 < $data && $data < 253) { switch(mobile($agent)){ case "i"; $put = $emoji_array[$data][1]; break; case "e"; if (preg_match("/[^0-9]/", $emoji_array[$data][2])) { $put = $emoji_array[$data][2]; } elseif ($ie > 0) { $put = $emoji_array[$data][1]; // Display such the icons that ezserver transformed as docomo i-emoji. } else { $put = "<img localsrc=\"".$emoji_array[$data][2]."\" />"; } break; case "s"; if (preg_match("/^[A-Z]{1}?/", $emoji_array[$data][3])) { $put = "\x1B\$".encode($emoji_array[$data][3])."\x0F"; } else { $put = encode($emoji_array[$data][3]); } break; case "p"; $put = "<img src=\"".$img_dir.$emoji_array[$data][0].".gif\" width=\"12\" height=\"12\" border=\"0\" alt=\"\" />"; break; } echo $put; } else { echo "[Error!]\n"; } } //処理 emoji($num); ?>

    • ベストアンサー
    • PHP
  • スマホサイトでの画像をPOST

    スマホサイトで画像アップロードのフォームを作成しています。 5つほど添付できるようにしています。 form.php <form action="./send.php" method="post" enctype="multipart/form-data" novalidate="novalidate"> 画像<br> <?php for($i = 1; $i <= 5; $i++) { echo '<input type="hidden" name="item_img_name[' .$i. ']" value="' .$_SESSION['item_img_name'][$i]. '">'."\n"; echo '<input type="file" name="item_img[' .$i. ']" id="item_img_' .$i. '" value=""><br>'."\n"; } ?> <input type="submit" value="送信"> </form> 以上の内容でフォームを作成しております。 問題なのが、サブミットした際send.phpに切り替わるのがかなり遅く大変困っています。 1つにつき2MGの画像サイズを早くPOSTさせる方法はありませんでしょうか。

    • 締切済み
    • PHP
  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • 【PHP・MySQL】一文字だけ抜き出したい

    php・MySQL初心者です。 何とかここまで自力でやってこれたのですが、もうお手上げで…。 サンプルコードを解析し、部分的に理解しながら進んでる状態です。 やりたいことは、 「ユーザーが入力した文字列の最後の1文字だけを抜き出し、データベースに代入する」です。 ←(2) ちなみに、 「ユーザーが入力した文字列をそのまま、データベースに代入する」はできました。←(1) 参考に、(1)のソースコードの一部を書きます。 ------------------------------------------- 『main.php』 <form action="result.php" method="POST" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="<?= $file_maxsize ?>"> タイトル:<INPUT type="text" name="title" size="50"><br> コメント:<INPUT type="text" name="comment" size="50"><br> <input type="submit" value="送信"> </form><hr> ------------------------------------------- 『result.php』 $comment = @trim($_REQUEST['comment']); //※ $query = "insert into main_t (comment, last)" . " values ('$comment', '$last')"; $result = mysql_query($query); ------------------------------------------- だいたいこんな感じで(1)は出来ました。 (関係がありそうなところだけを抜き出したつもりです…) 『main.php』で出力して確認もしました。 (2)の現状の私のコードを書きます。 ------------------------------------------- 『result.php』 $x = mysql_query("select right('$title', 1)"); $last = mysql_fetch_assoc($x); ------------------------------------------- これを(1)の //※  の部分に記述してみましたが、うまくいきません。 出力するとなぜか「Ar」と出てきます…泣 『select right('いちもじ', 1)』で『じ』とちゃんと右一文字が取り出せるのをbatファイル?みたいなので確認しました。 このSQL文をPHP内で行いたいのですが、やり方がわかりません…。 (そもそも根本的に間違っているのでしょうか…) $x = mysql_query("select * from ○○ where 条件"); $last = mysql_fetch_assoc($x); みたいにfromで検索先や条件を指定して得た「配列」を取得し、表示する方法はネット検索で沢山見つかったのですが、fromやwhereを使わず、結果も配列ではなく1つだけ得られるような場合は、どうすればよいのでしょうか? わかりづらい文章ですみません; 難しい質問かとは思いますが、PHPやMySQLに詳しい方がいましたら、是非ともご教授いただけたらと思います。 よろしくお願いいたします。