PHP

【MySQL】1文字単位で文字を置換する。

めも。

TRANSLATE()関数を用いる。

TRANSLATE('000111222333', '0123, 'aBcD');

例えば上記のような使い方をした場合、「000111222333」中の「0」は「a」、「1」は「B」、「2」は「c」、「3」は「D」に置換される。

次に下記のような使い方をした場合。

TRANSLATE('000111222333', '0123, 'aBc');

「3」に対応する文字列が存在しないため、「000111222333」中の「3」は空白文字列に置き換わる。

 

【PHP】JSONエンコード、デコード処理中に発生したエラーを取得する。

めも。

json_last_error()を用いる。

$str = '{"hoge": "foo", "piyo"}';

$json = json_decode($str);

$err = json_last_error();

var_dump($err);

↓

int(4)

返却される整数値に対応する定数は下記の通り。
上から順に0,1,2,3,4,5と対応する。

JSON_ERROR_NONE
JSON_ERROR_DEPTH
JSON_ERROR_STATE_MISMATCH
JSON_ERROR_CTRL_CHAR
JSON_ERROR_SYNTAX
JSON_ERROR_UTF8

 

【PHP】秘密鍵を用い、指定したアルゴリズムでハッシュを生成する。

めも。

hash_hmac()関数を使う。

$secretKey = 'foobar';

$data = 'hogehoge';
// 秘密鍵を用いてハッシュを生成
$hash_hmac = hash_hmac('sha512', $data, $secretKey);
// 秘密鍵を用いないでハッシュを生成
$hash = hash('sha512', $data);

var_dump($hash, $h);

↓

string(128) "ccfb4235adbcaa506f944e641b8f20ee31ce2f5df145c22d85155be382f3ef65e7e1e42bd82385b10e98019a630e3ed65d217f639541e9924426d59a96e9c9fd"
string(128) "2b7e36b16f8a849ef312f9ef5ff9b3f4281a8681d0657150899f1113a0eecfdbb4491da763159055b55e122e85281415b11897d268e124f9ef2b40457a63a465"

当然結果は異なる。

 

【PHP】すべての定義済み変数を配列で取得する。

めも。

$name = 'yamada';
$age = '20';
$email = 'noreply@example.com';

$vars = get_defined_vars();

var_dump($vars);

↓

array(3) {
  ["name"]=>
  string(6) "yamada"
  ["age"]=>
  string(2) "20"
  ["email"]=>
  string(19) "noreply@example.com"
}

そのまんまやね。

 

【PHP】指定した長さ、値で配列を埋める。

めも。

■配列長が10になるまで右側を0で埋める

$arr = array(1,2,3);

$arr = array_pad($arr, 10, 0);

var_dump($arr);

↓

array(10) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(0)
  [4]=>
  int(0)
  [5]=>
  int(0)
  [6]=>
  int(0)
  [7]=>
  int(0)
  [8]=>
  int(0)
  [9]=>
  int(0)
}

■配列長が10になるまで左側を0で埋める

$arr = array(1,2,3);

$arr = array_pad($arr, -10, 0);

var_dump($arr);

↓

array(10) {
  [0]=>
  int(0)
  [1]=>
  int(0)
  [2]=>
  int(0)
  [3]=>
  int(0)
  [4]=>
  int(0)
  [5]=>
  int(0)
  [6]=>
  int(0)
  [7]=>
  int(1)
  [8]=>
  int(2)
  [9]=>
  int(3)
}

 

【PHP】空の要素を削除して添字を振り直す。

めも。

array_filter、array_valuesを用いる。

$arr = array('hoge', 'piyo', '', 'fuga', '');	

$arr = array_values(array_filter($arr, 'strlen'));

var_dump($arr);

↓

array(3) {
  [0]=>
  string(4) "hoge"
  [1]=>
  string(4) "piyo"
  [2]=>
  string(4) "fuga"
}

 

【PHP】画像をbase64エンコードする。

めも。

echo base64_encode(file_get_contents('/path/to/image.jpg'));

 

【PHP】単語の先頭文字を大文字にする。

めも。

$str = 'controller action';
var_dump(ucwords($str));

↓

string(17) "Controller Action"