筆者:フィア
北の社会人二年生。もうすぐ三年生。
コミュ力ほしい。
時間もほしい。
元きのこゲーマーによる生存報告用ブログ。 BGMは前回再生したものが次回訪問時自動再生されます。
| |||||||||||||||||||
![]()
筆者:フィア
![]()
![]() ![]()
☆戦士☆
その他倉庫多数
☆カテゴリー ☆自己流攻略
・ボス戦
・強化 ・クエスト ・その他 ☆ウェブ支援 ☆RSSフィード 全記事リスト 上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。 ![]()
☆メイポブログ
▼椛鯖
▼凍結ブログ(クリックで開閉)
☆メイポ以外のブログ ☆メイポ攻略サイト ☆素材 ☆その他 上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。 ![]() |
![]()
--年--月--日 (--) 【コメント:不可】
上記の広告は1ヶ月以上更新のないブログに表示されています。 新しい記事を書く事で広告が消せます。 2008年07月25日 (金) 【コメント:6通】
また東北ですか・・・。 こんばんは。 タイトルみてネタがわかったあなたは立派な東方厨。 いや東北に地震着すぎでしょ・・・・。 テストラッシュが今日から来るわけですけど、現在3:30、いまだに起きてる。 これはいい末期・・・。 化学小テスト、これはまだ小だからいいけど、その後微積分のテストが・・。 続きを閉じる 珍しく東方ネタはないです。 というのも、テスト期間中なので若干自粛。 東方は集中力使いますから、勉強しなきゃ・・・みたいなこと考えてたら簡単に死ねますからねぇ。 なのでどうしても調子がでなくてやめざるを得ないという。笑 きのこネタ。 これもあまりはいってないのにちょっとある・・・。 ![]() △またですごめんなさい ということでとまとくんのサブと・・・。 ![]() △アバ似合わない罠 まだ前よりましですが・・・。 前のやつなんてアバなしのほうがよっぽどよかった。笑 で、内容はというと、しっかり1回墓してきました(ノ゚ロ゚)ノ⌒┻━┻ heroになれるとpgになれちゃって大変です・・・・。 その後HB切らして近接の人殺しちゃいましたし散々ですね。 二戦目はやることはちゃんとやれましたけど。。 ![]() △変則じゃ組む なんという変換。 ギルドで一戦。 長が2pcで申請したので5人、さらに一人は4次してない人でした。 にしては早かったんじゃないでしょうかねぇ。 まあ聖なしですけど。 聖なしだったので、heroかさなると見えにくいので右に。 HBなくても猫とHP2kくらいしか変わらないので、PGあるしスタンスも30で楽すぎました。笑 DKはPGないのと振りが遅くて回避行動が遅れるというところが厄介ですねぇ・・・。 ![]() △オルクエなんて久しぶり 変なところのSSですけど。 3連休のどっかでいってきました。 パパ弱くなりすぎでしょ・・・・。 ![]() △ギルドでBG 一名墓ってますね^^; DSしたはいいけど、間に合っていなくてキック食らっていたという話で。 その後長もPGするわでBは撤退^- 残念会?みたいな感じでビシャスに・・・・、 ![]() △( ^ω^)・・・ で、東方もきのこも減らして何やってたのかといわれると・・・。 どうしても勉強から逃げたかったわたしは、htmlいじってたり絵描いてたりphpに手だしたり・・・。 だいぶ前から、以前作っていたHP(風の宿)を作り直そうとしていたわけです。 一部の人にはいったかもしれませんね。 風の宿で気に入らなかったのは、なんといってもみにくさ。 背景が濃すぎた、そして無駄に画像使っていたところが原因でしょう。 その辺考慮にいれて作り直していました。 ちなみにいうと、このブログのCSSはほとんどそれの流用なんです。 だからメインフレームの外見は似てますよ。笑 あいかわらずのフレーム仕様ですが、上のフレームは若干縦を小さくしましたね。 しかしどうしても攻略ページを作る気力が起こらなくて、作ってたのは影の方。 リンクとかサイトマップとか。笑 サイトマップ作って、作らないといけないページの数に愕然としたり。笑 で、最近手をつけたのがphp。 きっかけは、フレームでもトップ以外にリンクしたいという思いから。 いや、正直いうとそれはちょっと違うんですけどね。 というのも、htmlだけでもフレーム以外にリンク可能ですから。 方法 ディレクトリ(page)―――――aaa.html index.html bbb.html aaa.html bbb.html ,,,, わかりにくいですね。 まあindex.htmlがあるディレクトリに、pageというディレクトリを作り、メインフレームに表示するhtmlファイルをいれるわけです。 そして、同名で中身は別なhtmlをindex.htmlのディレクトリにも置くわけ。 pageのディレクトリのhtmlは当然表示したいhtmlですが、index.htmlがあるディレクトリのhtmlは、index.thmlのようにフレーム定義のソース。 index.htmlだと、メインフレームがおそらくtop.htmlとかそんなのを表示してると思うんですけど、そこをaaa.htmlとかに変えたのをindex.htmlのディレクトリにおいておくわけですよ。 すると、aaa.htmlを表示したかったら、~~~/aaa.html とURLをうってあげればフレーム表示のaaa.htmlがだせるわけです。 まあ一般ユーザーには説明しないとわかりませんけど。笑 しかしこれの欠点は・・・。 どうみても面倒くさいですよね。 1ページに2つのhtmlファイルとか・・・。 ここでphpがでてくるんですよ。 phpにはページを超えて渡せる変数があるんです。 fc2のアカウントもってるなら、fc2ブログの管理画面見るとわかるかなと。 http://blog68.fc2.com/control.php?mode=editor&process=new この部分のこと。 ここを ?page=aaa とかにしてindex.phpに送ることができれば、index.phpだけおいておくだけで上のシステムができるわけです。 しかもこの程度なら簡単に作れましたし。 ただphpサポートしてるサーバーじゃないと使えませんけど。笑 そして、こうなってくるとやっぱりやりたくなるのがトピックリーダー。 きのこの公式のお知らせを読み込んで表示するあれです。 ![]() △とぴっくりーだー まだphp使えるサーバーのアカウントとってませんし、Apache使って自宅サーバーでやっているわけですが・・・。 だいぶ手間取りましたけど、KIAIでがんばれば作れるものなんですねぇ。 phpは文法わかりやすくていいですね。 ↓に書いておきますよ、phpのこととかこのトピックリーダーのこととか。 というより、これかいてたら3時になったわけですが。 ☆最後のおまけ ![]() △背景が適当すぎると言わざるをry どうもわたしが書くと顔がでかくなる傾向が・・・。 今度はバランスを重視してかいてみようかなぁ・・・。 東方にちょっとくらいでも触れてる人なら何の絵かは一発でわかるはず。笑 スポンサーサイト
2008年07月24日 (木) 【コメント:0通】
phpを使ったトピックリーダー(公式ページのお知らせを自動で読み込むやつ)の作り方を紹介します。 cgiで作れといわれても、今の状態だとできないので簡便・・・。 とはいえphpよりはcgiのほうがおけるサーバーおおいでしょうけど・・・。 続きを閉じる ▼phpとは
こまったときのウィキ先生にお尋ねしますと、
PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。 とのお返事をいただきましたヽ(´・ω・`)ノ わかりにくいかもしれませんねぇ、簡単に説明しましょう。 HP作ってる人なら大体の人が思うことじゃないでしょうか。 「HTMLで条件分岐とか変数使えればなー」 と。 そこで登場するのがjavascriptさん、だいたいなら彼だけで事足りるのですが、それでも限界があって・・・。 js(javascript)ではページを超えた設定はできません。 つまり引数を渡してリンクを飛ばす・・・という芸当はできないわけですし、外部ファイルから情報をもらうこともできません。 そこででてきたのがphp、これなら上の2つの芸当も簡単にできます。 よく見るんじゃないでしょうか。 少なくてもfc2のブログをやっている人なら、管理画面のurlみてみてください。 http://blog**.fc2.com/control.php?mode=editor&process=load&... これは過去記事の管理のurlなんですが、赤字のところです。 しっかりと引数を渡しています。 これは$_GET["***"]で得ることができて・・・なんていう話は今はしないでおきましょうか。 興味があったらぐーぐる先生に教えてもらってください。 phpの仕組みを説明しましょう。 htmlやjavascriptはウェブブラウザが扱える言語なんです。 一方phpはウェブブラウザでは扱えない。 なので困ったブラウザ君はどうするかというと、サーバー先生に翻訳を依頼するわけです。 やさしいサーバー先生なら、ブラウザでもわかるhtmlタグに翻訳して返してくれるわけです。 一方性格の悪いサーバー先公(fc2とかyahooとかry)は翻訳してくれません。 ここからは翻訳してもらえたとして進めます。 htmlにしてもらえたなら、もうブラウザ君にとってはお手の物で、ちゃっちゃと処理できます。 ただし、「レポート(htmlソース)を見せてみろ」というと、当然翻訳版しか見せてくれません、というより見せれません。 やり方知らないんですから( ![]() △とぴっくりーだー まだphpつかえるサーバーのアカウントとってないので画像になってしまいますけど、今回はこれの説明なわけですが、これのhtmlソースを見てみると・・・。 htmlソースを見ただけではphpを使っているのかすらわからないまで証拠隠滅されていますね。 その点では他人のをパクれないという欠点(製作者側からしたら利点)があるわけです。 ▼本題:トピックリーダー
では実際にほんもののソースを見ていきましょうか。
☆解説作り方、ってよりむしろ素材っぽい感じがありますけど・・・。 というより、わたしもまだphpははじめたばっかりなので教えられるほどの知識はないのですm(_ _)m なので、言っちゃうと「無理やり作った」といわざるを得ないプログラムです。 正直うまいひとならもっと効率よく造れると思うのですが、多分検索してもこんな1つのサイトに特化したリーダーの素材なんてないでしょうから、下手でも乗せておきます。 php使えるサーバーできのこのHPとか作ってる人がいたら参考にしてもらえれば・・・^p^ 途中にあるリンクはしたにある文法説明へのリンクです。 <?php //きのこ公式のお知らせのページを開いて読み込み、そのファイルハンドルを$purlという変数(phpでは$が変数)に代入 $purl = fopen("http://maplestory.nexon.co.jp/web_module/skins/MapleStory/board_list.asp?strboardid=maplestorynews", "r"); //$dataと$dateという2つの変数を配列と定義 $data = array(); $date = array(); //$strという変数に、きのこ公式のhtmlを1行ずつ代入、それの繰り返し (*1) while ($str = fgets($purl)) { //この1行に<td width="438">という文字が入っていたら$data配列に追加 if (strpos($str, "<td width=\"438\">") != FALSE) { array_push($data, $str); } //この1行にwidth="61"という文字が入っているなら$date配列に追加 if (strpos($str, "width=\"61\"") != FALSE) { array_push($date, $str); } //$dataに4つ超のデータ(つまり5以上)が入っていればループ終了 if (count($data) > 4) { break; } } //きのこのお知らせページを閉じる fclose($purl); //現在の時間を拾得 $now = getdate(); //$iを0から$date配列の長さより小さい範囲で(この場合0~4)動かし、ループ (*2) for ($i = 0; $i < count($date); $i++) { //「>」という字の次から10文字を$dstrに代入 $dstr = substr($date[$i], strpos($date[$i], ">") + 1, 10); //$dstrの前から4文字を$yearに代入 $year = substr($dstr, 0, 4); //$dstrの5文字目から2文字分を$monthに代入 $month = substr($dstr, 5, 2); //$dstrの8文字目から2文字分を$dayに代入 $day = substr($dstr, 8, 2); //この行の日付のタイムスタンプを拾得 $tsp = mktime($now["hours"], $now["minutes"], $now["seconds"], $month, $day, $year); //$expに$monthの1文字目を代入 $exp = substr($month, 0, 1); //$expが0なら月の十の位の0を白色にして非表示もどきに if ($exp == 0) { $month = "<font color=\"#ffffff\">0</font>" . substr($month, 1, 1); } //$dstrの8文字目から2文字分を$dayに代入 $exp = substr($day, 0, 1); //$expが0なら日の十の位の0を白色にして非表示もどきに if ($exp == 0) { $day = "<font color=\"#ffffff\">0</font>" . substr($day, 1, 1); } //その行の更新日時が今から3日以内なら if (($now[0] - $tsp) <= (3*24*60*60)) { //全体を赤文字に $time[$i] = "<font color=\"#ff0000\">{$year}年{$month}月{$day}日</font>"; } else { //そうでないならそのまま代入 $time[$i] = "{$year}年{$month}月{$day}日"; } } //$iを0から$date配列の長さより小さい範囲で(この場合0~4)動かし、ループ (*3) for ($i = 0; $i < count($data); $i++) { //icn_noticeという文字列が含まれていれば if (strpos($data[$i], "icn_notice") != FALSE) { //$typに"お知らせ"を代入 $typ = "<font color=\"#00BFFF\">お知らせ</font>"; //icn_eventというry 以下同じなので省略 } elseif (strpos($data[$i], "icn_event") != FALSE) { $typ = "<font color=\"#F4A460\">イベント</font>"; } elseif (strpos($data[$i], "icn_update") != FALSE) { $typ = "<font color=\"#EE82EE\">アップデート</font>"; } elseif (strpos($data[$i], "icn_maintenance") != FALSE) { $typ = "<font color=\"#90EE90\">メンテナンス</font>"; } else { $typ = "不明"; } //$xxに$i行目のデータの「href="」からを代入 $xx = substr($data[$i], strpos($data[$i], "href=\"")); //「"」がある場所で文字列を区切り、配列として$yyに代入 $yy = split('"', $xx); //上で区切ったものの3番目の2文字目からを今度は"<"で区切る $zz = split('<', substr($yy[2], 1)); //タイトルが半角60文字を超える場合(レイアウト的に2行になる場合) if (strlen($zz[0]) > 60) { //タイトルを半角56文字目まで+「...」に変更 $zz[0] = substr($zz[0], 0, 56)."..."; } //「時間 告知の種類:<a href="URL" tar...>タイトル</a>」を配列$retに追加 $ret[$i] = "{$time[$i]} {$typ}:<a href=\"{$yy[1]}\" target=\"_blank\">{$zz[0]}</a>"; } //$iを0から$retの配列の長さより小さい範囲で(この場合0~4)動かし、ループ for ($i = 0; $i < count($ret); $i++) { //$retの$i番目を書き出す 末尾に改行タグ<br>とソースの改行\n追加 echo "$ret[$i]<br>\n"; } ?> ☆文法 <?php ?> phpプログラムの開始と終了を意味します。 fopen(読み込むファイル, モード) fclose(ファイルハンドル) fopen()でファイルを開きます。 モードは、"r"(読み込み)"w"(書き込み)"r+"(読み書き込み)です。 他にもありますけど、とりあえずはこのくらい知っていれば・・・。 fclose()でファイルを閉じます。 開いたものを閉じないとエラーになる可能性があるそうです。 ファイルハンドル(FH)というのは、fopen()の返り値($a = fopen()とやると$aがFH)です。 fgets(ファイルハンドル) fopen()で開いたファイルを1行ずつ読み込みます。 ファイルの終端に達すると、FALSEを返します。 array() 配列をあらわします。 phpの配列には2種類あって、javascriptとかでおなじみの連番配列は、 $array = array(値1, 値2, ...) 、$array[0] = 値1 と定義できます。 もう片方は連想配列といい、 $array = array(キー1=>値1, キー2=>値2, ...)、$array[キー1] = 値1 となっています。 count(配列) 配列の長さを返します。 要するに配列に何個要素があるかです。 array_push(配列, 値) 配列の最後に値を挿入します。 連想配列の場合も連番になってしまいます。 while (条件) { 実行内容 } プログラマーにはおなじみのwhileですね。 条件が真の間実行内容を繰り返すものです。 if (条件) { 真の場合の内容 } else { 偽の場合の内容 } これまた定番なif構文。 そのまま条件分岐を表します。 ifとelseの間にelseif (条件)をはさんで、最初の条件は偽だけど2番目の条件は 真の場合の処理をいれたりもできます。 for (初期設定; 条件; 増分) { 実行内容 } これもおなじみなfor構文。 初期設定をして、条件が真の間、増分をしながら繰り返すものです。 具体的には、初期設定に$i=0をいれて、増分に$i++($iを1だけ加算)、 そして条件「$iが○○以下」の間実行内容を繰り返すというのが一般的。 break whileやforなどのループを無理やり抜けるときに使うものです。 strpos(文字列, 検索文字) 文字列に検索文字がはいっていたら、その検索文字の最初の字までの文字数を 返すものです。 検索文字がなかったらFALSEを返します。 substr(文字列, 開始位置[, 文字数]) 文字列を開始位置で設定した位置から文字数分だけ切り取った値を返します。 文字数省略時は最後までです。 split(検索文字, 文字列) 検索文字があるごとに文字列を切って、配列にして返します。 javascriptにも同じのがありますね。 strlen(文字列) 文字列の字数を数えます。 半角字数でカウントするので、ひらがなや全角カタカナ、 漢字などは2文字でカウントされます。 getdate() 今の時間を連想配列で拾得します。 キーの値は、secondsで秒、minutesで分などで、0でタイムスタンプです。 ※タイムスタンプ・・・1970年1月1日からの秒数 mktime(時, 分, 秒, 月, 日, 年) 日付データからタイムスタンプを計算して返します。 // コメントアウトを表します。 その行だけ有効です。 \" 「"」をあらわします。 たとえば連想配列の時、$array["src="http""]なんてなると、"src="までで終わり、 後ろはなんなんだ、と解釈されるため、それを避けるために作られたもの。 上の場合は、$array["src=\"http\""]とします。 エスケープシーケンスと呼ばれる技法です。 echo 文字列 文字列をブラウザに書き出します。 一番単純なのになぜか一番最後^^; 注釈1 (*1) //$strという変数に、きのこ公式のhtmlを1行ずつ代入、それの繰り返し while ($str = fgets($purl)) { //この1行に<td width="438">という文字が入っていたら$data配列に追加 if (strpos($str, "<td width=\"438\">") != FALSE) { array_push($data, $str); } //この1行にwidth="61"という文字が入っているなら$date配列に追加 if (strpos($str, "width=\"61\"") != FALSE) { array_push($date, $str); } //$dataに4つ超のデータ(つまり5以上)が入っていればループ終了 if (count($data) > 4) { break; } } きのこのお知らせのページを1行ずつ読み込んでいきます。 そして、<td width="438">で始まる行は・・・、 <td width="438"><img src="http://static.nexon.co.jp/maplestory_3rd/home/icn_notice.gif" align="absmiddle"> <a href="board_content_list.asp?strboardid=maplestorynews&intidx=29402&intgotopage=1">接続障害解消のお知らせ</a> </td> となっています。 つまり、<td width="438">は、 ![]() △きのこのお知らせページ このテーブルの緑枠の部分の列のことを言っています。 幸いなことに、ねくそんは一番上だけにwidhを設定して他はしないという方法をとらず、 また他にwidh="438"の部分を作ったいなかったため、 こういうプログラムが作れたわけです。 他サイトのを作ろうとしている人なら、こういった何かしらの特徴、 特に企業物なら必ずあるはず(手動では限界があるから)なので、 そこを狙ってみると案外簡単に作れるでしょう。 <td width="438">がある行を読み込むと、$dataという配列に追加されます。 次の次の行を見てください。 この$dataという配列が5つの要素を持ったら ループを強制終了するようになっています。 つまり、トピックを5つしか読み込まない、すなわち5行表示ということです。 なので、ここの数字を変えるといくつトピックを読み込むのか変えれます。 ちなみに、間にあるwidth="438"の意味ですけど、これは・・・ <td width="61" bgcolor="#93bedd" class="colorfff" align="center">2008.07.24</td> こういう行がヒットするんです。 見てのとおり・・、 ![]() △この行! ですよね。 つまり日付データをいただくわけです。 これは$date配列に格納します。 注釈2 (*2) //$iを0から$date配列の長さより小さい範囲で(この場合0~4)動かし、ループ for ($i = 0; $i < count($date); $i++) { //「>」という字の次から10文字を$dstrに代入 $dstr = substr($date[$i], strpos($date[$i], ">") + 1, 10); //$dstrの前から4文字を$yearに代入 $year = substr($dstr, 0, 4); //$dstrの5文字目から2文字分を$monthに代入 $month = substr($dstr, 5, 2); //$dstrの8文字目から2文字分を$dayに代入 $day = substr($dstr, 8, 2); //この行の日付のタイムスタンプを拾得 $tsp = mktime($now["hours"], $now["minutes"], $now["seconds"], $month, $day, $year); //$expに$monthの1文字目を代入 $exp = substr($month, 0, 1); //$expが0なら月の十の位の0を白色にして非表示もどきに if ($exp == 0) { $month = "<font color=\"#ffffff\">0</font>" . substr($month, 1, 1); } //$dstrの8文字目から2文字分を$dayに代入 $exp = substr($day, 0, 1); //$expが0なら日の十の位の0を白色にして非表示もどきに if ($exp == 0) { $day = "<font color=\"#ffffff\">0</font>" . substr($day, 1, 1); } //その行の更新日時が今から3日以内なら if (($now[0] - $tsp) <= (3*24*60*60)) { //全体を赤文字に $time[$i] = "<font color=\"#ff0000\">{$year}年{$month}月{$day}日</font>"; } else { //そうでないならそのまま代入 $time[$i] = "{$year}年{$month}月{$day}日"; } } ここでは、まず$date配列を処理します。 トピックを5つもらったので、当然$dateも5つの要素を持つ配列のはずです。 しかし配列をすべて同時に処理することはできません。 なので、1つずつ動かすわけですが、ループ回数を変数に格納してループ処理 させてやれば1回定義するだけでどれだけ要素をもっていようがすべて処理できます。 なのでつかったのがfor構文。 ループ回数は$iのことです。 ここで$dateの正体を思い出してみましょう。 $dateは「width="438"」を含んだソースの行、すなわち・・・ <td width="61" bgcolor="#93bedd" class="colorfff" align="center">2008.07.24</td> こんなのが代入されているはずです。 そして今ほしいのは赤色の部分。 他はどうでもいい。 というわけで切り捨てます。 strpos($date[$i], ">")で赤文字の手前にある「>」までの字数、それに + 1すると 赤文字の位置ですね。 そこから10文字分切り取り、つまり赤文字全部です。 ネクソンは月日を0詰めで書いてくれていたので助かりました。笑 これで$dstrには赤文字の部分、「2008.07.24」が代入されています。 前から4文字、つまり「2008」を$yearに代入、5文字目から2文字分、 つまり「07」を$monthに、最後「24」を$dayに代入しています。 ここで急にタイムスタンプとかでてきてこんがらがりますねぇ。 だれでしょう、こんなわかりにくいプログラム組んだ人( この説明は後に回しますね。 次に、先ほどは助かったとか書いた0詰めですが、いざ表示するとなると邪魔・・・。 ということで、今度は先が0かどうかを確かめます。 年にはやる必要がないので、月と日だけ。 これは注釈見ればわかるでしょう。 ちなみに、なんで白文字とかいうややこしいことしてるかというと、 ただ単に文字の長さをそろえたかっただけです>< 最後に、オプションをつけたいと思います。 つまり、見ている現在から3日以内に更新された内容を赤文字表示して目立たせよう! ということで、必要になるのが今の時間と更新時間。 しかし更新時間は見てわかるように、日と月が0詰めだった場合、もはや数字では なくなっていて、とてもタイムスタンプ計算できる変数ではなくなっています。 なので先にタイムスタンプを計算してしまったわけです。 日付だけしか情報はないので、更新の時・分・秒は今の時間と同じものを使用。 今の時間(タイムスタンプ)は、この注釈の前の行で$nowに格納しました。 厳密にいうと$now[0]ですね。 ぁ、「文法説明なんて読み飛ばしたwww」って人のために補足しますね。 タイムスタンプ=1970年1月1日からの秒数のことです。 そして、タイムスタンプ単位、要するに秒単位での計算ですので、3日は・・・、 (3日×24時間×60分×60)秒です。 今のほうが更新時よりタイムスタンプは上なので、今から更新日を引いて、 その差が3日以内ならふらぐがたつわけです^^; 注釈3 (*3) //$iを0から$date配列の長さより小さい範囲で(この場合0~4)動かし、ループ for ($i = 0; $i < count($data); $i++) { //icn_noticeという文字列が含まれていれば if (strpos($data[$i], "icn_notice") != FALSE) { //$typに"お知らせ"を代入 $typ = "<font color=\"#00BFFF\">お知らせ</font>"; //icn_eventというry 以下同じなので省略 } elseif (strpos($data[$i], "icn_event") != FALSE) { $typ = "<font color=\"#F4A460\">イベント</font>"; } elseif (strpos($data[$i], "icn_update") != FALSE) { $typ = "<font color=\"#EE82EE\">アップデート</font>"; } elseif (strpos($data[$i], "icn_maintenance") != FALSE) { $typ = "<font color=\"#90EE90\">メンテナンス</font>"; } else { $typ = "不明"; } //$xxに$i行目のデータの「href="」からを代入 $xx = substr($data[$i], strpos($data[$i], "href=\"")); //「"」がある場所で文字列を区切り、配列として$yyに代入 $yy = split('"', $xx); //上で区切ったものの3番目の2文字目からを今度は"<"で区切る $zz = split('<', substr($yy[2], 1)); //タイトルが半角60文字を超える場合(レイアウト的に2行になる場合) if (strlen($zz[0]) > 60) { //タイトルを半角56文字目まで+「...」に変更 $zz[0] = substr($zz[0], 0, 56)."..."; } //「時間 告知の種類:<a href="URL" tar...>タイトル</a>」を配列$retに追加 $ret[$i] = "{$time[$i]} {$typ}:<a href=\"{$yy[1]}\" target=\"_blank\">{$zz[0]}</a>"; } お次は$data配列をいじります。 さて$dataの正体は・・・、 <td width="438"><img src="http://static.nexon.co.jp/maplestory_3rd/home/icn_notice.gif" align="absmiddle"> <a href="board_content_list.asp?strboardid=maplestorynews&intidx=29402&intgotopage=1">接続障害解消のお知らせ</a> </td> こんなのでしたよね。 やけに長いです。汗 今回いただきたい情報に赤字をつけました。 一番最初、icn_notice.gif、これはなんぞや、といいますと・・・、 ![]() △これ! のことです。 つまり告知の種類がわかります。 これは確認してみたところ4種類あり、 icn_notice.gif・・・お知らせ icn_event.gif・・・イベント icn_update.gif・・・アップデート icn_maintenance.gif・・・メンテナンス があるんです。 これで前半にやっていることはおわかりかなと。 strpos(文字列, 語句)は文字列に語句があった場合はその位置を返しますが、 なかった場合はFALSEを返す、つまりあったらFALSEは返ってこない、 そういう発想です。笑 次に、いらないものを切り飛ばしてわかりやすくしましょう。 ということで、href=の前までは切り飛ばし、 href="board_content_list.asp?strboardid=maplestorynews&intidx=29402&intgotopage=1">接続障害解消のお知らせ</a> </td> と、こうなりました。 ここで便利なsplitの登場です。 spli(キー, 文字列)で、文字列にキーがあったら そこで切っていって、配列にして返してくれるもの。 この場合は・・・、 「href=」 " 「board_content_list.asp?strboardid=maplestorynews&intidx=29402&intgotopage=1」 " 「>接続障害解消のお知らせ</a> </td>」 こうわかれますね。 見てのとおり、2番目に分かれたものは、そのままURLに使うことができます。 これで後は最後のタイトルだけです。 split('<', substr($yy[2], 1))ですから、今度は「<」で区切ることになります。 しかし、文字列にはsubstrがありますね。 yy[2]というのは3つ目にわけた、 「>接続障害解消のお知らせ</a> </td>」 のことです。 プログラムやったことない人はこんがらがると思いますけど、配列は0からすたーとなので、 0に1つ目、1に2つ目、2に3つ目がはいってます。 substrは文字列をある位置から切りとるもの、1文字目ってなってますが前述のとおりで、 1というのはわれわれのいう2文字目にあたります。 なので、「接続障害解消のお知らせ</a> </td>」を「<」で区切れ、ということ。 「接続障害解消のお知らせ」 < 「/a> 」 < 「/td>」 こうなりますね。 これでめでたく必要なものがそろいました。 後は組み合わせるだけです。 が、もしタイトルが長すぎると2行になってしまう可能性があります。 サイトのレイアウトにもよりますけど、わたしの場合はタイトルが半角60文字超えると 2行になるので、超えた場合は「○○○...」と省略するようにしました。 ちなみに、半角字数というのは、「abcd」といった文字は1文字、「あいうえ」は2文字のカウント。 時間の文字列は注2で解説したようにして$timeという変数に 告知の種類は$typという変数に urlは$yyの2番目の配列、つまり$yy[1]に タイトルは$zzという配列の最初、つまり$zz[0]に それぞれ格納されています。 後はこれを表示する文字列に合体すればいいので、
ちなみに、$timeが$time[$i]となっているのは、$timeも5行分の情報を持っている配列、 そして今やっているこの$dataの処理も5行分ある配列の処理で5回行われる、 そしてループ回数は$iですから、$time[$i]としてあげれば対応するというわけです。 この後は、これを5行分繰り返し表示して終了となります。 ▼実際のphpファイルのソースは・・・?
疑問に思えた方はすばらしいです。 というのも、上のphpだと・・・、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> とか、 <meta http-equiv=Content-Type content="text/html; charset=Shift_JIS"> とかはどこから沸いてきた、という話になりますからね。笑 phpはhtml埋め込み型といいました。 ウィキ先生が。 phpファイルのソースの全体図は・・・、 <!DOCTYPE .... <html><head>......</head> <body> <div ...> <?php ・・・・・・ ?> </div> </body></html> こんな構造になっています。 ここがphpの利点でして、他にこんなこともできます。 <?php if ($a==1) { ?> <a href="morning">おはようございます</a> <?php } elseif ($a==2) { ?> <a href="day">こんにちは</a> <?php } else { ?> <a href="night">こんばんは</a> <?php } ?> 「動的に」とはこういうことをいう・・・のかなぁ? よくわかんないです(ノ゚ロ゚)ノ⌒┻━┻ 要するに、上で示したphpファイル全体ソースの図のようにしてファイルを作り(当然メモ帳でもおっけー)、名前を「***.php」にして保存して、phpが使えるサーバーにアップすれば、簡単な自作トピックローダーが使えますよ^^; ほんとにトピックしか表示しないので、自サイトで使うときはインラインフレームでも使って表示してくださいな。 ちなみに、文法の上にあるphp部分の全体図のところ、コピペすればちゃんと説明部分はコメントアウトしてあるので動きますよ。笑 講座っぽくしながら、結局は素材っぽい感じですけど、一応"講座"のつもりなので、完全にコピペしようがご自由に使ってください。笑 著作表示とかもぜんぜんいらないです^^/ でも、気の利く人はphpのソースのした、</html>の下あたりにでも、HTMLのコメントアウト(<-- -->)使って影でこっそりリンクしてくれるとうれしいです。殴 トピックリーダー使いたい人ならソースを見てくれる・・・かもしれないから! 2008年07月19日 (土) 【コメント:12通】
どうも雨女が通ります。 こんばんは。 気分で更新、もう日付変わりそうですけど・・・。 火曜日だったかな、それと木曜日、そして今日、帰りに土砂降りの雨が(木曜日は家でて1分後からだけど)直撃して、当然傘もなくびしょぬれになったわけですが・・・。 水曜日にはリンカーンの暗唱テスト追試くらうわプリント忘れ物するわ、今日は木曜日の雨で靴ぬれてたので何時だか買っていまだにはいたことなかった靴はいていったら靴ずれして皮むけるわと散々で・・・。 とりあえず、絆創膏は常時どこかに携帯しておくといいことがあると思う。 昼休みに生協で買ったけど、つける前なんてまともに歩くことすらままならなかった・・・。 続きを閉じる 珍しくSSも何もない日記になりそうです。 ネタがないわけで・・・。 今回は順番入れ替えて東方ネタから。 ▼紅魔卿 マスパでノーマルクリア、今はマスパでエキストラをぼちぼち、 レザマリでノーマルスコア狙いもぼちぼちといった感じ。 エキストラは、とりあえずフォーオブアカインドだっけ、あれまでは攻略できた。 ▼風神録 次のノーマルは風神録、とかいいつつぜんぜんやってないですね・・・。 ▼永夜抄 その代わりにやってるのがこれ。 スラの影響でしょうか。 スペルプラクティスがあるのがとてもうれしいです。 初期残機7とかできますしがんばればいけそうなんですけど、 4面から崩れます。 4面ボスが強い・・。 ▼妖々夢 気分でこっちやってたりもします。 ほんとに気分で。 妖々夢はイージーすらノーコンテニューできたことがなく・・・。 ということでイージーやってますけど、4面と6面で崩れる・・・。 ▼緋想天 疲れたときの緋想天、でも最近ぜんぜんやってないなぁ・・。 要約すると、とりあえずまだ紅魔卿メインになってる気がするけど、そのときの気分ということです。 最後にきのこネタ。 テスト近いということできのこまで手が回らない(いつのまにか 東方>きのこ になっちゃいましたね)のでINすらあまりしてないのですが・・・。 別にメルためようとしているわけでもないのに今のご時世なぜかメルいっぱい。 いっぱいっても、300か400Mくらいしかないですけど、それでもちょっと前まではもったこともない大金だったんですよね。 真剣にためてれば1gとかいってたんじゃないでしょうかねぇ。 1gなんてあっても買うものもありませんが。笑 何時だか、平日ですけど長と骨狩ってて、10時過ぎて終わったとき、 長が帰還して、たこが切れてないというセコい理由で一人狩ってたらでたSE30。 売ろうにもエルフもなければ、前述の通り使い道もないわけで、しかし困ったことにSE30ついてない弓弩さんは知り合いに2人いて。 でゅーさんとちょべさんなわけですが、でゅーさんはホンテ固定もあるし、今回は固定もなく受験で時間すらないちょべさんに・・・。 で、今日そのSE祭りがあったわけで久しぶりにINしたわけです。 もう日付変わったので昨日ですけど。 最近白さんには負けるけどわたしも疫病神的な能力を発揮しかけていたのですごく心配だったわけですが、なんとか宿ってくれて一安心。 聞くところによると、そーれーくんがその前に104?よーとーと14盾作ったとかいうじゃないですか、長もなんか成功させたらしくて、なんか今日風速運がいいらしいという話で。 で、INしたもういっこの目的、泣き声求めてウィスプへ。 ジョイパバグってくれててこずりましたけど、1墓してレッド倒して。 ホンテ固定入ってるくせに0%ですウィスプさん。 さすがチケなし囮専門墓しすぎのトライアングルです。 ほんとは材料も集めときたかったけど、ジョイパバグってあきらめて。 マーズさんがINT2他1のネックレスに卵張ってほしいってことで、菜凛と氷花で3つ張れたので張ってあげることに。 他人の強化って緊張しますけど、今日は風速の運がついてくれたので無事3連しました^^; きのこは現在市場崩壊しちゃってますけど、現実もそうなりかけてますねぇ。 わたしは崩壊する前も後も強化はめったにしてませんけど、他の人はどうでしょうかねぇ。 強化が楽しい、っていってよく強化する人は変わらずみたいですけど、とりあえずわたしは強化はあまり好きじゃないかなぁ・・。 どっちかっていうと、むしろめんどくさいっていう感想の方が強かったり・・・。 今日このほかにも、1週間前にとまに、何回やって出たのか知らないえりまきと交換してもらったHP90残2の3連イヤリングがあって、それ60*2しようとしたわけですけど、書持ってくるのに時間かかったりいろいろで・・。 結果いうと最初宿って次スカりましたけど、105あれば十分です。 というより捨ての60宿りすぎでしたね、やっぱ運いいみたいです。 わたしの場合、捨て書でも宿らなすぎってことは本命もスカるってことで、捨て書宿るときは本命も結構宿ってくれるんですけど、今回は半々でしたね。 とはいえ、マーズさんの60%が3連しただけよかったです。 ちょべさんもSE宿ってくれましたし、なんかこういう、他人の強化に深くかかわって成功したときはとてもうれしくなりますね。 自分が成功するよりうれしいかもしれません。笑 その分失敗するとry ということになりますけど。苦笑 がんばって、文量だけは 東方<きのこ になりましたけど、眠いながら書いてるので内容が支離滅裂かも・・・。汗 2008年07月14日 (月) 【コメント:7通】
やりたいことをやる、最近そんな感じ。 こんばんは。 さて恐怖のテストラッシュが近づいてまいりました。 講義ぜんぜん聞いてないから怖いんです・・・。 英語は演習のほうがテストあって、これは出るものは簡単で(文章は配られているというか、講義でやったもの)すが、量が・・・。 プリントそのまま持ち込み可(訳とか書いてあろうが問題なし、むしろ辞書も持ち込み可だし)という、勉強やったもの勝ちなシステムなのでやるしかないのです・・。 もう一個の外国語、わたしは中国語とってるわけですが、これも単語とかもうぜんぜん覚えてなくて末期。 理系の線形代数・微積分・統計は少しやれば大丈夫だとは思うけど、講義聴いてないからまったくやらなかったら死亡フラグ、物理と化学は少しまじめにやらないとまずい・・・。 テストがあるのは確かこれだけ。 来週からラッシュ来るんでそろそろIN減らすつもり。 続きを閉じる きのこ最近INしてる割合が少なく・・ry ![]() △気分でMC 最近狩りしてないですねぇ・・。 夏休み気合狩りできなくなってたりして^^; ![]() △久しぶりにヒーローで いつも投げでしたしねぇ、戦闘員だと。 夜チケ風花にかわったというのもあって、長の計らいで実現( アバ変わってますけど、これじゃ見えない罠。 ということで、困ったときのシュミレーター。 ![]() △Special Thanks Went My Wey これ・・・、なぜか脳内で ![]() △スペルプラクティスからリグル・ナイトバグ これとかぶってしょうがないんです、全身と羽が。 わたしだけでしょうか・・・。 せっかく東方が出てきたのでこのままスライドしましょうか。 きのこネタもう尽きたなんて口が裂けてもいえませんからね。 やっとのことで、紅魔卿ノーマルをノーコンテニュークリアしたわけです。 今までマスパメインで使ってたわけですが、クリアしたのはレザマリという。 レザマリに変えた理由はただひとつ、パチュのスペルが簡単だから。 とかいいつつそのときはスペルボーナス1個しか取れなくて涙目だったわけですが・・。 ■ △東方持ってる人だけ見れるリプレイという名の簡易動画なりー 体験版でも製品版のリプ見れたはず・・・、3面までならry とりあえず上に入ってるものは、 ・レザマリノーコンクリア ・マスパ寸前ぴちゅん ・パチェで崩れたけどスコアが(わたしとしては)無駄にすごかったマスパ ・まだパターン決まってないときのエキストラ (妹様のレーヴァテインでぴちゅん、ちなみに妹様初めて拝んだ時のリプです) それと、 ・風神録(イージーで)ノーコンクリア(魔理沙C) とりあえずイージーでもクリアできたときはちょっとはしゃいだ。笑 だってあれコンテニューした時点で神奈子様無理ゲー・・。 一度コンテニューから倒せましたけど、何度やったことやら・・・。 ![]() △天流「お天水の奇跡」 これのかわし方募集・・。 ラストの「マンテン・オブ・フェイス」はプラクティスで一度スペルボーナスだせたんですけどねぇ・・。 これだけはかわし方すらわからない罠。。。 紅魔ノーマルクリアできましたし、次は紅魔エキストラと紅魔マスパでのノーマルをやりながら、風神録のノーマルでも狙ってみましょうか。 ![]() △魔理沙Cタイプ こんな芸当もできるのがCタイプなので、パターン作っちゃえば楽だと思うんです。 パターン作れば・・・。 ちなみにリプのやつはパターン以前に構成すらほぼ覚えてない状態です。笑 ただ、イージー6面だけはほぼ完璧にパターン化されております、コンテニューしながらKIAIで神奈子様倒したときにパターン化されたおかげで。 久々にやったのでリプでは若干狂ってますが・・・。 最後におまけ。 二週間前くらいに約束して、いまさらかって話なんですけどねぇ・・。 ![]() △ぴっぴかちゅう! 何か雰囲気違う気が・・・・。 アクションとってる絵なんてぜんぜん描いたことなかったおかげで、下書きだけだと今までのイラストの中では一番時間かかりましたねぇ・・・。 微積分の講義1回完全につぶしても完成せずに、今日のホンテのDT待ち時間にぎりぎり完成させたという作品です。 その割りにいろ塗りはそこまで時間かけてませんが・・・。 2008年07月06日 (日) 【コメント:6通】
どこかの誰かさんみたいに期末と間違えたわけではないです。 こんばんは。 何が末期かというと・・・。 水曜日情報あったんですが、やった内容はいまさらながらのHTML。 実際課題も簡単だったので、授業自体が速く終わったんです。 その後教室には暇人が残ってたようで(わたしはやり残しの課題をやっていたけど)、みな自由にやってたんですが・・・。
| HOME |
| ||||||||||||||||||
copyright © 2006-2008 かぜのこもりうた all rights reserved.
powered by FC2ブログ Material by web material * Essence |