とあるディレクトリ以下のファイルのURLをすべて取得する。
こんな場面、あると思います。
PHP4もPHP5も共通で使えて、簡単で、早くてっていうコードを探しておりました。
自分でもいろいろ試行錯誤して作ってみたので晒します。
といってもたいしたこと無いですが、一つはPHPに搭載のglob関数を使うもの、もう一つはLinuxコマンドを実行する方法です。
2011年12月19日月曜日
2011年11月29日火曜日
[PHP]とあるファイルの文字コードを判定する
PHPで文字コードの判定を行う際、mb_detect_encodingをよく使います。
ベンリなんですが、いまいち判定の精度がよくありません。
それで、PHPに頼るのはやめて、linuxコマンド直打ちを利用します。
利用するコマンドは、「nkf」です。
以下のページを参照しました。
$file に調べたいファイルのパスが入っているとして、
いままで、ファイルを全部読み込んでmb_detect_encodingしてとか、
ファイルの扱いに関しちゃPerlがいいでって思い、perlスクリプトをどうやって使おうか迷ってました。
とても楽チンに解決できてとても、いいわぁ,,,
ベンリなんですが、いまいち判定の精度がよくありません。
それで、PHPに頼るのはやめて、linuxコマンド直打ちを利用します。
利用するコマンドは、「nkf」です。
以下のページを参照しました。
テキストファイルの文字コードを調べるには(nkf編) - @IT http://www.atmarkit.co.jp/flinux/rensai/linuxtips/980nkfguess.html
これを流用します。以下のように、nkfコマンドに--guessオプションを指定すれば文字コードを調べられる。
$ nkf --guess /media/winxp/test.txt
ISO-2022-JP
$ nkf --guess /media/winxp/test2.txt
Shift_JIS
$ nkf --guess ~/test3.txt
UTF-8
$file に調べたいファイルのパスが入っているとして、
$enc = shell_exec('nkf --guess ' . $file);とすれば、$encにそのファイルの文字コードが入ってやってきます。
いままで、ファイルを全部読み込んでmb_detect_encodingしてとか、
ファイルの扱いに関しちゃPerlがいいでって思い、perlスクリプトをどうやって使おうか迷ってました。
とても楽チンに解決できてとても、いいわぁ,,,
2011年8月16日火曜日
タイムゾーン変換プログラム
これいいです。
PHPでデスクトップアプリを作成できるツールを発見しましたので、テストを兼ねてサクッと作りました。
ちっさなオレオレツールを作るのには激しく便利な予感,,,
プログラムはexeを実行すればわかるでしょう。
テストなので対象のタイムゾーンは少なめです。
起動すると上のテキストボックスに、現在の時刻が表示されます。
変換対象の時刻(海外の時刻)を入力し、タイムゾーンを選び変換。
下に日本時刻に変換して表示されます。
ダウンロードする!
exeとdll両方ダウンロードして適当なフォルダに保存してください!
便利なツールを公開してくださっているヒラタさんに感謝。
ヒラタクリエイト - Hirata-Create
http://hirata-create.lar.jp/
PHPでデスクトップアプリを作成できるツールを発見しましたので、テストを兼ねてサクッと作りました。
ちっさなオレオレツールを作るのには激しく便利な予感,,,
プログラムはexeを実行すればわかるでしょう。
テストなので対象のタイムゾーンは少なめです。
起動すると上のテキストボックスに、現在の時刻が表示されます。
変換対象の時刻(海外の時刻)を入力し、タイムゾーンを選び変換。
下に日本時刻に変換して表示されます。
ダウンロードする!
exeとdll両方ダウンロードして適当なフォルダに保存してください!
便利なツールを公開してくださっているヒラタさんに感謝。
ヒラタクリエイト - Hirata-Create
http://hirata-create.lar.jp/
2011年7月18日月曜日
[GAS] dailySummary関数について説明 ~今日の予定をGoogleカレンダーから取得しメールする~
メインのコードになります。
CalendarApp.getAllOwnedCalendars()で、所有するすべてのカレンダーを取得します。
getData()にカレンダー名を渡し、その日の予定をゲッツ。
MailApp.sendEmailで、全部のまとめをメール送信する。
じつはこのスクリプトを使わなくても、その日の予定をメールしてくれる機能は、デフォルトで存在します。しかもグラフィカルでわかりやすい,,,
ただ、通知する時間を変更したり、送信先を変えたり柔軟に対応できるので公開しました。いやぁ、プログラムってほんっとにいいもんですね。
function dailySummary(){
var r = CalendarApp.getAllOwnedCalendars();
var num = r.length;
var allText = "";
for(var i = 0; i< num ; i++){
var g = r[i].getName();
allText = allText + getData(g);
}
//メール送信部分
var to = "(任意のメールアドレスを入れてください)";
var subject = "[dairy]本日の予定";
allText = "★本日の予定一覧です。\r\n" + allText;
MailApp.sendEmail(to, subject, allText);
}
CalendarApp.getAllOwnedCalendars()で、所有するすべてのカレンダーを取得します。
getData()にカレンダー名を渡し、その日の予定をゲッツ。
MailApp.sendEmailで、全部のまとめをメール送信する。
じつはこのスクリプトを使わなくても、その日の予定をメールしてくれる機能は、デフォルトで存在します。しかもグラフィカルでわかりやすい,,,
ただ、通知する時間を変更したり、送信先を変えたり柔軟に対応できるので公開しました。いやぁ、プログラムってほんっとにいいもんですね。
function dailySummary(){
var r = CalendarApp.getAllOwnedCalendars();
var num = r.length;
var allText = "";
for(var i = 0; i< num ; i++){
var g = r[i].getName();
allText = allText + getData(g);
}
//メール送信部分
var to = "(任意のメールアドレスを入れてください)";
var subject = "[dairy]本日の予定";
allText = "★本日の予定一覧です。\r\n" + allText;
MailApp.sendEmail(to, subject, allText);
}
2011年7月13日水曜日
[携帯] 各社間SMS開通!
友人(ソフトバンク)からCメールが届き初めてそんなことになっていると気づきました。
料金はどうなっているのか、簡単にまとめましたので、備忘録的に晒し。
イーモバイル以外は送信3.15円、受信無料が多いですねぇ。
DOCOMO
http://www.nttdocomo.co.jp/service/communication/sms/charge/index.html
送信:1回あたり3.15円(送達通知の有無に関わらず)
受信:ショートメッセージの受信は無料です。
au
http://www.au.kddi.com/cmail/index.html
送信料:3.15円/回 (税込)
Cメール受信:0円
softbank(ホワイトプラン)
http://mb.softbank.jp/mb/price_plan/3G/white_plan/#price-system
ソフトバンク同士(送受信無料)
それ以外
送信:3.15円/通
受信:無料
イーモバイル
http://emobile.jp/charge/smartplan.html
送受信:SMS 2.1円/通
無料通話分が適用されるキャリアもあるのでご参考までに。
料金はどうなっているのか、簡単にまとめましたので、備忘録的に晒し。
イーモバイル以外は送信3.15円、受信無料が多いですねぇ。
DOCOMO
http://www.nttdocomo.co.jp/service/communication/sms/charge/index.html
送信:1回あたり3.15円(送達通知の有無に関わらず)
受信:ショートメッセージの受信は無料です。
au
http://www.au.kddi.com/cmail/index.html
送信料:3.15円/回 (税込)
Cメール受信:0円
softbank(ホワイトプラン)
http://mb.softbank.jp/mb/price_plan/3G/white_plan/#price-system
ソフトバンク同士(送受信無料)
それ以外
送信:3.15円/通
受信:無料
イーモバイル
http://emobile.jp/charge/smartplan.html
送受信:SMS 2.1円/通
無料通話分が適用されるキャリアもあるのでご参考までに。
2011年7月9日土曜日
[GAS] getData関数について説明 ~今日の予定をGoogleカレンダーから取得しメールする~
2.それぞれのカレンダーで登録された予定を取得
マイカレンダーを3つ作成しています。
1.デフォルト
2.2番目作成
3.3番目作成
わかりやすい名前で作っています。
このうちのどれかのカレンダーの名前を渡されたときに
そのカレンダーの今日の予定を取得し、まとめてリターンをします。
まずはコード掲載
function getData(name){
//開始時間を設定
var d1 = new Date();
d1.setHours(0);
d1.setMinutes(0);
d1.setSeconds(0);
//終了時間を設定
var d2 = new Date();
d2.setHours(23);
d2.setMinutes(59);
d2.setSeconds(59);
if (name != "" & name != "cancel"){
var cal = CalendarApp.openByName(name);
var data = cal.getEvents(d1,d2);
var num = data.length;
var allText = ""; //すべてのテキスト
var s = ""; //開始時間
var e = ""; //終了時間
var t = ""; //予定のタイトル
var d = ""; //予定の説明
var i = 0;
allText = "■" + name + "\r\n\r\n";
for(i = 0; i< num ; i++){
if (data[i]) {
s = "・" + t2c(data[i].getStartTime()) + "~";
e = t2c(data[i].getEndTime()) + "\r\n";
t = " " + data[i].getSummary() + "\r\n";
d = data[i].getDescription();
if(d){
d = " " + d + "\r\n";
}
allText = allText + s + e + t + d + "\r\n";
}
}
return allText;
}
}
~コード解説~
予定を取得するのは、「getEvents(d1,d2)」になります。
d1からd2までの時間の予定を取得します。
今日すべての予定なので、開始時間は0:00、終了時間は23:59にしています。
getEventsで取得したイベントのデータオブジェクトから、各種のデータを取得します。
イベントの各種データは以下のメソッドで取得できます。
開始時間→getStartTime()
終了時間→getEndTime()
タイトル→getSummary()
説明→getDescription()
時間に関しては前回説明した、t2c関数で任意のフォーマットに変換しています。
allTextにデータを追加していき、そのカレンダーから今日の予定をすべて取得したらリターンするようになっています。予定がなくても「予定なし」の意味を込めてカレンダー名のみリターンされます。
マイカレンダーを3つ作成しています。
1.デフォルト
2.2番目作成
3.3番目作成
わかりやすい名前で作っています。
このうちのどれかのカレンダーの名前を渡されたときに
そのカレンダーの今日の予定を取得し、まとめてリターンをします。
まずはコード掲載
function getData(name){
//開始時間を設定
var d1 = new Date();
d1.setHours(0);
d1.setMinutes(0);
d1.setSeconds(0);
//終了時間を設定
var d2 = new Date();
d2.setHours(23);
d2.setMinutes(59);
d2.setSeconds(59);
if (name != "" & name != "cancel"){
var cal = CalendarApp.openByName(name);
var data = cal.getEvents(d1,d2);
var num = data.length;
var allText = ""; //すべてのテキスト
var s = ""; //開始時間
var e = ""; //終了時間
var t = ""; //予定のタイトル
var d = ""; //予定の説明
var i = 0;
allText = "■" + name + "\r\n\r\n";
for(i = 0; i< num ; i++){
if (data[i]) {
s = "・" + t2c(data[i].getStartTime()) + "~";
e = t2c(data[i].getEndTime()) + "\r\n";
t = " " + data[i].getSummary() + "\r\n";
d = data[i].getDescription();
if(d){
d = " " + d + "\r\n";
}
allText = allText + s + e + t + d + "\r\n";
}
}
return allText;
}
}
~コード解説~
予定を取得するのは、「getEvents(d1,d2)」になります。
d1からd2までの時間の予定を取得します。
今日すべての予定なので、開始時間は0:00、終了時間は23:59にしています。
getEventsで取得したイベントのデータオブジェクトから、各種のデータを取得します。
イベントの各種データは以下のメソッドで取得できます。
開始時間→getStartTime()
終了時間→getEndTime()
タイトル→getSummary()
説明→getDescription()
時間に関しては前回説明した、t2c関数で任意のフォーマットに変換しています。
allTextにデータを追加していき、そのカレンダーから今日の予定をすべて取得したらリターンするようになっています。予定がなくても「予定なし」の意味を込めてカレンダー名のみリターンされます。
[GAS] t2c関数について説明 ~今日の予定をGoogleカレンダーから取得しメールする~
3.時間をフォーマットに沿って表示
いきなり順番無視ですが、簡単なところから解説します。
といってもこの部分はそのままですが、取得した日付データを
任意のフォーマットに変えてリターンします。
function t2c($t){
return Utilities.formatDate(new Date($t),"JST","HH:mm");
}
Utilities.formatDateの解説
以下の引数を設定します。
Utilities.formatDate(
日付の元データ,
タイムゾーン,
フォーマット
);
上記の例であれば以下の内容となります。
日付のデータとして→Fri Jul 08 19:00:00 PDT 2011 (←引数で与えられた日時)
タイムゾーン(日本時間を指定)→JST
時間表示→HH:mm
リターン(日本時間 24時間表記)→11:00
カレンダーから取得した日付データを、任意の形式で表示する時に利用します。
いきなり順番無視ですが、簡単なところから解説します。
といってもこの部分はそのままですが、取得した日付データを
任意のフォーマットに変えてリターンします。
function t2c($t){
return Utilities.formatDate(new Date($t),"JST","HH:mm");
}
Utilities.formatDateの解説
以下の引数を設定します。
Utilities.formatDate(
日付の元データ,
タイムゾーン,
フォーマット
);
上記の例であれば以下の内容となります。
日付のデータとして→Fri Jul 08 19:00:00 PDT 2011 (←引数で与えられた日時)
タイムゾーン(日本時間を指定)→JST
時間表示→HH:mm
リターン(日本時間 24時間表記)→11:00
カレンダーから取得した日付データを、任意の形式で表示する時に利用します。
登録:
投稿 (Atom)
ザ・シークレットサービス
大層ななまえですが、選択した文字列をシークレットウインドウ内で、 Google検索するというものです。 https://docs.google.com/open?id=0B58uK3aQr15IM0ItWk1WVnFUWnVleXJVWEhqUktCdw 1...
-
2.それぞれのカレンダーで登録された予定を取得 マイカレンダーを3つ作成しています。 1.デフォルト 2.2番目作成 3.3番目作成 わかりやすい名前で作っています。 このうちのどれかのカレンダーの名前を渡されたときに そのカレンダーの今日の予定を取得し、まと...
-
PHPで文字コードの判定を行う際、mb_detect_encodingをよく使います。 ベンリなんですが、いまいち判定の精度がよくありません。 それで、PHPに頼るのはやめて、linuxコマンド直打ちを利用します。 利用するコマンドは、「 nkf 」です。 以...
-
これいいです。 PHPでデスクトップアプリを作成できるツールを発見しましたので、テストを兼ねてサクッと作りました。 ちっさなオレオレツールを作るのには激しく便利な予感,,, プログラムはexeを実行すればわかるでしょう。 テストなので対象のタイムゾーンは少なめです。 ...