[PHP]PEARを使わない添付ファイル付きメール送信クラスを公開


PEARの様に依存せずに添付ファイルメールを送る方法を
私が使用するクラスをまるっと公開すると共に解説します。

内部的には、PHPの標準関数鵜「mail()」を使用し、
追加ヘッダにて添付ファイルを認識させる処理を追加しています。
今回公開するクラスは、ファイルを複数添付することができ、添付ファイル名も指定することが出来ます。
また、送信形式はCCもBCCも対応しています。

もちろん件名もファイル名も日本語OKです。
添付ファイル無しの通常メールも送信出来ます。

そのままクラスごとコピペしてもらえれば使えるかと思いますので、
じゃんじゃん使って頂いて、「もう少しこうしたら良いよ!」等のご意見が有れば
フィードバック頂ければ幸いです。

  1. 添付ファイル付きメールを送れるクラスの使い方
  2. 添付ファイルの仕組み
  3. 添付ファイル付きメールを送れるクラスのソース

『[PHP]PEARを使わない添付ファイル付きメール送信クラスを公開』を続きを読む »

PHP標準のZipArchiveにてディレクトリを丸っとZIP圧縮・展開する方法



ディレクトリの圧縮は、Linuxコマンドが使える環境ではコマンド一発で圧縮出来ますが、
Windowsサーバーや、開発環境をWindowsXAMPPをのせて構築している場合などでは、
Linuxコマンドが使えないため、1コマンドで圧縮というわけには行きません。
そこで、今回はWindowsでも動作させるために、
PHP5.2から導入された標準クラス「ZipArchive」を使ってディレクトリを丸っと圧縮したいと思います。
汎用的に使い回せる様にメソッド化していますので、コピペで使用出来ますよ!。

  1. 一筋縄では行かないPHPでのディレクトリ圧縮
  2. ZipArchiveのストリームを開く
  3. ディレクトリのZIP圧縮
  4. ZIP圧縮ファイルを展開する

『PHP標準のZipArchiveにてディレクトリを丸っとZIP圧縮・展開する方法』を続きを読む »

2chまとめサイトのRSSフィードアドレス一覧!



膨大なアクセス数を誇る2chまとめサイトですが、
ちょっとしたきっかけから市場調査をする機会がありまして、
その時に集めた2chまとめサイトのRSS/Atomフィードアドレスの一覧を公開します。

その数なんと576フィード!


  1. 2chまとめサイトのRSSフィードアドレス一覧!
  2. 2chまとめサイトのRSSフィードアドレスのPHP配列!
『2chまとめサイトのRSSフィードアドレス一覧!』を続きを読む »

【PHP】プログラミング勉強ノート(繰り返し処理)



先日発見した、私がプログラム業界へ入った時のノートを元にした
プログラミング勉強ノートの続きです。

PHPプログラミングの基礎はコチラから↓
【PHP】プログラミング勉強ノート(基礎から条件分岐まで)

配列についても纏めました。
【PHP】プログラミング勉強ノート(配列,連想配列)


引き続き、私がプログラムの業界へ入った時のノートを清書しながら
初心に戻ったつもりでPHPの基本的な事を解説して行きます。

今回は、プログラムの繰り返し処理を行なう制御構文について解説します。

  1. プログラムの管理を楽にする制御構文
  2. 繰り返し制御構文のfor()でインクリメント
  3. 条件だけを指定する繰り返し制御構文
  4. 配列を順に処理する繰り返し制御構文
  5. 繰り返し処理をサポートする便利関数
『【PHP】プログラミング勉強ノート(繰り返し処理)』を続きを読む »

【PHP】プログラミング勉強ノート(配列,連想配列)



先日発見した、私がプログラム業界へ入った時のノートを元にした
プログラミング勉強ノートの続きです。

PHPプログラミングの基礎はコチラから↓
【PHP】プログラミング勉強ノート(基礎から条件分岐まで)


引き続き、私がプログラムの業界へ入った時のノートを清書しながら
初心に戻ったつもりでPHPの基本的な事を解説して行きます。

今回解説するのは、『配列』です。

  1. 複数の値を纏めて管理する配列
  2. インデックスに特定の名前を付ける連想配列
『【PHP】プログラミング勉強ノート(配列,連想配列)』を続きを読む »

【永久保存版】各プログラム言語のコメントアウト記法まとめ!



コメントアウトとは、プログラムソース内に処理ロジックとは別に
コメントとして残す事を言います。

