PHP7.3 strpos()で非推奨表示が発生

とあるプラグイン使っていたらstrpos()の箇所で非推奨(Deprecated)が発生。

Deprecated:  strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior

実はPHP7.3からstrposの第2引数に文字列以外のものが入ってくると非推奨の表示がされるようです。地味にマニュアルに詳細が見つけられなかったので若干はまりました。

https://www.php.net/manual/ja/function.strpos.php



<?php
$haystack = 'abcdefg';
$needle   = 'cde';

// $haystackの中から'cde'が始まる位置を返す
echo strpos($haystack, $needle);

// 2

あるプラグインの修正

該当箇所のソースコードを見ると$needleの部分にfalseが入ってくる可能性がありましたので、とりあえずこんな形で応急処置を行っておきました。

<?php
$haystack = 'abcdefg';
$needle   = 'cde';

// $haystackの中から'cde'が始まる位置を返す
if ( is_string($needle) ) {
    return strpos($haystack, $needle);
}
else {
    return false;
}


コメントを残す