- 締切済み
日記の指定日のみ表示
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- urakids
- ベストアンサー率77% (7/9)
#!/usr/bin/perl use CGI; my $q = new CGI; &main(); sub main { my ($mode, $action, $ymd, $w, $f, @file); #パラメータ取得 $mode = $q->param('mode'); $action = $q->param('action'); $ymd = $q->param('YMD'); $w = $q->param('w'); #ファイル名生成 $f = $ymd . "\.txt"; #ファイル生存確認 if (-e $f) { #ファイル読み込み open(FILE, $f) or die; eval{flock(FILE,1);}; @file = <FILE>; close(FILE); } #後は原本通り foreach my $diary (reverse @file) { my ($day,$date,$year,$month,$subject,$descrip,$mynum) = split(/\,/, $diary); if($diary =~ /$mynum/){ print qq|$date $subject<br>$descrip<br><br>\n|; } } } とりあえず書いてみたのですが、書いて思ったのが、 いまいち主旨が見えないと言うか、どうしたいのだろうと思うのですよ。 まず、 私の環境では if($diary =~/'302'/){ print qq|$date $subject<br>$descrip<br><br>\n|; } でも正常に動きませんでしたが、これは環境の違いかもしれないので置いておいて、 > if($diary =~/'$mynum'/){ で引っかからない部分ですが、 これは検索部分を'で括っているので、 $diary内から"$mynum"という文字列を検索している事になります。 なので引っ掛からないのは当然かと。 それとは別に、これの直前で > my ($day,$date,$year,$month,$subject,$descrip,$mynum) = split(/,/, $diary); した上で if($diary =~/$mynum/){ をやれば全てが引っ掛かると思うのですが、ここらへんがイマイチ何をしたいのか見えない所。 引っ掛けるだけなら if ("$date$day" eq $ymd) { #処理 } もしくはパラメータから通し番号を受け取って #改行コードの削除 $mynum =~ tr/\r\n//d; if ($mynum eq $nid) { #処理 } なんて書けば良いと思いますがどうでしょう?
- Tacosan
- ベストアンサー率23% (3656/15482)
え? $diary =~/'302'/ でマッチしますか? シングルクオートが余計なので, どの行にもマッチしないと思うのですが. でも, 「8月1日分のみ表示する」なら $month==8 && $day==1 という条件でいいはずなので, その query から YMD がわかれば後はなんとでもなるはずですよ. YMD が変数 $YMD にあると仮定すると my ($yyyy, $mm, $dd) = ($YMD =~ /(\d{4})(\d{2})(\d{2})/); で $mm に月が, $dd に日が入ります. で, if ($month == $mm && $day == $dd) { print それ } という形にすればいい. ど~しても正規表現でマッチさせたいなら if ($diary =~ m!/$mm/$dd/!) { print それ } くらい. 「通し番号で探す」必然性は全くないと思うのですが....
- Tacosan
- ベストアンサー率23% (3656/15482)
えぇと, どのようにやって「できなかった」のかよくわかりませんが, 正規表現で書くのが普通かな. 例えば one-liner で perl -ne 'print if m!/08/01/!' とか. split + eq でもいいけど.
関連するQ&A
- 無料日記について
無料日記サービスで以下の条件にあう物をご存知でしたら教えて下さい。 目次のようなページに各日のタイトルが表示されるような物。 (日記本文がダーッと表示されずワンクッションほしいので。「エンピツ」というサービスもような感じで) できれば1日の文字制限が1000字以上のもの。 アイコンやデザインは可愛くなくてもいいです。シンプルな方がいいです。 宜しくお願いします。
- 締切済み
- その他(インターネット・Webサービス)
- フォルダ内の最新ログの取り出し方
log(フォルダ) ┣200907.txt ┣200906.txt ┣200905.txt ┗num.txt 日記のログなのですが、logフォルダの中には上記のようなデータが有り、現在はファイルを開くとき下記のプログラムで開いています。 open(FILE, './log/200907.txt') or die "$!\n"; my @file = <FILE>; close(FILE); これを、新しい月の「200908.txt」が作成されたとき、自動的に「200907.txt」→「200908.txt」に更新する方法を教えていただけないでしょうか? あと、この日記は記事毎にNo.が割り振られており「num.txt」には、最新ナンバー数字のみ記録されてます。
- ベストアンサー
- Perl
- 日記帳・10年日記
最近 5年日記か10年日記をつけようかなと思い、どちらにしようか迷っています。 ただ、日付入りのものだともう4月過ぎだし3ヶ月程白紙になってしまうので、我慢して来年から始めるか、それとも日付なしのものを購入して 近いうちに始めるか 、ちょっと迷っています。 もし5年日記や10年日記をつけている方がいたら、日付入りのものと日付なしのもの どちらが良いとか、5年日記 10年日記 どちらがおすすめとか あれば教えて頂きたいです。 あまりキャラクターものもないし、見た目はどれもあまり変わらないため、5年 10年どちらがいいか、日付のありなし等、使い勝手の良し悪しがあればお聞きしたいなと思い質問しました。 よろしくお願いします。
- ベストアンサー
- その他(生活・暮らし)
- MySQLで日記を作成
MySQLのDBに簡単な日記を保存したいのですが、 データのレコード方法のアドバイスをお願いします。 記録する項目は、日付、題名、本文としたときを想定します。 DBに既に8/1の日記、8/3の日記、という順にデータがレコードされているとします。 今、8/2の日記をレコードしようとします。 このときの考えられる記録の処理で、 1.DBの末尾に8/2のデータを記録する。 出力の際に、日付でソートする。 2.DBに既に登録してあるデータを日付でソートし、8/1、8/2、8/3の順で記録する。 出力はデータの順番通り。 どっちの方がスマートでしょうか。 アドバイス、お願いします。
- ベストアンサー
- MySQL
- [Word]条件により表示・非表示を切り替えたい
ご覧いただきありがとうございます。Wordで、下記のように「日付が入力 されていなかったら(案)と表示する」ということはできるでしょうか。 ご存じの方、よろしくご教示お願いいたします。 ************************************************ (案)←表示する 平成 年 月 日 (日付が入力されていない↑) ・ ・ (本文) ************************************************ ←なにも表示しない 平成18年11月19日 (日付が入力されている↑) ・ ・ (本文) ************************************************
- ベストアンサー
- オフィス系ソフト
- FC2のブログで日記の日付表示を日記の初めにしたい
FC2のブログで日記の日付表示を日記の初めにしたいのですが、どうすればいいか教えていただけますか? 今はその日の文章の最後に日付、コメント数などが表示されます。 ブログ初心者のため、わかりやすく説明していただけるとありがたいです。 よろしくお願いします。
- ベストアンサー
- ブログ
- 日付28日、30日、31日、月ごとに自動表示させたい。
日付28日、30日、31日、月ごとに自動表示させたい。 1、月によって28日、30日、31日と自動表示させたいです。 2、(添付画像:カレンダー)「D2」1日を基準に 「年」「日付」「曜日」「祝日」を自動表示とセルに条件つき書式を使って 色を付けたのですが、その下のセルにも月が変わるごと自動で色をつけたいです。 名前(1番~15番)の列(日付、曜日、祝日)です。 上記の2点教えて下さい。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- メモソフト、もしくは日記ソフトを探しています。
メモソフト、もしくは日記ソフトを探しています。 欲しい機能は ・オフラインで使える ・検索機能がある ・過去の日付(2001年など)を楽に入力でき、日付順に並ぶ ・1ヶ月分のタイトルだけ表示などの機能がある ・カテゴリ分け、複数タグを付けられる。 ・できればフリーソフト 機能的にはブログにパスワードをつけてプライベートで使うのが 一番あっているのかもしれませんが、重いので ローカルで使えるソフトがあれば教えて下さい。 よろしくお願いします。
- ベストアンサー
- フリーウェア・フリーソフト
- テーブルの表示制限?
日記サイトを作っています。 PHP+MySQLで投稿から表示まで出来たので こんどはデザイン面を作ろうと思っています。 日記の内容が増えてくると見るほうも面倒になると思うので タイトルと日付だけを表示させて「続きを読む」ボタンを押すとズラっと本文が表示される。 というような方法をとりたいのですが たとえばタイトル、本文、日付の項目でテーブルを作って ボタンがクリックされたときに本文を表示する。 というのはJavascriptで可能でしょうか? Dreamweaverの体験版を使ってみたのですが、WEBページ上に配置されている記事を 見ている人が自由に配置変更できる「レイヤーのドラッグ」 という機能があったのできっと今回のような処理も Javascriptでできるのでは?とおもって質問することにしました。 アドバイスよろしくおねがいします。
- ベストアンサー
- JavaScript
- 過去ログ、タイトル一覧はつけられないの?
シーサーブログを利用しているのですが、 ○○年××月の過去ログを一覧表にして表示させたいのです。 ○○年××月をクリックすると、 ○○年××月に書いた日記すべての 日付と「タイトル」を表示させたいのです。 が、できるのかどうかすら、わかりません。 どなたか、教えていただけませんか? よろしくお願いします。
- ベストアンサー
- ブログ
補足
ご回答有難うございます。 「できなかった」の内容なのですが ↓こうすれば8/1のみを表示することが出来ます。 foreach my $diary (reverse@file) { my ($day,$date,$year,$month,$subject,$descrip,$mynum) = split(/,/, $diary); if($diary =~/'302'/){ print qq|$date $subject<br>$descrip<br><br>\n|; } } ↓でも、この表現ではできません。 if($diary =~/'$mynum'/){ (日記の通しナンバーはすべてに振られてあるので、全部の日記が表示されてしまいます。) ↓$mynumの値を○○の部分に代入する事ができないんです。 if($diary =~/'○○'/){ cgiの後ろに「diary.cgi?mode=main&action=view&YMD=20090801&w=1」等をつけて表示する方法は、検索しても本を調べてもやり方が書かれておらず、関係ありそうな部分を抜き出して「1ページにいくつ表示するか&html部分&次ページへのリンク等」組み込んでみましたがダメで、行き詰ってしまいました。 日記なので、プログラムに直接日付などを書かずに表示がしたいのですが、どのように勉強すればいいのかも分からなくなってしまいました。