今回は、様々なプログラム言語やフレームワークで使用する
コメントアウト記法を纏めました。

コメントアウトはプログラムを書く上で、とても頻繁に使い、
プログラム言語を覚える時にも一番初めに確認して起きたい記法です。

新しいプログラム言語を勉強する際は、是非とも下記より
該当のプログラム言語を選択し、コメントアウト記法を見につけて下さい。


【 今回掲載したコメントアウト記法 】
  1. HTMLのコメントアウト記法
  2. CSS(スタイルシート)のコメントアウト記法
  3. バッチ(bat)、バッチファイル内でのコメントアウト記法
  4. PHPのコメントアウト記法
  5. JavaScriptのコメントアウト記法
  6. VBAのコメントアウト記法
  7. Javaのコメントアウト記法
  8. MySQL等で使用するSQL文のコメントアウト記法
  9. C言語でのコメントアウト記法
  10. C++のコメントアウト記法
  11. Objective-Cのコメントアウト記法
  12. Texのコメントアウト記法
  13. Perlのコメントアウト記法
  14. XMLのコメントアウト記法
  15. Rubyのコメントアウト記法
  16. JSPのコメントアウト記法
  17. LinuxのBシェル(sh)でのコメントアウト記法
  18. Pythonのコメントアウト記法
  19. VBSのコメントアウト記法
  20. Smartyのコメントアウト記法
  21. ASPのコメントアウト記法
  22. Fortranのコメントアウト記法
  23. aspxでのコメントアウト記法
『【永久保存版】各プログラム言語のコメントアウト記法まとめ!』を続きを読む »

【PHP】プログラミング勉強ノート(基礎から条件分岐まで)



私が始めてこの業界に飛び込んだ時のノートを久しぶりに開きました。
そこには、初めて触れたプログラミング言語『PHP』について、必死で取った汚いメモが残っていました。

今回は、初心に帰って
初めてプログラムを学んだ時の手順をノートの清書がてら
ブログに記事として残したいと思います。

基本はPHPの初歩的な内容ですが、プログラムとはなんぞや?
的な事から学んで行きましたので、これからプログラムを勉強する方の参考になればと
思います。




まずはプログラミングの作法!インデントの付け方について



プログラムは読みやすく書く事がとても大事です。
そして、社内で誰が見ても見やすくする必要があります。
もし、コードを書いた本人がケガや病気で倒れた場合、誰かがプロジェクトを引き継がなければなりません。
そうなった時に、コードの記述ルールがしっかりしていないと、
読んで解析するだけで疲れてしまいます。

ですので、社内ではコーディングルールとして、
プログラムコードの書き方に一定のルールを設けます。

あくまで、内の会社でのコーディングルールですので、
絶対というわけではありませんが、参考にして頂ければ幸いです。

まず、プログラムの『プ』の字も知らない内から、一番初めに学んだ事はインデントの
付け方でした。

ルールとしては、

■インデントはプログラムを見やすくするもの。目線の手すりの様なものなので、必ず整える事

■タブのサイズは半角4つ分(この頃はTABというものの存在さえ知りませんでした)

■処理のブロック毎にインデントの階層を深くする(プログラム未経験でしたので、処理?ブロック?って感じでした)

HTMLのインデントは半角スペース一つ。要素の入れ子毎に深くする
HTMLは横に長いので、なるべくインデントは小さくする)


正直、プログラム未経験だった私にとって、何を言っているのかもチンプンカンプン。
重要性もハテナな感じでしたが、今となってはとても重要な事で、一番初めに大前提として
教えられた意味が分かります(教える側が読みやすくってのもあるとは思いますがw)





プログラミング言語のPHP




『これから学んで貰うのは、PHPというプログラミング言語です』

ここで初めてPHPという言葉に出会いました。
私が一番初めに学んだプログラミング言語です。


下記は、殴り書きの様に残されたノートのメモを抜粋します。
とても基本的な事で、改めて基本中の基本なんだなと実感します。


PHPは『<?php ~~~~~~~~~~~~~ ?>』の中に記述します。

■プログラムは上から下へ向かって処理が流れていく

■その中で、『echo "hoge"』の様に書くと、『hoge』と画面に出力される。
(標準出力や、関数の書き方等は置いておいて、まずは何も考えずechoの書き方を丸暗記)

■文字列はダブルクオーテーションで囲う必要が有る。

■行毎に、処理の最後にはセミコロンを付ける

■ドットで複数の文字列等を繋げる事が出来る

