IT

PythonでPHPのserialize、unserialize関数が欲しかったのでChatGPTに聞いたらライブラリを教えてくれた

ポストネッコ

以前、WordPressの権限データが連想配列をシリアル化したものだということを突き止めました。

このおかげで権限周りの実装の幅が広がりました。

あわせて読みたい
【WordPress】特定の権限のユーザーリストを取得する方法
【WordPress】特定の権限のユーザーリストを取得する方法

ところで、WordPressを基盤としたWebシステムを開発しているとバックグラウンド処理をPythonに任せたいときがあります。

PHPでも可能ですが、単独のプロセスとして実行したときWordPressのDB操作に特化した$wpdbオブジェクトが使えなかったので断念しました。

しかし処理にユーザー権限が絡むと、PHP特有の形式でシリアル化格納された権限データをDBから取得してPython上で値に戻したり(アンシリアライズ)、Pythonの変数をPHPと同じ形式でシリアル化できるのかという懸念材料があります。

そこでPythonでもPHPのserialize、unserializeができないかChatGPTに聞いてみたら、なんとライブラリを教えてくれました。

phpserializeのインストール

PHPのserialize、unserialize関数に相当する処理をするライブラリは「phpserialize」というそうです。

次のコマンドでインストールします。

1pip install phpserialize

ライブラリの動作確認

ChatGPTが出力してくれたサンプルを実行してみます。

シリアライズされたデータを辞書型に変換

まずはシリアライズされた権限データを変数にしてみます。

1import phpserialize
2
3serialized_string = 'a:1:{s:6:"editor";b:1;}'
4value = phpserialize.loads(serialized_string.encode('utf-8'))
5print(value)
6
7# 出力結果
8# {b'editor': True}

OKですね。

辞書型の変数をシリアライズ

次は反対に辞書型の変数をシリアライズします。

1import phpserialize
2
3data = {'editor': True}  # 例としてPythonの辞書を作成
4
5serialized_data = phpserialize.dumps(data)
6print(serialized_data.decode('utf-8'))
7
8# 出力結果
9# a:1:{s:6:"editor";b:1;}

こっちもOKですね。

PHPのserializeと同じ結果になりました。

まとめ

ChatGPTは主に実装が面倒なコードの生成に使っていましたが、適したライブラリがある場合は教えてくれるんですね。

また1つAIの使い方を覚えることができました。

収穫 収穫!

ABOUT ME
ポストネッコ
ポストネッコ
1998年生まれ。
高卒→工場勤務→憧れのあったSEに転職。
休日にコメダ珈琲のモーニングをゆっくり楽しむのが好きです。
記事URLをコピーしました