PHP

【PHP】file_get_contents()でPOST送信を行う。

ちょっと特殊な使い方だけどすごく便利。

function postExecute($target, $data)
{
    $query = http_build_query($data, '', '&');
    $header = [
        'Content-Type: application/x-www-form-urlencoded',
        'Content-Length: '.strlen($query)
    ];
    $context = [
        'http' => [
            'method'  => 'POST',
            'header'  => implode("\r\n", $header),
            'content' => $query
        ]
    ];
    return file_get_contents($target, false, stream_context_create($context));
}

$targetにはポスト先URLを指定、$dataにはポストしたいデータを配列で渡せばOK。

 

【PHP】秒数を「H:m:s」の形式に変換する。

メモ。

$var = 24351;
$time = gmdate('H:i:s', $var);

※実際は1970年1月1日の00:00:00からの差を返却しているので注意されたし。

これは便利。

 

【CentOS】にPHPエクステンションのSSH2をインストールした際のメモ。

自分用。

yum install gcc gcc-c++
yum install openssl-devel
yum install libgcrypt-devel

wget http://downloads.sourceforge.net/project/re2c/re2c/0.13.7.4/re2c-0.13.7.4.tar.gz
tar zxvf re2c-0.13.7.4.tar.gz
cd re2c-0.13.6
./configure --prefix=/usr/local/re2c-0.13.7.4
make && make install

wget http://www.libssh2.org/download/libssh2-1.4.3.tar.gz
tar xzvf libssh2-1.4.3.tar.gz
libssh2-1.4.3
./configure
make
make install

wget http://pecl.php.net/get/ssh2-0.12.tgz
tar xzvf ssh2-0.12.tgz
cd ssh2-0.12
phpize
./configure
make
make install

vim /etc/php.ini
extension=ssh2.so

 

【PHP】空のjsonオブジェクトを生成する。

json_encode((object) null);

これで「{}」を出力することが出来る。

 

【AngularJS/PHP】$httpや$resourceでポストしたデータをPHPで受け取る。

これまじで若干つまった。

angularからポストしたデータをPHPで受け取ろうとして$_POSTを参照したところなにも入ってきていないので
どこにあるのか探しまくったところ、$GLOBALS[‘HTTP_RAW_POST_DATA’]に入ってきていることが判明。

こりゃ見つからんわ。

ちなみにローポストデータの受け取り方は下記の方法が存在しているとのこと。

// 定義済み変数を参照する
$HTTP_RAW_POST_DATA 

// 上記で抜き取れない場合は下記
$postdata = file_get_contents('php://input');

// それか$GLOBALSの中身を覗きに行く
$GLOBALS['HTTP_RAW_POST_DATA']

 

【PHP】ロリポップサーバーでPHP5.4以上が求められるシェル(バッチ)を動かす。

ロリポサーバーでは普通に「php ~」とやるとまさかのPHP5.2で動作するので、5.4のパスを指定してやらなければならない。

下記のように指定すればOK。

/usr/local/php5.4/bin/php [コマンド]

mysqldumpに関してもそうだけど、標準で最新バージョンのパス通しといてくれよまじで。

 

【PHP/Javascript】switch(true)のイディオム。

switch文に関してかなり便利なイディオムを見つけたのでメモ。
switchの引数にtrueを渡しcase句で式を評価させることで、多分機のif elseif文をスッキリと記述することが出来る。

■PHPの場合

switch (true) {
	case $a == 1:
		break;
	case $a == 2:
		break;
	case $b == 5:
		break;
}

■Javascriptの場合

switch (true) {
	case x == 1:
		break;
	case x == 2:
		break;
	case x == 3:
		break;
}

どうやら賛否両論あるイディオムみたいだけど、breakをちゃんと書き忘れなければいいんじゃないかな。
と思う。

 

【PHP】filter_var()メソッドでデータをフィルタリングする。

filter_input()と同じく入力値をフィルタリング出来る関数。

例。

filter_var('hoge@example.com', FILTER_VALIDATE_EMAIL);

さくっと実装したい時はこっちのほうが使いやすいかも。