■『$変数名』という形で、『変数』というものを定義出来る。



上記の事を学びながら、初めはいわゆる画面出力『Hello World』です。
$string = "文字列だよ";
echo $string;


画面に出たーー!!っという喜びは特に無く、
『で?次は?コレだけじゃ何にも面白くないよ』というのが正直な感想でした。

文字列をダブルクオーテーションで囲むって事や、echoというものの書き方は暗記でした。

ドットで文字列を繋げるっていうのも、何となくの理解度で、
文字が増えてきたり、何行かに分かれてきたりすると
必然的にダブルクオーテーションやドットが増えていきますが、
目をチカチカさせながらダブルクオーテーションとドットの記述間違いを探していたのを覚えています。

ここで変数というのもとの初めての出会いです。
変数というのは、名前の付いた入れ物。その入れ物に値を入れるのは『=』で代入する。
変数は、名前の前に『変数だよ!』っと示すように『$』を記述する。
一旦箱に入れたら、それは入れた値と同じように扱える。

なので、

$string = "文字列だよ";
echo $string;


『$string』という変数に『文字列だよ』という文字列を代入し、
『echo』で『$string』を出力しようとすると、『$string』の中身は『文字列だよ』が入っているので、
画面には『文字列だよ』と表示される。


不思議と、変数という概念は素直に受け入れる事が出来ましたが、
更にコードがごちゃごちゃしてきて、ひたすら目が痛かったです。






初めての制御構文『if』との出会い




ここで制御構文という言葉を始めて聞きました。
そして、まずは『if』という制御構文を勉強します。

『if』は、条件文によって実行する処理を切り替える事が出来ます。
条件分岐と言う形ですね。条件によって、処理の内容が分岐する。分かれ道の様なイメージです。

書き方は、
if( 条件文 ){
}

条件文の内容が『真』ならば、その後に書かれた波括弧の中身が実行される。
条件文の内容が『偽』ならば、その後に書かれた波括弧の中身は実行されない。


『真?偽?って何?』

が一番初めの感想です。
条件分岐の書き方は、それはそうとして覚えるだけかと思うので、
特に問題視していませんでしたが、この『真』『偽』という言葉が
聞きなれないせいか、全然頭に入って来ませんでした。

更に深く質問してみると

『 真=1 偽=0 』

もー何を言っているのかサッパリです。

とりあえず、この『真』『偽』の考え方についてはスルーしました
(隊長、分かったフリをしていました。すいません)

ですが、『if()』の括弧の中の条件が正しい時に波括弧の中が実行されるという事は
理解出来ていました。

では、正しいっていうのはどういう事?

ここで、比較演算子の登場です。




比較演算子を使って条件式を作成しよう



比較演算子というのは、左辺の値と右辺の値を比較する為の演算子で、
主に下記の様な比較演算子があります。


■『==』は等しい

■『!=』は等しくない

■『<』は未満、超過

■『<=』は以下、以上

■『>』は超過、未満

■『>=』は以上、以下
( !== や === 等の型を意識した比較は、ゆくゆくの独自学習に回します)


『if()』の括弧の中で、上記の比較演算子を使って質問をするイメージですね。

例えば、『3と3は等しいですか?』というのを式にすると、

if( 3 == 3 ){
 echo "波括弧の中の処理が実行されました";
}

となります。括弧の中は質問のイメージですので、
『3と3は等しいですか?』の質問に対する答えは『YES』なので、
波括弧の中の処理が実行されます。

これが、

if( 3 != 3 ){
 echo "波括弧の中の処理が実行されました";
}

だと、『3と3は等しくないですか?』という質問に対して、答えは『NO』です。
ですので、上記の例だと波括弧の中身は実行されません。


他の比較演算子についても同じような感じです。

そして、このままですと簡単な質問しかする事が出来ません。
実際のプログラムだと、もう少し条件が複雑な場合も出てきます。

そこで登場するのが、日本語で言うと『もしくは』と『尚且つ』を表現する論理演算子です。

式に使う記号に直しますと『もしくは=||』で『尚且つ=&&』です。

これは式と式を連結する時に使います。
例えば、『3と3は等しいですか?尚且つ、5と4は等しいですか?』という質問があったとすると、

if( 3==3 && 5==4 ){
 echo "波括弧の中の処理が実行されました";
}

となります。

