$value ){ $GB_GET[$key] = $value; } // 入力文字を取出す $skey = ""; if ( isset($GB_GET["skey"])){ $skey = $GB_GET["skey"]; } // トップの表示 disp_html_head(); // サイトの説明・入力表示 disp_html_dtop($skey); // 上部の広告表示 // キャリアを判定して、広告の表示を変更する $car = ka_ad_car_get(); if ( $car == "pc" ){ disp_html_dtopad(); } else { include_once(CO_MADS_FILE); } $wskey = preg_replace("/ | /", "", $skey); if( trim( $wskey ) == "" ){ disp_htm_futlink(); } else { // 応答を表示する if ( check_skey($skey) == true ){ disp_html_respons($skey); disp_html_dfutad(); disp_htm_futlink(); } } disp_html_fut(); /**************************************** * 入力されたも文字が平仮名のみかを確認する * ****************************************/ function check_skey($skey){ global $kanatable; // 全角空白を消去する。 // 半角空白を消去する。 $wskey = preg_replace("/ | /", "", $skey); $hiratable = get_mojicnv(); $errstr = ""; $errflg = false; $strlen = mb_strlen($wskey); for ( $i = 0 ; $i < $strlen ; $i ++ ){ $moji = mb_substr($wskey,$i,1); if ( isset($hiratable[$moji])){ $errstr .= $moji; } else { $errstr .= "".$moji.""; $errflg = true; } } if ($errflg == true ){ echo $errstr."
\n"; echo "ひらがなで入力してください、長音\"ー\"等も使用出来ません"; return false; } return true; } /**************************************** * 入力に対するレスポンスを返す * ****************************************/ function disp_html_respons($skey){ // 1文字毎に分解する // 全角空白を消去する。 // 半角空白を消去する。 $wskey = preg_replace("/ | /", "", $skey); $hiratable = get_mojicnv(); $errstr = ""; $errflg = false; $strlen = mb_strlen($wskey); $mojidata = array(); for ( $i = 0 ; $i < $strlen ; $i ++ ){ $mojidata[count($mojidata)] = mb_substr($wskey,$i,1); } $drespons_style = ""; if ( CO_STYLE_DRESPONS <> "" ){ $drespons_style = " style=\"".CO_STYLE_DRESPONS."\""; } $dcont_style = ""; if ( CO_STYLE_DCONT <> "" ){ $dcont_style = " style=\"".CO_STYLE_DCONT."\""; } $subnote = ""; if ( CO_HP_SUB_NOTE <> "" ){ $subnote = CO_HP_SUB_NOTE; } $dnote_style = ""; if ( CO_STYLE_DNOTE <> "" ){ $dnote_style = " style=\"".CO_STYLE_DNOTE."\""; } // 表示に使用するデータをサンプリングする。 // サンプリングすべき件数を求める $mojicount = array(); foreach($mojidata as $key => $value){ if ( isset($mojicount[$value])){ $mojicount[$value] ++; } else { $mojicount[$value] = 1; } } $mdata = get_moji1(); $sampdata = array(); // 差し替え文字テーブル $emojicnv = get_mojicnv(); foreach($mojicount as $key => $value){ $sampdata[$key] = array(); // 使用できるデータの件数を求める $mmojiarray = array(); $mcount = 0; if ( isset($mdata[$key]) ){ $mmojiarray = $mdata[$key]; $mcount = count($mmojiarray); } // もし、データが無い時には差し替え文字にデータを切替える if ( $mcount <= 0 ){ if ( trim($emojicnv[$key]) <> "" ){ $mmojiarray = $mdata[$emojicnv[$key]]; $mcount = count($mmojiarray); } } for ( $i = 0 ; $i < $value ; $i ++){ if ( $mcount > 1 ){ do { // 重複の確認 $dupflg = false; // 乱数を求めて、選択するデータ番号を求める $selnumber = $mmojiarray[rand(0,$mcount-1)]; if ( count($sampdata[$key]) >= $mcount ){ $sampdata[$key][count($sampdata[$key])] = $selnumber; $dupflg = false; } else { foreach ( $sampdata[$key] as $ckey => $cvalue ){ if ( $cvalue == $selnumber ){ $dupflg = True; break; } } if ( $dupflg == false ){ $sampdata[$key][count($sampdata[$key])] = $selnumber; } } } while ($dupflg == true); } else { // データが1件しかない $sampdata[$key][count($sampdata[$key])] = $mmojiarray[0]; } } } // HTML表示用のデータをセットする $htmldata = ""; // テキスト表示用のデータセット $textdata = ""; // 漢字表現に使用するデータ $kanjistr = ""; // サンプリングデータを元に文字に使用するデータ番号を割り付ける $wrkarray = array(); $selnumarray = array(); foreach ( $mojidata as $key => $value ){ if ( isset($wrkarray[$value])){ } else { $wrkarray[$value] = 0; } // 選択した番号をセットする $uid = $sampdata[$value][$wrkarray[$value]]; // $selnumarray[$key] = $sampdata[$value][$wrkarray[$value]]; // カウントアップする $wrkarray[$value] ++; // 最後の文字かどうかを判断する。 $lastflg = false; if ( count($mojidata) <= ($key + 1)){ $lastflg = true; // 最後の文字 } // 使用するデータを入手する $mastdata = get_basedata($uid); $kana = $mastdata["kana"]; $kanji = $mastdata["kanji"]; $setu = $mastdata["midmoji"]; // 最後の時には最後の接続詞を使用する。 if ( $lastflg == true ){ $setu = $mastdata["lastmoji"]; } // 表示文字を作成する $textdata .= "・".htmlspecialchars($kana.$setu)."\n"; // 最初の1文字を強調する // $htmldata .= "・".$value."".$mb_substr($kana,1,mb_strlen($kana)-1)."
\n"; $htmldata .= "・".mb_substr($kana,0,1)."".htmlspecialchars(mb_substr($kana,1,mb_strlen($kana) - 1 ).$setu)."
\n"; $kanjistr .= htmlspecialchars($kanji.$setu); if ( $lastflg != true ){ $kanjistr .= "、"; } } // 名前を記載する $htmldata .= "".htmlspecialchars($skey)."です
"; $textdata .= htmlspecialchars($skey)."です\n"; $htmlkanjistr = "『".$kanjistr."".htmlspecialchars($skey)."です』
"; $kanjistr = "『".htmlspecialchars($kanjistr." ".htmlspecialchars($skey))." です』\n"; echo <<< EOT
$htmlkanjistr $htmldata
$subnote
貼付用テキスト
EOT; } /**************************************** * 指定のデータを乱数を元に文字列として作成する * ****************************************/ function get_dispstr($id,$md5str,$md5key){ // 指定の番号のデータを入手する $reparray = array(); $soudata = get_basedata($id); // 数値化するものの値を求めて数値化する // 数値化の範囲を求める if ( $soudata["min"] > -1 ){ list($wnumber,$md5str,$md5key) = get_md52num($md5str,$md5key); // 最大にリミッターが有るか無いかを判断する。 if ($soudata["max"] > -1 ){ // 最大にリミッターが有る // 求める範囲の最大値を算出 $axmnum = $soudata["max"] - $soudata["min"] + 1; // 桁数を元に桁数をセットする(数値を大きく変化させないと面白くない if ( $soudata["caltype"] < 0 ){ // 桁数の変化を大きくする $keta = fmod($wnumber , 7) + 2; $wnumber = substr($wnumber, 0, $keta); } //範囲内の値を求める $wnumber = fmod($wnumber , $axmnum); $wnumber += $soudata["min"]; } else { // 最大にリミッター無し // 桁数を元に桁数をセットする(数値を大きく変化させないと面白くない if ( $soudata["caltype"] < 0 ){ // 桁数の変化を大きくする $keta = fmod($wnumber , 7) + 2; $wnumber = substr($wnumber, 0, $keta); } // 最低だけを確認して、数値を求める while ( $wnumber < $soudata["min"] ){ list($wnumber,$md5str,$md5key) = get_md52num($md5str,$md5key); // 桁数を元に桁数をセットする(数値を大きく変化させないと面白くない if ( $soudata["caltype"] < 0 ){ // 桁数の変化を大きくする $keta = fmod($wnumber , 7) + 2; $wnumber = substr($wnumber, 0, $keta); } } } // 丸めの実施を判断し、丸め処理を行なう $marume = abs($soudata["caltype"]); if ( $marume > 0 ){ // 丸め処理を実施 $len = strlen($wnumber); if ( $len > $soudata["caltype"] ){ $wnumber = substr(substr($wnumber, 0 ,abs($soudata["caltype"]))."0000000000000000", 0, $len ); } } // 係数で乗算する設定が有れば乗算する if ( $soudata["cal"] > 0 ){ $wnumber = $wnumber * $soudata["cal"]; } $reparray["number"] = $wnumber; } else { $reparray["number"] = ""; } // データ1~10を求める for ( $i = 1 ; $i <= 10 ; $i ++ ){ $datakey = "data".$i; // データ件数 $dataarray = $soudata[$datakey]; $datacount = count($dataarray); if ( $datacount > 0 ){ if ( $datacount == 1 ){ // 1件しかないのでそのまま表示する $dstr = $dataarray[0]; } else { // 複数のデータがあるので、選択する。 list($wnumber,$md5str,$md5key) = get_md52num($md5str,$md5key); $dstr = $dataarray[fmod($wnumber , $datacount)]; } $reparray[$datakey] = $dstr; } else { //データ無し $reparray[$datakey] = ""; } } // コメント if ( $soudata["comment"] <> "" ){ $reparray["comment"] = $soudata["comment"]; } else { $reparray["comment"] = ""; } $reparray["subject"] = $soudata["subject"]; return array($reparray, $md5str,$md5key); } /**************************************** * MD5を元にした値を返す処理 * ****************************************/ function set_dispstr($mdataarray,$mode = 0){ $dataarray = $mdataarray; $subject = $dataarray["subject"]; if ( $mode == 0 ){ foreach ( $dataarray as $key => $value ){ switch($key){ case "name": if ( $dataarray["name"] <> "" ){ if ( CO_STYLE_NAME <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["name"] = "".$dataarray["name"].""; } } break; case "number": if ( $dataarray["number"] <> "" ){ if ( CO_STYLE_NUMBER <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["number"] = "".number_format($dataarray["number"]).""; } } break; case "comment": if ( $dataarray["comment"] <> "" ){ if ( CO_STYLE_COMMENT <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["comment"] = "".$dataarray["comment"].""; } } break; case "data1": if ( $dataarray["data1"] <> "" ){ if ( CO_STYLE_DATA1 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data1"] = "".$dataarray["data1"].""; } } break; case "data2": if ( $dataarray["data2"] <> "" ){ if ( CO_STYLE_DATA2 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data2"] = "".$dataarray["data2"].""; } } break; case "data3": if ( $dataarray["data3"] <> "" ){ if ( CO_STYLE_DATA3 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data3"] = "".$dataarray["data3"].""; } } break; case "data4": if ( $dataarray["data4"] <> "" ){ if ( CO_STYLE_DATA4 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data4"] = "".$dataarray["data4"].""; } } break; case "data5": if ( $dataarray["data5"] <> "" ){ if ( CO_STYLE_DATA5 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data5"] = "".$dataarray["data5"].""; } } break; case "data6": if ( $dataarray["data6"] <> "" ){ if ( CO_STYLE_DATA6 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data6"] = "".$dataarray["data6"].""; } } break; case "data7": if ( $dataarray["data7"] <> "" ){ if ( CO_STYLE_DATA7 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data7"] = "".$dataarray["data7"].""; } } break; case "data8": if ( $dataarray["data8"] <> "" ){ if ( CO_STYLE_DATA8 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data8"] = "".$dataarray["data8"].""; } } break; case "data9": if ( $dataarray["data9"] <> "" ){ if ( CO_STYLE_DATA9 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data9"] = "".$dataarray["data9"].""; } } break; case "data10": if ( $dataarray["data10"] <> "" ){ if ( CO_STYLE_DATA7 <> "" ){ // スタイルシートつきの文字列に差し替える $dataarray["data10"] = "".$dataarray["data10"].""; } } break; } } } // 変数の差替えを行なう $dispstr = $subject; foreach( $dataarray as $key => $value ){ if ( $key <> "subject" ){ $dispstr = mb_ereg_replace("\\\$".$key."\\\$", $value, $dispstr); } } return $dispstr; } /**************************************** * フッターに対するリンク表示 * ****************************************/ function disp_htm_futlink(){ $dfutlink = ""; if ( CO_HP_FUT_LINK <> "" ){ $dfutlink = CO_HP_FUT_LINK; } $futlink_styl = ""; if ( CO_STYLE_DFUTLINK <> "" ){ $futlink_styl = " style=\"".CO_STYLE_DFUTLINK."\""; } echo <<< EOT EOT; } // データファイルの差替えを実施する // 注意:差替え日にアクセスがないと差替えは実行されません function CheckDataFile(){ // 差替えデータファイルの有無の確認 // ファイル名を作成する $stamp = time(); $filename = "data".date('Ymd', $stamp).".php"; if ( file_exists($filename) ){ // 差替えファイルが有ったので、ロックファイルを作成し、ファイルを差し替える // ファイルロックを実行する // ファイルをオープンする $lfp = fopen(CO_DATA_LOCK_FILE,'w+'); if ( $lfp === false ){ return; } /// ファイルをロックする if ( flock($lfp, LOCK_EX) === false ){ return; } if ( file_exists($filename) ){ // ファイルをコピーする if ( copy($filename, CO_DATA_FILE) == true ){ // 元のファイルを削除する unlink ($filename); } } // ロックを解除 flock($lfp, LOCK_UN); // ロックファイルをクロース fclose($lfp); } } /**************************************** *外部から送信された値を加工する * *文字コード体系をUTF-8に変換する * ****************************************/ function chg_from($array) { foreach($array as $key => $value){ if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 文字列をUTF-8にエンコードして保存する。 $enc = mb_detect_encoding($value, "UTF-8,SJIS,auto"); if (isset($enc) and $enc != "UTF-8") { // UTF-8と違う。 if ( $enc <> "" ){ $value = mb_convert_encoding($value, "UTF-8", $enc); // UTF-8に変更する。 } } $array[$key] = $value; } return $array; } /**************************************** *キャリアの判別を行なう * * WILLCOM関係はPCと同等と扱う * ****************************************/ function ka_ad_car_get(){ if(eregi("DoCoMo", $_SERVER["HTTP_USER_AGENT"])) { return "i"; } else if( eregi("J-PHONE", $_SERVER["HTTP_USER_AGENT"]) || eregi("Vodafone", $_SERVER["HTTP_USER_AGENT"]) || eregi("Nokia6820", $_SERVER["HTTP_USER_AGENT"]) || eregi("SoftBank", $_SERVER["HTTP_USER_AGENT"])){ return "sb"; } else if(eregi("UP.Browser", $_SERVER["HTTP_USER_AGENT"]) || eregi("KDDI", $_SERVER["HTTP_USER_AGENT"]) ){ return "au"; } return "pc"; } /**************************************** *HTMLのclass=dtopの部分を表示する * ****************************************/ function disp_html_dtopad(){ $dtop_ad = ""; if ( CO_HP_TOP_AD <> "" ){ $dtop_ad = CO_HP_TOP_AD; } echo <<< EOT
$dtop_ad
EOT; } /**************************************** *HTMLのclass=dfutadの部分を表示する * ****************************************/ function disp_html_dfutad(){ $dfut_ad = ""; if ( CO_HP_FUT_AD <> "" ){ $dfut_ad = CO_HP_FUT_AD; } echo <<< EOT
$dfut_ad
EOT; } /**************************************** *HTMLのclass=dtopの部分を表示する * ****************************************/ function disp_html_dtop($skey = "", $title=CO_HP_TITLE){ $dtop_styl = ""; if ( CO_STYLE_BODY <> "" ){ $dtop_styl = " style=\"".CO_STYLE_DTOP."\""; } $dban_styl = ""; if ( CO_STYLE_BODY <> "" ){ $dban_styl = " style=\"".CO_STYLE_DBAN."\""; } $dtitle_styl = ""; if ( CO_STYLE_BODY <> "" ){ $dtitle_styl = " style=\"".CO_STYLE_DTITLE."\""; } $dinput_styl = ""; if ( CO_STYLE_BODY <> "" ){ $dinput_styl = " style=\"".CO_STYLE_DINPUT."\""; } $hp_title = ""; if ( CO_HP_TITLE <> "" ){ $hp_title = CO_HP_TITLE; // スタイルシートの適用 if ( CO_STYLE_TITLE <> "" ){ $hp_title = "

".$hp_title."

\n"; } else { $hp_title = "

".$hp_title."

"; } } $hp_note = ""; if ( CO_HP_NOTE <> "" ){ $hp_note = CO_HP_NOTE; } $inputbtnname = ""; if ( CO_HP_BTN_NAME <> "" ){ $inputbtnname = " value = \"".CO_HP_BTN_NAME."\""; } $input_form = "
\n"; $input_form .= "お名前:"; $input_form .= "\n"; $input_form .= "
\n"; echo <<< EOT
$hp_title
$hp_note
$input_form
EOT; } /**************************************** *HTMLのフッター部を表示する * ****************************************/ function disp_html_fut(){ $dfut = CO_HP_FUT; $dfut_styl = ""; if ( CO_STYLE_DFUT <> "" ){ $dfut_styl = " style=\"".CO_STYLE_DFUT."\""; } echo <<< EOT
$dfut
EOT; } /**************************************** *HTMLのヘッダー部を表示する * ****************************************/ function disp_html_head($title=CO_HP_TITLE){ $title = CO_HP_TITLE; $meta = CO_HP_META; $body_styl = ""; if ( CO_STYLE_BODY <> "" ){ $body_styl = " style=\"".CO_STYLE_BODY."\""; } $dmain_style = ""; if ( CO_STYLE_BODY <> "" ){ $dmain_style = " style=\"".CO_STYLE_DMAIN."\""; } echo <<< EOT $meta $title
EOT; } ?>