PHP

【CentOS】php-gdのインストール手順まとめ。

自分用。

1, yum list でphp-gdがあることを確認

yum list | grep php-gd

2, yumでphp-gdをインストール

yum install php-gd.i686

3, 下記のファイルを生成してエクステンションを読み込む

cd /etc/php.d
vi gd.ini

※下記1行を記述

extension=gd.so

4, apacheを再起動

service httpd restart

5, 最後にphpinfo()やらphp -mやらでgdの項目を確認できればインストールは無事完了。

 

【PHP】bit.lyの短縮URLを生成する関数を作った。

めも。

function createShortedByBitly($url) {
	// クエリストリングを生成する
	$q = array(
		'login' => _BITLY_USERNAME_,
		'apiKey' => _BITLY_API_KEY_,
		'longUrl' => $url
	);
	$params = '?'.http_build_query($q);
	// リクエストURLを生成
	$requestUrl = 'https://api-ssl.bitly.com/v3/shorten'.$params;
	// 結果を取得
	$json = @json_decode(file_get_contents($requestUrl));
	// リクエストに失敗した場合そのままのURLを返却する
	if($json->status_code != 200) {
		return $url;
	}
	return $json->data->url;
}

 

【PHP】文字列を1文字単位で分割する。

めも。

str_split()を用いる。

$str = 'abcdefghijklmnopqrstuvwxyz';
$split = str_split($str);
var_dump($split);

↓

array(26) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
  [5]=>
  string(1) "f"
  [6]=>
  string(1) "g"
  [7]=>
  string(1) "h"
  [8]=>
  string(1) "i"
  [9]=>
  string(1) "j"
  [10]=>
  string(1) "k"
  [11]=>
  string(1) "l"
  [12]=>
  string(1) "m"
  [13]=>
  string(1) "n"
  [14]=>
  string(1) "o"
  [15]=>
  string(1) "p"
  [16]=>
  string(1) "q"
  [17]=>
  string(1) "r"
  [18]=>
  string(1) "s"
  [19]=>
  string(1) "t"
  [20]=>
  string(1) "u"
  [21]=>
  string(1) "v"
  [22]=>
  string(1) "w"
  [23]=>
  string(1) "x"
  [24]=>
  string(1) "y"
  [25]=>
  string(1) "z"
}

正規表現の力を使う必要が無い場合はpreg_split()を用いるよりもこちらのほうが低コストで使えるのでおすすめ。

ちなみにpreg_split()を用いる場合は下記の通り。

$str = 'abcdefghijklmnopqrstuvwxyz';
$split = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($split);

↓

//同上

 

【Javascript】JavascriptでPHPのpreg_quote()メソッドを実装する。

メモ。

preg_quote()は正規表現構文の特殊文字の前にバックスラッシュを挿入してくれる関数。ようは必要に応じてエスケープを行ってくれる。

stackoverflowでよさ気なコードを見つけたのでペタリ。↓
http://stackoverflow.com/questions/6828637/escape-regexp-strings

function preg_quote (str, delimiter) {
    return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}

利用方法はPHPの同名関数と同じ。詳細は下記ページを参照されたし。

http://www.php.net/manual/ja/function.preg-quote.php

 

【Javascript, PHP】CakePHP2.4のセキュリティコンポーネントをAjaxによるPOSTデータで通過させる。

メモ。

var data = {};
$(this).find('input[type!="submit"]').each(function() {
	data[$(this).attr('name')] = $(this).val();
});

上記のようにして特定フォームの全インプット要素(Submit属性は除く)を拾ってポストすればセキュリティコンポーネントを通過することが出来る。
しかし、セキュリティトークンは一度の処理のみ有効なので連続してポストした場合、2回目以降が403で弾かれてしまうので注意されたし。

また上記の拾い方をした場合、コントローラー内からは通常通り「$this->request->data」で受け取ることができるので非常に便利。

 

【CentOS】SSHでtopコマンドを叩く方法。

バッチ処理中にtopコマンドをそのまま叩くと下記のように怒られる。

top: failed tty get

なのでexec()などからtopを叩きたい場合は下記のようにパラメーターをつければOK。

top -b -n 1

「-b」がバッチへの対応。「-n 1」は更新回数。これを指定しないと明示的に処理を止めるまで結果を吐き続ける模様。

 

【PHP】完全自分用変数ダンプ用関数。

var_dump()の拡張版。アプリごとに毎回書くのがめんどくさくなったのでメモ。

// 処理続行
function v() {
	$num = func_num_args();
	if($num != 0) {
		$args = func_get_args();
		echo "<pre>\n";
		for($i = 0; $i < $num; $i++) {
			var_dump($args[$i])."\n";
		}
		echo "</pre>\n";
	}
}

// 処理終了
function vd() {
	$num = func_num_args();
	if($num != 0) {
		$args = func_get_args();
		echo "<pre>\n";
		for($i = 0; $i < $num; $i++) {
			var_dump($args[$i])."\n";
		}
		echo "</pre>\n";
	}
	die();
}

 

【PHP】DOM要素をスクレイピングするSimple_HTML_DOMの使い方。

めも。

1, 下記URLからライブラリをダウンロード。

http://simplehtmldom.sourceforge.net/

2, 落としたファイルの中から「simple_html_dom.php」を探しインクルードなりオートロードなりする。

3, あとは下記のように使う。

$url = 'http://example.com/';

$html = file_get_html($url);

$a = $html->find('a');

foreach($a as $elem) {
	echo $elem->href;
}

上記は取得したページに存在するa要素のhref属性を全て出力する処理の例。

find()関数にはjQueryセレクタと同じ文字列を渡せるためとても使いやすい。

さらなる詳細や応用方法は下記本家ドキュメントを参照されたし。

http://simplehtmldom.sourceforge.net/manual.htm