この場合は、『5と4は等しいですか?』の質問に対して『NO』が出ますので、
波括弧の中の処理は実行されません。
これは『尚且つ』だからです。
式の回答の言葉に直すと『式1の答えがYESで、尚且つ式2の答えもYESの場合は真』と言う事になります。
ですので、式1と式2の両方ともYESにならないと真とは評価されず、波括弧の中は実行されません。


そして、上記の式を『尚且つ』では無く、『もしくは』に直すと、

if( 3==3 || 5==4 ){
 echo "波括弧の中の処理が実行されました";
}

式の回答の言葉に直すと『式1の答えがYES、もしくは式2の答えがYESの場合は真』と言う事になります。
ですので、式1か式2のどちらかがYESなら真と評価され、波括弧の中身が実行されます。

また、この式の中では数学の計算式を使う事も出来ます。




条件式に数学で用いる計算を組み込もう



計算式で使う記号は、


■加算『+』( 足し算に使用します。数学と一緒ですね )

減算『-』( 引き算に使用します。数学と一緒ですね )

■乗算『*』( 掛け算に使用します。数学でいう所の『×』ですね )

■除算『/』( 割り算に使用します。数学で言う所の『÷』ですね )

■剰余『%』( 割り算した結果の余りを求めます。余り聞きなれない演算子ですが、プログラムでは良く使います )


それでは動作を確認してみましょう。

$ans1 = 1 + 2;
echo "3になったかな?答えは".$ans1;

$ans2 = 5 - 3;
echo "2になったかな?答えは".$ans2;

$ans3 = 3 * 3;
echo "9になったかな?答えは".$ans3;

$ans4 = 10 / 2;
echo "5になったかな?答えは".$ans4;

$ans5 = 14 % 5;
echo "4になったかな?答えは".$ans5;



如何ですか?正しい計算結果が表示されましたでしょうか?
色々と数値を変更して試して見ると、計算の感覚がつかめるかと思います。
また、剰余『%』につきましては初めは馴染めないかも知れませんが、
プログラムでは使用頻度高めですので、早めに感覚を掴んで起きましょう。



さて、上記の式を利用して『if』の条件を作成してみましょう

if( (1+2) == (13%5) && (5-3) != (3*3) ){
 echo "波括弧の中の処理が実行されました";
}


一気に複雑になりましたね。
さて、これは波括弧の中身は実行されるのでしょうか?

正解は『実行される』です。
一つづつ分解して計算し、真と偽を確認してみて下さい。


そして、更に複雑にしてみたいと思います。
勿論、条件式の中には変数も使えます。
上記の式を変数に入れて見ましょう。

$int1 = 3;
$int2 = 5;
$int3 = 13;
$int4 = 2;
$int5 = 1;

if( ( $int5 + $int4 ) == ( $int3 % $int2 ) && ( $int2 - $int1 ) != ( $int1 * $int1 ) ){
 echo "波括弧の中の処理が実行されました";
}


如何ですか?変数に置き換えただけで、とても複雑に見えます。
しかし、コレは極端な例で、実際にはもう少し分かりやすく書きますので、
安心してください。
むしと、分かりやすく書く事が大前提ですので、
如何に読みやすく、理解しやすく記述出来るかが、実力を左右する指針にもなる事を忘れないで下さい。

もちろん、上記の式も先程の物と結果は同じですので、波括弧の中身は実行されます。






何れかの波括弧内のみ実行させたい時のifの書き方





これまで、『if()』の式の答えが真と評価される時は、波括弧の中身が実行されると
解説して参りました。
この、波括弧の中身の事を『ブロック』と言い、処理の塊を意味します。
少し難しい話になると『スコープ』といわれるものの範囲の指定にも使われます。

このブロックですが、
いくつか用意したブロックのうち、特定のブロックのみ処理したい場合があります。

そこで、『if』の使用を思いつくと思いますが、
いくつかの『if』の条件が、いずれも真と評価される事もあるかと思います。
しかし、ブロックの処理は特定のものしか実行して欲しく無い場合など。

そんな時に役に立つのが、
『else if()』です。
これは、前述の『if』が真と評価されなかった場合に式を判定する条件分岐です。


書き方は下記の様な形です。




if( 1 == 1 ){
 echo "波括弧の中の処理が実行されました";
}
else if( 2 == 2 ){
 echo "else ifの中の処理が実行されました";
}


これで、一つ目の『if』が真と評価されなければ、『else if』がチェックされます。
今回の例ですと、『if』が真となりますので、『else if』の評価は行われません。
ですので、画面には『波括弧の中の処理が実行されました』とだけ表示されます。
では、これと同じように『if』だけで書くとどうなるのでしょう。



