phpその他諸々。変な関数や使いにくい関数、使わない関数など | 15g.jp

Pocket

概要

宇宙人との挨拶並に覚えておくと便利な技を集めました

その他軽関数

shmop関数。共有メモリ関連。テンポラリファイルを作るよりも早い
system シェルでコマンドを実行し、すべての行を返す。失敗時はFALSE。これでいいと思う
shell_exec systemと同じと思う。エラーなど失敗時はnull。使いにくいと思う
passthru シェルでコマンドを実行し、すべての行をechoする。使わない。
exec シェルでコマンドを実行し、最後の行が返ってくる。lsなどでは使えない
POSIX関数。プロセス関連。一般サーバーではあまり使わない、使えない
getcwd()
posix_getcwd()

文字の属性を調べる関数

。必ずstringで渡すこと。2byteの整数(100など)はascii文字に置き換えられる
ctype_alnum — 英数字かどうかを調べる
ctype_alpha — 英字かどうかを調べる
ctype_cntrl — 制御文字かどうかを調べる
ctype_digit — 数字かどうかを調べる。引数はstringで渡す
ctype_graph — 空白以外の印字可能な文字かどうかを調べる
ctype_lower — 小文字かどうかを調べる
ctype_print — 印字可能な文字かどうかを調べる
ctype_punct — 空白、英数字以外の出力可能な文字かどうかを調べる
ctype_space — 空白文字かどうか調べる
ctype_upper — 大文字かどうか調べる
ctype_xdigit — 16 進数を表す文字かどうかを調べる

filter関数

filter_input – POST等のバリデイト、サニタイズができて便利

可変長の引数をもった関数を作る時

func_get_arg — 引数のリストから要素をひとつ返す
func_get_args — 関数の引数リストを配列として返す
func_num_args — 関数に渡された引数の数を返す

数値と文字列

一文字目が数値として認識できるなら普通に四則演算できてしまう。エラーにならない
$foo = “1” + “2a”; // 3
$foo = “1” + “0x33”; // 52
$foo = 1 + “b3”; // 1
$foo = 1 + “10b”; // $foo は integer です (11)

変数用の関数

変数の中身が存在するかどうか。issetが無難。emptyはやや危険と思う
isset 変数がセットされており、それが NULL でないことを調べます。
empty issetもしくはFALSEでないかどうか。FALSEはFALSE、””、0、0.0、”0″、NULL、長さ0のarray()、宣言だけの変数$var

unset — 指定した変数の割当を解除する
関数の中でグローバル変数を解除するには$GLOBALS[‘bar’]とする。が、そもsもおこの流れ自体がおかしいと思う

settype — 変数の型をセットする。
gettype — 変数の型を文字列で取得する。floatはdoubleになる

is_int — 変数が整数型かどうかを検査する
is_numeric — 変数が数字または数値形式の文字列であるかを調べる。十六進表記(0xf4c3b00c など) や二進表記 (0b10100111001 など) は認められません。
is_float — 変数の型が float かどうか調べる
is_null — 変数が NULL かどうか調べる
is_string — 変数の型が文字列かどうかを調べる
is_は他にも色々あるよ

解析用

print_r わかりやすく出力する。var_dumpとは好みで使い分け。ブログなどはこれの出力結果が見やすい
var_dump 全部出力する。本気のデバッグの時に。実務ではprint_r()より使い勝手が良い。
var_export 使わない。エクスポートするが、外部に出力・入力する場合は他の形式が良い。基本はdb、jsとの受け渡しはjson_encodeなど

以下は外部受け渡し用。

多分保存には使わない方が良いと思います。保存はdbで。
var_export
serialize
json_encode

PHP による HTTP 認証

。ベーシック認証はhtaccessじゃなくphpからも使える
http://php.net/manual/ja/features.http-auth.php#features.http-auth

ファイルアップロードに関するセキュリティ

http://php.net/manual/ja/security.filesystem.php

その他関数

