カテゴリー
SugiBlog Webデザイナー・プログラマーのためのお役立ちTips

日付の差を求める [PHP]

2つの日付の差を求めるサンプルです。
DateTimeクラスを使用します。

まずは2つの日付のオブジェクトを生成します。

$datetime1 = new DateTime('1981-04-22');
$datetime2 = new DateTime('1981-01-01');

DateTime::diffメソッドで日付の差を求めます。
返り値にはDateIntervalオブジェクトが返ります。

$interval = $datetime1->diff($datetime2);

DateIntervalオブジェクトのプロパティ

y
m
d
h 時間
i
s
invert 差が負の場合は1、そうでない場合は0
days 日数

例)2つの日付の差となる日数を出力する

print $interval->days;

また、フォーマットした文字列を取得したい場合はDateInterval::formatメソッドを使用します。
続きを読む…»

2,908 views

指定したディレクトリ内のファイル一覧を取得する

読み込むファイル名の中には「.」と「..」が含まれるので除外します。

opendirを使う

$rdir = "[読み込むディレクトリ]";

$dh = opendir($rdir);

while (false !== ($filename = readdir($dh))) {

    // ドットで始まるファイルとディレクトリを除外
    if(!preg_match("/^\./", $filename) && !is_dir($filename)) {

        echo $filename."<br>\n";

    }

}

closedir($dh);

scandirを使う

$rdir = "[読み込むディレクトリ]";

$F = scandir($rdir);

foreach($F as $filename) {

    // ドットで始まるファイルとディレクトリを除外
    if(!preg_match("/^\./", $filename) && !is_dir($filename)) {

        echo $filename."<br>\n";

    }

}

globを使う

この場合、「.」「..」は含まれません。

$rdir = "[読み込むディレクトリ]";

foreach (glob($rdir."/*") as $filename) {
    echo $filename."<br>\n";
}
2,569 views

PHPでZip圧縮

PHPでZipArchiveクラスを使い、ファイルをZip圧縮して保存することができます。

PHP5.2.0以降ではデフォルトで使用可能となっているようですが、
明示的に使用するのであれば、コンパイル時に--enable-zipを付加してください。

作成するZipファイル名を指定します。

$zip_file = 'file.zip';

ZipArchiveクラスのインスタンスを生成します。

$zip = new ZipArchive();

ファイルを新規作成、または存在すれば上書きで開きます。

$opened = $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);

ファイルを追加します。

$filename = "example.jpg";
$ret = $zip->addFile($filename);

追加が完了したらZipファイルを閉じます。

$ret = $zip->close();

例)Zip圧縮したファイルをダウンロードさせる

if($ret) {
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="'.$filename.'"'); 
    header('Content-Length: '.filesize($zip_file));
    readfile($zip_file);
}
2,799 views

PHPでサムネイルを作る[PHP with GD]

PHPでは画像をコピーして、リサイズすることができます。
今回はサムネイルを作成する方法をご紹介します。

実行するにはGDライブラリが必要となります。
GDライブラリのインストールについてはまた別の機会に。

まずは元のファイルと保存するファイルを設定します。

$original_file = "src.jpg";
$saveto_file   = "dst.jpg";

元画像のサイズを取得します。

list($width, $height) = getimagesize($original_file);

作成するサムネイルのサイズを設定します。
ここでは、元画像の3分の1としています。(小数点以下は四捨五入)

$new_width  = round($width / 3);
$new_height = round($height / 3);

元画像のリソースを取得する

$original_image = imagecreatefromjpeg($original_file);

続きを読む…»

994 views

XML-RPC WordPress APIで記事を投稿

The Incutio XML-RPC Library for PHP
http://scripts.incutio.com/xmlrpc/
「Download the Library」をクリックしダウンロードします。

解凍すると「php-ixr-1.7.4」というフォルダーに「IXR_Library.php」というファイルがありますので
このファイルをインクルードするだけです

ライブラリをインクルード

include_once("php-ixr-1.7.4/IXR_Library.php");

投稿先アドレスを引数としてインスタンスを生成します。

$client = new IXR_Client("http://www.example.jp/xmlrpc.php");

WordPressのユーザー名とパスワードを設定します。

$wp_username = "username";
$wp_password = "password";

投稿の処理

$status = $client->query(
    "wp.newPost", //使うAPIを指定(wp.newPostは、新規投稿)
    1,            //ブログID 通常は1、マルチサイトの場合は変更が必要
    $wp_username, //ユーザー名
    $wp_password, //パスワード
    array(
        "post_author" => 1,                        //投稿者ID 未指定の場合、投稿者名なしになります
        "post_status" => "publish",                //投稿状態
        "post_title" => "テスト投稿です。",        //タイトル
        "post_content" => "テスト投稿本文です。",  //本文
        "terms" => array("category" => array(1)),  //カテゴリ
    )
);

if(!$status){
    die("エラー! - ".$client->getErrorCode()." : ".$client->getErrorMessage());
} else { 
    $post_id = $client->getResponse(); //返り値は投稿ID
}

続きを読む…»

4,052 views