ただいま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);
?>
No.1ベストアンサー
- 回答日時:
phpスクリプト側には制限はありません。
SSIで読み込んでいますので、(サーバ側で)SSIからphpスクリプトを起動する数に制限がかかっている可能性があります。
回避するとすれば、SSIでの読み込みをやめてshtml→phpにして直接埋め込むくらいでしょうか。手法は以前書いたものが下記にありますので参考にしてください。
http://sb.xrea.com/showthread.php?t=14639
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Resource id #3 と表示されま...
-
ヒアドキュメントの中のfor文
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
配列同士の足し算のループ処理
-
バイナリファイルの内容を、そ...
-
PHPでCSVの一部の行を編集したい
-
PHP SimpleXml unsetについて
-
file_existsでファイル名の部分...
-
配列をループでたくさん宣言し...
-
スカラーのベクトル微分
-
3つの連想配列を交互に代入し...
-
PHPでテキストファイルの一部を...
-
String だと「 ByRef引数の型が...
-
verilogで、配列の一部をタスク...
-
プルダウンメニューでCSVデータ...
-
PHPのmin関数、「1」以上の数値...
-
phpで、連想配列を普通の配列に...
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
CSVファイルの最終行のデー...
-
stdClass Objectを連想配列のよ...
-
複数行のデータのPOST処理に関して
-
ヒアドキュメントの中のfor文
-
Resource id #3 と表示されま...
-
エラーメッセージ(無効な間接...
-
自動で番号を振りたい
-
PHPでCSVの一部の行を編集したい
-
C言語でCSVファイルの行数を読...
-
バイナリファイルの内容を、そ...
-
CSVデータの行数カウントをした...
-
ログファイルの古い日付の行を...
-
While文を使って配列の中身を全...
-
csvの内容を行単位で削除したい
-
多次元配列の一次元目の最大値...
-
pythonのファイルの並びでの読...
-
配列同士の足し算のループ処理
-
【PHP】csvファイルへの書き出...
-
配列をファイルに書き込む方法
おすすめ情報