eval — 文字列を PHP コードとして評価する。最後にセミコロンが必要。phpを抜けることも可能。言語構造
define 定数の作成。FOO;だけでも定数は作成できるがエラーになる。おそらく将来的に廃止
exit,die スクリプトの終了。どちらでもいい。好み。exitが好きです。関数ではなく言語構造。
sleep — 実行を遅延させる(秒単位)
usleep — マイクロ秒単位で実行を遅延する
time_nanosleep — 秒およびナノ秒単位で実行を遅延する
time_sleep_until — 指定した時刻まで実行を遅延する

splライブラリ

スタックやキューが使える。
class_parentsなどで親クラスやインターフェイスを調べることも可能

ミリ秒を扱う時

string date ( string $format [, int $timestamp = time() ] )でミリ秒は扱えない。DateTimeクラスを使う

他便利そうな関数

array_pad — 指定長、指定した値で配列を埋める。テスト用
array_fill – 同上
range — ある範囲の整数を有する配列を作成する
shuffle — 配列をシャッフルする
list – php7で引数に配列を使う時の挙動が大きく変わったので要注意
set_error_handler エラー処理を変更
trigger_error エラーを発生させる
tmpfile — テンポラリファイルを作成する
ini_set – phpの設定を変更する
ZipArchiveクラス zipを扱うことが出来る。他にrarやphar形式なども
curl_multi_add_handle cURLはweb上ファイルの読み込み。複数同時リクエストなどが出来る
ftp_connect ftp等 ftp接続が可能
md5 — 文字列のmd5ハッシュ値を計算する
md5_file — 指定したファイルのMD5ハッシュ値を計算する
similar_text — 二つの文字列の間の類似性を計算する
strip_tags — 文字列から HTML および PHP タグを取り除く
mb_list_encodings — サポートするすべてのエンコーディングの配列を返す。一度見ておいても良いかも
get_defined_vars — 全ての定義済の変数を配列で返す

他変な関数。

簡単に言うと、出来ないことは基本的にない。不便なところなどはそれなりにある。
uopz_delete 関数の削除
Runkit~ サンドボックス
OPcache~ キャッシュを作成出来る
ob_start – 出力バッファリングが可能になる。
memtrack メモリの追跡が可能になる
error_get_last – 最後に発生したエラーを取得する。
htaccessをphpから操作(したように見せかける機能)などもある
メモリなどを直接触ったり関数や変数の作成などおおよそなんでも可能
キャッシュやファイルごとエンコードなど色々できる。多分使わない。
apdというデバッグモジュールなどもある。多分使わない
phpのバージョンで分岐などもできる
ファイルの最終更新時刻の取得
環境変数
date_sun_info日の出/日の入り時刻と薄明かり (twilight) の開始/終了時刻の情報を含む配列を返す
GUI用関数。class UI。php7以降で使用可能らしい。多分使わない…
apache_get_version 帰ってこない。’apache’になる。アパッチのバージョンなんて取らないからどうでもいいか…?
検索エンジンを搭載可能。今はgoogleでいいけど、mnoGoSearch、Solr、Sphinx 、Swish などがあったようだ
CHDB (constant hash database) は、読み込み専用db。高速だけど追加インストールなどが必要。使いたいけど、使わない方が良いと思う。
count_chars 引数の各文字の出現頻度を数えてくれる。
addslashes 使わない。
str の metaphone キーを計算します。
metaphone — 文字列の metaphone キーを計算する。soundex() と同様に metaphone は、音が似た単語について同じキーを作成します。
parse_str URLの?以降を受け付けるようなもの。使わない
str_word_count わかちがきの単語数を数える。日本語には無理
connection_status 接続されているかどうかのステータス。接続されていれば0
stream_wrapper ストリームラッパー。http://をfoo://などでも読み書きできるようにする。使わん…
parse_url — URL を解釈し、その構成要素を返す
Collator — Collator クラス。辞書順に並び替えできるが、sort()でいい

簡単な復元可能エンコード

uuencode、base64、rot13等がある。strrevで文字列を逆にするのを組み合わせるだけでもなかなか複雑になる。ゲームのパスワードぐらいならこれでいいと思う。

magic_quotes

magic_quotes(マジッククオート)という機能があり、廃止されている。
DBに格納する時のエスケープをバックスラッシュからクオートにする機能だったらしい