PHP

【PHP】文字列の文字コードを取得する。

めも。

$str = 'あいうえお';
echo mb_detect_encoding($str);

ただしこの関数では正しく文字コードを判定出来ない可能性があるため注意されたし。

詳細は下記URLを参照。

http://d.hatena.ne.jp/t_komura/20090615/1245078430

 

【PHP】多次元配列をソートする。

便利だったのでメモ。

例えば下記のような配列があったとする。

Array
(
	[0] => Array
	(
		[aaa] => hogehoge
		[bbb] => ex
		[ccc] => 3
	)

	[1] => Array
	(
		[aaa] => fugafuga
		[bbb] => am
		[ccc] => 2
	)

	[2] => Array
	(
		[aaa] => piyopiyo
		[bbb] => ple
		[ccc] => 1
	)
)

各要素中の配列の「ccc」の数値でソートをかけたい場合、下記コードで実現可能。

usort($array, function($a, $b) {
    return $a['ccc'] - $b['ccc'];
});

本来SQLでやるような処理だけども、覚えておくと非常に便利。

 

【PHP】文字列内にひらがなが存在するか調べる。

めも。

$str = 'あイゥ';
if(preg_match('/[ぁ-ん]+/u', $str)){
	// ひらがなが含まれる場合の処理を記述
}

正規表現パターン末尾の「u」はUTF-8の文字コードで検索を行う場合必須なので注意。

 

【PHP】ファイルの行数を求める。

file()関数などでメモリをバカ食いしたくない時におすすめ。

$filePath = '/path/to/file.txt';
$count = exec('wc -l '.$filePath);
$count = trim(str_replace($filePath, '', $count));

こんな感じで取得可能。

 

【PHP】ドット連結記法で配列に値をセット出来るメソッド。

laravelのコアファイルより発掘。

function array_set(&$array, $key, $value)
{
	if (is_null($key)) return $array = $value;

	$keys = explode('.', $key);

	while (count($keys) > 1)
	{
		$key = array_shift($keys);

		if ( ! isset($array[$key]) or ! is_array($array[$key]))
		{
			$array[$key] = array();
		}

		$array =& $array[$key];
	}

	$array[array_shift($keys)] = $value;
}

使い方は下記の通り

// $array['user']['name'] にセットしたい場合
array_set($array, 'user.name', 'Value');

// $array['user']['name']['first'] にセットしたい場合
array_set($array, 'user.name.first', 'Value');

 

【PHP】ファイルサイズをEiB(エクスビバイト)まで変換してくれるメソッド。

laravelのコアファイルより発掘。

function get_file_size($size)
{
	$units = array('Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB');
	return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2).' '.$units[$i];
}

 

【PHP】 すべての HTTP リクエストヘッダを取得する。

めも。

var_dump(apache_request_headers());

↓

array(8) {
  ["Host"]=>
  string(16) "manage.local.lcl"
  ["Connection"]=>
  string(10) "keep-alive"
  ["Cache-Control"]=>
  string(9) "max-age=0"
  ["Accept"]=>
  string(74) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
  ["User-Agent"]=>
  string(109) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
  ["Accept-Encoding"]=>
  string(17) "gzip,deflate,sdch"
  ["Accept-Language"]=>
  string(23) "ja,en-US;q=0.8,en;q=0.6"
  ["Cookie"]=>
  string(36) "PHPSESSID=df9qela04cojq3piqd3b50l4e3"
}

 

【PHP】 HTTPレスポンスヘッダを全て取得する。

めも。

var_dump(apache_response_headers());

↓

array(4) {
  ["X-Powered-By"]=>
  string(9) "PHP/5.3.3"
  ["Expires"]=>
  string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
  ["Cache-Control"]=>
  string(62) "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
  ["Pragma"]=>
  string(8) "no-cache"
}