説明
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

コメント