phpQueryで「Array and string offset access syntax with curly braces is deprecated」

はじめに

PHPでスクレイピングする時によく使うライブラリー「phpQuery」を使っている時に、以下のエラーが出た。

Array and string offset access syntax with curly braces is deprecated

【Google翻訳】
中括弧を使用した配列および文字列オフセット アクセス構文は非推奨です

原因

「phpQuery」は最近更新されていないので、PHPの新しいバージョンに対応できていないのかもしれません。

ライブラリスクリプトの中に以下のような箇所がいくつかあり、その書き方が非推奨というエラーのようです。

$param{1} == 'n'

解決方法

その1

次のように波括弧を角括弧に置き換えます。

$param[1] == 'n'

数カ所あるのですべて修正したらエラーは出なくなりました。

その2

もっと簡単に解決する方法は、ライブラリを使う時に以下のように「@」を付けることでエラーの出力を回避できます。(根本的な解決にならないのと、別のエラーも無視してしまう可能性あり)

$html_dom = @phpQuery::newDocument($html_source);

まとめ

たまに使う時にこのエラーに出くわすので備忘録として残しておきます。スクレイピングするならPython使った方がいいのかな~と思う今日この頃です。