Yasuのブログ

北海道の大学生Yasuが、ライティングスキルとIT知識を高めるためにブログを始めました。

PHPのお勉強。4

☆配列を切り出す

$配列 = array_slice($元の配列, 開始位置, 長さ);

 

☆配列を反転

$配列 = array_reverse($元の配列);

 

☆現在日時の取得

$変数 = time();

UNIXタイムスタンプ形式として表示される.

UNIXタイムスタンプ…西暦1970年1月1日からの秒数

 

$変数 = mktime(時間,分,秒,月,日,年);

→指定した日付をUNIXタイムスタンプ形式として表示する.

 

UNIXタイムスタンプを日付にする

$変数 = date(フォーマット, UNIXタイムスタンプ);

 

※現在日付を表示するプログラムを組んだ所、15時のはずが08時と表示された.

7時間のずれ、これはグリニッジ標準時では?と予想.

php.ini内にdefault_timezoneをTokyo/Asiaにセットするパターンと、プログラム内でTimezoneを設定してから元に戻すパターンの2つが選択できる.

後者でプログラムを改めて組むと成功.

 

// TimeZoneを日本時間に設定する

$org_timezone = date_default_timezone_get();

date_default_timezone_set('Asia/Tokyo');

 

 

// date関数を使う

$timestamp = time();

$next_week = date('Y年m月d日 H時i分s秒', $timestamp);

print $next_week;

 

// TimeZoneを元に戻す

date_default_timezone_set($org_timezone);

 

これで成功した.

参考にしたサイトはこちら.

http://amidagamine.com/notes/2011/11/07/php-date%E9%96%A2%E6%95%B0%E3%81%AE%E6%99%82%E9%96%93timezone%E3%81%8C%E3%81%9A%E3%82%8C%E3%82%8B/ 

(あみだがみねのもろもろ備忘録 様)

 

☆日付の妥当性をチェック

$変数 = checkdate(月, 日, 年);

 

☆ファイル操作

ファイル読込

$変数 = file_get_contents("ファイル名またはURL");

変数にファイル内容を文字列として格納する.

 

読込み可能か判断する関数 is_readable(ファイル名);

読込んだファイルの内容を1行毎に配列に取得したい時はfile関数を用いる.

 

ファイルにデータ書込

file_put_contents("ファイル名", $変数);

ファイルがない時は新しく生成され、ある時は上書きされる.

 

文字コード変換

$mb_convert_encoding($変数, "変換後の文字コード", "変換前の文字コード");

 

☆ファイルを開く、書き込む、閉じる

$ファイルポインタ = fopen("ファイル名orURL", "オプション"); //オプションにはr,w等を指定

fwrite($ファイルポインタ, "書き込みデータ");

fclose($ファイルポインタ);

 

☆ファイルを削除する

$変数 = unlink("ファイル名");

 

is_file関数…ファイルの存在を確認

&&でunlink関数と組み合わせる事で、削除した後の挙動をif文で分岐可能.

 

☆ファイルをコピーする

copy(コピー元ファイル名, コピー先ファイル名);

 

☆ディレクトリを作成する

$変数 = mkdir("パス名", モード);

phpファイルを置いてあるディレクトリに出来る.MAMPではhtdocsフォルダにファイルを置いてあるので、その階層にhtdocs/tempの形で置かれることになる.

 

☆ディレクトリを削除する

rmdir(ディレクトリ名);

 

☆パス情報の取得

$pathname = pathinfo(__FILE__);

print $pathname['dirname'] ."<br>";

print $pathname['basename'] ."<br>";

print $pathname['extension'] ."<br>";

 

☆HTTPヘッダ操作

HTTP HyperText Transfer Protocol HTTP

リクエスト:メソッド、ヘッダー、データで構成された文字列

リクエストメソッドでページを表示する要求、リクエストヘッダにブラウザの情報が含まれて送信される

 

レスポンスヘッダ

Webサーバの挙動

リクエストを受信→処理実行→ステータスコードをブラウザへ送信(3桁の数字)→レスポンスがブラウザへ送信(ヘッダ、データで構成されている)

レスポンスヘッダの一例:Content-Type //Perlではこれを出力しないとエラーになるが、PHPは自動的にやってくれる.

 

header("レスポンスヘッダ");

レスポンスヘッダの記述方法等、HTTPの詳細はこのページを確認(注:英語).

http://www.w3.org/Protocols/rfc2616/rfc2616

 

//data.csvがダウンロードされる

$downloadfile = "data.csv";

header("Content-Disposition: attachment; filename=$downloadfile");

header("Content-type: application/octet-stream; name=$downloadfile");

$result = fule_get_contents("test.data");

print $result;

 

☆リダイレクト

あるページから別のページに自動的に遷移すること.

header("Location: http://www.google.co.jp/");

exit;

// Googleにリダイレクトされる.URLはhttp://から始まる絶対パスで.

 

☆メール関係

PHP単体ではメール送信は出来ない.MTA(Message Transfer Agent)と呼ばれるメール配信のためのサーバソフトウェアを利用する.Linux系のOSをインストールすると標準で入っている.PHPは自動的にそのMTAへのパスが設定される.

WindowsとLinuxでメール送信に関しての仕組みが違う.

Windowsではphp.iniのSMTPSMTPホストのDNS名orIPアドレス、sendmail_fromには差出人のアドレスを設定.

 

メールを送信する

mb_send_mail(宛先, 件名, 本文, 追加のヘッダ);

マルチバイト文字列対応のこの関数を利用することで文字コードを殆ど意識せずに利用可能.

if文と組み合わせる

 

→やってみたけど、if文で分岐した条件で成功してはいるが、実際にメールは送信されていない.

プロバイダの設定をしっかりしてから送信するべきかもしれない.Retryすべき.

 

正規表現

正規表現は、フォーム等での入力データを、サーバーサイドで決めた数字、半角英字のパターンに照らし合わせて適合しているかを調べるのに使われる.

 

preg_match(正規表現パターン, 文字列);

if文と組み合わせて使う.

 

 

正規表現について詳しく書かれている本、ない?教えてエ○い人.