Smarty:phpの定数をSmartyで使用する方法

phpで設定した定数Smartyテンプレートで使用したい場合、下記のように予約変数を使用して値を取得します。
※予約変数「$smarty」は環境変数やリクエスト変数を取得する時に使用します。


phpで設定した定数をSmartyで使用する場合

{$smarty.const}

php

define('HOGE_DATA','hoge');

Smarty

{$smarty.const.HOGE_DATA}

また、Smartyの予約変数ではサーバ変数なども取得することができます。

サーバ変数を使用する場合

{$smarty.server}

・$_SERVER[‘HTTP_HOST’]を取得する場合

{$smarty.server.HTTP_HOST}

その他下記の値も取得することができます。

{$smarty.get}
{$smarty.post}
{$smarty.cookies}
{$smarty.session}
{$smarty.request}

php:文字列から配列、配列から文字列にする方法

phpで文字列を指定した区切り文字で配列に格納したり、配列の中身を連結文字で連結させて文字列にしたい場合があります。
phpでは「explode()」、「implode()」関数を使用すると文字列から配列配列から文字列に変換できます。

explode()

文字列を指定した区切り文字で分割し、配列に格納した値を返します。

explode('区切り文字', '文字列')

implode()

配列の中身を連結文字で連結した値を返します。

implode('連結文字', '配列')

文字列から配列にする場合(explode)

$str = '1,2,3';
var_dump(explode(',', $str));
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }

配列から文字列にする場合(implode)

$arr = array('1', '2', '3');
var_dump(implode(',', $arr));
string(5) "1,2,3"

チェックボックスなどで取得した配列の値を文字列にし、データベースに格納したり、その値を取り出す場合に区切り文字で配列にしたりなど色々な用途で使用してます。

php:phpで正規表現を使った英数字チェック

phpでフォームを作成する場合、バリデーションの処理は必要だと思います。
数字チェック、英字チェック、英数字チェックなど色々なパターンのチェックがあります。
いつも忘れてしまうので、php正規表現で「preg_match()」を使用した英数字チェックをする方法をメモします。


※変数内の全ての文字を判定しています。
※半角英数字の場合です。

数値チェック

	// 数字チェック
	if (preg_match('/^[0-9]+$/', $data)) {
		// 数字の場合
	}
	else {
		// 数字ではない場合
	}

英字チェック

	// 英字チェック
	if (preg_match('/^[a-zA-Z]+$/', $data)) {
		// 英字の場合
	}
	else {
		// 英字ではない場合
	}

英数字チェック

	// 英数字チェック
	if (preg_match('/^[a-zA-Z0-9]+$/', $data)) {
		// 英数字の場合
	}
	else {
		// 英数字ではない場合
	}

また、関数にしておくと値を渡すだけなので簡単に使えると思います。

上記のチェックを関数にした場合

	// 数字チェック
	function is_num($data) {
		if (preg_match('/^[0-9]+$/', $data)) {
			// 数字の場合
			return true;
		}
		else {
			// 数字ではない場合
			return false;
		}
	}

	// 英字チェック
	function is_alpha($data) {
		if (preg_match('/^[a-zA-Z]+$/', $data)) {
			// 英字の場合
			return true;
		}
		else {
			// 英字ではない場合
			return false;
		}
	}

	// 英数字チェック
	function is_alphanum($data) {
		if (preg_match('/^[a-zA-Z0-9]+$/', $data)) {
			// 英数字の場合
			return true;
		}
		else {
			// 英数字ではない場合
			return false;
		}
	}

他にも色々なパターンを組み合わせることができるので、自由にチェック内容を作成できると思います。

正規表現:特殊文字(メタ文字)のまとめ

php正規表現を使用し、文字列やデータを判定・検証することはよくあります。
正規表現で使用する特殊文字メタ文字)について下記にまとめました。


特殊文字(メタ文字)

[ ] (角括弧、角括弧閉じ)

角括弧に囲まれたものを「文字クラス」と言います。角括弧内のいずれかの一文字に一致します。
[abcde]と指定した場合、’a’、’b’、’c’、’d’、’e’のいずれかに一致します。
[a][1]で指定した場合は’a1’の文字に一致します。


- (ハイフン)

文字の範囲を指定する時に使用します。[a-z]と指定した場合、’a’から’z’の文字に一致します。
[a-z]、[A-Z]、[0-9]などハイフンを使用し範囲指定することが可能です。


^ (キャロット)

行頭を示します。
^abcのように正規表現の先頭に記載した場合は、abcで始まる文字に一致します。
^[abc]のように指定した場合は、’a’、’b’、’c’のいずれかで始まる文字に一致します。
[^abc]のように文字クラスの先頭に指定した場合は、’a’、’b’、’c’以外の文字と一致します。


+ (プラス)

直前の文字の1回以上の繰り返しに一致します。
abc+と指定した場合、’abc’、’abcc’、’abccc’などと一致します。


* (アスタリスク)

直前の文字の0回以上の繰り返しに一致します。
abc*と指定した場合、’ab’、’abc’、’abcc’、’abccc’などと一致します。
‘ab’のように’c’という直前の文字がなくても一致します。


$ (ダラー)

末尾を示します。
a$のように指定した場合、文字列の末尾にある’a’に一致します。
[a-z]$のように指定した場合は、文字列の末尾にある’a’から’z’の文字に一致します。


\ (円マーク)

エスケープ文字です。特殊文字(メタ文字)としてではなく通常文字として解釈されます。
「\+」のように使用した場合、プラスの文字に一致します。


他にも色々ありますが、随時追加していきます。

php:ZipArchiveクラスでZIPファイルの圧縮と解凍

phpZIPファイルを圧縮解凍する場合のメモします。
下記にZipArchiveクラスを使用し、ZIPファイルの圧縮と解凍の方法を記載します。


ZipArchiveクラスが使用可能か確認

phpinfo()で下記がインストールされているか確認します。

php_zip


ZIPファイルを圧縮

「ZipArchive::CREATE」で新規にZIPファイルを作成します。
「addFile()」で指定したファイルを「./zip/hoge.zip」に圧縮します。
「addFile()」は複数指定することが可能です。

	$zip = new ZipArchive();
	// ZIPファイルをオープン
	$res = $zip->open('./zip/hoge.zip', ZipArchive::CREATE);

	// zipファイルのオープンに成功した場合
	if ($res === true) {

		// 圧縮するファイルを指定する
		$zip->addFile('hoge.txt');
		$zip->addFile('hoge.jpg');

		// ZIPファイルをクローズ
		$zip->close();
	}

ZIPファイルを解凍

解凍するZIPファイルをオープンし、「extractTo()」で指定した場所に展開します。
指定した場所を確認するとZIPファイルが解凍されていることが確認できます。

	// ZIPファイルのパス指定
	$zip_path = './zip/hoge.zip';

	$zip = new ZipArchive();

	// ZIPファイルをオープン
	$res = $zip->open($zip_path);

	// zipファイルのオープンに成功した場合
	if ($res === true) {

		// 圧縮ファイル内の全てのファイルを指定した解凍先に展開する
		$zip->extractTo('./zip/');

		// ZIPファイルをクローズ
		$zip->close();

	}