if( 1 == 1 ){
 echo "波括弧の中の処理が実行されました。";
}

if( 2 == 2 ){
 echo "ifの中の処理が実行されました。";
}


上記では、一つ目の『if』が評価されてブロック内が実行されます。
同じように、二つ目の『if』でも評価が行われ、ブロック内が実行されます。
画面には、『波括弧の中の処理が実行されました。ifの中の処理が実行されました。』
と表示されます。


このように、特定のブロックだけに絞りたい場合は『else if』を活用しましょう。
また、いずれの式にも当てはまらなかった場合に実行するブロックも指定出来ます。
それには、『else』を使用します。


if( 1 == 1 ){
 echo "波括弧の中の処理が実行されました";
}
else if( 2 == 2 ){
 echo "else ifの中の処理が実行されました";
}
else{
 echo "いずれも真と評価されませんでした";
}


『else』は、『いずれも真と評価されない場合に実行される』という事が条件ですので、
条件式を書く必要はありません。


プログラムでは、この様にして処理を枝分かれさせていくんですね。



続いて、PHPにおける基本的なデータ構造『配列』と『連想配列』について
プログラミング勉強ノートを元に解説します。
【PHP】プログラミング勉強ノート(配列,連想配列)




wysiwyg:画像添付可能なhtmlエディタを無料で導入




ブログの管理画面の様な、記事編集フォームを自分のサイトに取り込む方法です。
こういったフォームは、リッチテキストエディタやwysiwygエディタ、HTMLエディタなどと言われ、
wordpressの記事編集の様な操作を可能とします。
オフィスシリーズでいうと、ワードの様な操作感でしょうか。
簡単にコンテンツの編集、作成が可能なので、とてもユーザにとって便利かと思います。


今回は、そんなHTMLエディタの導入方法です。
画像添付関係は有料だというツールが多く出回っていますが、完全無料で最後まで解説いたします。


  1. 無料で高機能なHTMLエディタを入手しよう
  2. HTMLエディタを環境に合わせて調整する
  3. elRTEを日本語化しよう!
  4. HTMLエディタの値の取得、HTMLエディタへ値をセット
  5. elFinderを組み合わせて画像のアップロードを可能にする
  6. elRTEにelFinderを組み込もう
  7. 実際にオンラインファイルマネージャーを操作してみよう
  8. ファイルの保存先をカスタマイズしよう
『wysiwyg:画像添付可能なhtmlエディタを無料で導入』を続きを読む »

PHPにて重い処理を別スレッドで実行する方法!

CEBImagery.com           

PHPにて重い処理を行おうとすると、ユーザへのレスポンスが遅くなります。
なので、ユーザへレスポンスする必要の無い処理。例えばメールの送信や裏で行うクエリ等は
レスポンスを待たずに、次の処理へ進んでもらいたいですね。

そんな時に役立つ、重い処理を別スレッドにて起動させて、
メインスレッドでは、そのまま次の処理へ移行させる方法のご紹介です

因みに、Linux/Unix環境用を想定しています、
Windowsサーバでは動かないかも知れませんので、注意して下さい。

  1. 別スレッド起動にはexec()関数でのコマンドに秘密が!
  2. 別スレッドにて起動したスクリプトに対して引数を渡そう!
  3. PHPを別スレッドで動かす際の注意点
『PHPにて重い処理を別スレッドで実行する方法!』を続きを読む »

人気の投稿

Category

Algorithm (2) Android (8) ASP/aspx (1) Blogger (2) C/C++ (1) Chrome (5) CSS (9) Firefox (4) Fortran (1) Google (9) GoogleMap (2) HTML (12) IE (3) Information (4) iOS (2) iPhone/iPad/iPod (2) Java (6) JavaScript (16) jQuery (9) JSP (1) LifeRecipe (5) Linux (2) Macintosh (2) MapKit (4) Marketing (7) MySQL (3) NAMAZU (2) Objective-C (7) Other (7) Perl (1) PHP (9) Python (1) RSS/Atom (2) Ruby (1) Safari (2) SEO (11) Smarty (2) SQL (2) Tex (1) Three.js (1) Twitter (1) TwitterLog (313) UIKit (5) Unix (1) VBA/VBS (1) Windows (5) WordPress (3) Writing (5) XAMPP (1) XML (1) Yahoo (2) ZendFramework2 (14)