is_serialized() の使い方|説明・引数・注意点

説明

is_serialized() は、文字列がシリアライズされた形式かを判定する関数です。

基本構文

is_serialized( string $data, bool $strict = true ): bool

引数

  • $data:調べる文字列
  • $strict:厳密に判定するか

戻り値

シリアライズ形式なら true。

使い方(サンプル)

if ( is_serialized( $value ) ) {
	// シリアライズ済み
}

注意点

  • 文字列かどうかの形式判定のみを行います。

実務での使いどころ

  • 文字列が、PHPのシリアライズ形式かを、判定するとき。
  • データベースから、取得した値が、復元が必要かを、確認するとき。

よくあるミスと対処

  • 判定が true でも、安全なデータとは限らない。信頼できない入力は、復元しない。
  • 文字列以外を渡している。文字列で判定する。

NG例

if ( is_serialized( $_POST['data'] ) ) {
	$data = unserialize( wp_unslash( $_POST['data'] ) ); // 外部の入力を、復元している
}

OK例

if ( is_serialized( $value ) ) {
	$value = maybe_unserialize( $value ); // データベースから取得した、信頼できる値
}

使い分け早見表

関数 役割
is_serialized() シリアライズされた形式かを、判定する
maybe_unserialize() 必要なときだけ、元に戻す
maybe_serialize() 必要なときだけ、文字列にする

関連項目

maybe_serialize()、maybe_unserialize()

公式リファレンス:is_serialized() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました