PHP」カテゴリーアーカイブ

PHP 画像アップロード

ここではPHPでの画像のアップロードについて解説しています。

HTML

<form action="<?php echo $_SERVER['PHP_SELF'];?>" name="img_up" method="post" enctype="multipart/form-data">
<input type="file" name="img_file" />
</form>

画像をアップロードするにはformにenctypeを指定します。

php

<?php

    // ファイル名をランダムに
    $img_name = md5(uniqid(rand(), true));
    $img_name .= '.'.substr(strrchr($_FILES['img_file']['name'];, '.'), 1);
    $img_path = "./img/{$img_name}";
    if (!move_uploaded_file($_FILES['img_file']['tmp_name'], $img_path)) {
        echo "Error";
        exit();
    }

画像をアップロードするには「move_uploaded_file」を使用します。

書式
bool move_uploaded_file ( string $filename , string $destination )

filename
アップロードしたファイルのファイル名。
今回は例としてランダムでファイル名を決めています。

destination
ファイルの移動先。
画像をアップロードするパスを指定してください。

返り値
画像のアップロードに成功した場合は「true」を返します。

PHP textarea 改行

ここではPHPでtextareaをブラウザ表示するときの改行がうまくいかないときの対処法を解説しています。

nl2brを使用する

<?php

    // 特殊文字を HTML エンティティに変換
    $var = htmlspecialchars($_POST["textarea"]);
    // 改行文字の前に HTML の改行タグを挿入
    $textarea = nl2br($var);
    echo $textarea;

「nl2br」は 改行文字の前にHTMLの改行タグを挿入してくれる関数です。
textareaから[$_POST]で取得して、ブラウザ表示させるタイミングで使用します。

PHP 日付から曜日を取得

ここではPHPで日付から曜日を取得する方法を解説しています。

データベースのdate形式

<?php

    $date = "2014-1-29";
    // $date = "2014-01-29";
    // $date = "2014/1/29";
    // $date = "2014/01/29";
    $week = array("日", "月", "火", "水", "木", "金", "土");
    $date = strtotime($date);
    $w = date("w", $date);

    echo $week[$w];

年、月、日が分かれている場合

<?php

    $year = 2014;
    $month = 1;
    // $month = 01;
    $day = 29;
    $week = array("日", "月", "火", "水", "木", "金", "土");
    $time = mktime(0, 0, 0, $month, $day, $year);
    $w = date("w", $time);

    echo $week[$w];

PHP ランダムでファイル名をつけ拡張子を取得する

ここではPHPでファイルのアプロード時にランダムでファイル名をつけ拡張子を取得する方法を解説しています。

サンプルソース

<?php

    $fileName = md5(uniqid(rand(), true));
    $fileName .= '.'.substr(strrchr($_FILES['file']['name'];, '.'), 1);

解説
ファイル名をランダムに作成して、最後の「.」ドットを判別してドット以下を取得しています。
画像ファイル(jpg,png,gif)やCSVファイルでもアップロードされたときでも拡張子の取得ができます。

PHP CSVファイル出力

ここではPHPでのCSVファイル出力を解説しています。

サンプルソース

<?php

    $data[0]['name'] = "田中太郎";
    $data[0]['position'] = "社長";
    $data[1]['name'] = "野原ひろし";
    $data[1]['position'] = "係長";

    for ($i = 0; $i < count($data); $i++) {
        $csvFile .= $data[$i]['name'] . "," . $data[$i]['position'] . "\n";
    }

    // ファイル名
    $csvName = date("Y-m-d") . ".csv";
    // ファイルサイズ
    $fileSize = filesize($csvFile);

    // 文字コードを設定
    $csvFile = mb_convert_encoding($csvFile , "sjis-win", "utf-8");

    // Mime設定
    header("Content-Disposition: attachment; filename={$csvName}");
    header("Content-Length:{$fileSize}");
    header("Content-Type: application/octet-stream");
    echo $csvFile;
    exit();

解説

出力するデータを「,」カンマ区切りで記述します。(9行目)

改行するときは「\n」を記述します。
この場合「’」シングルクォーテーションでは改行されません。必ず「”」ダブルクォーテーションで囲むようにしてください。

文字化けしないように文字コードを設定します。(18行目)
サンプルソースはUTF-8で作成してあります。

ファイル名、ファイルサイズ、を設定して出力しています。(21~24行目)

CSVファイルに限らずファイルの出力後には必ずexit()してください。