phpでエラーがでた

 マンホール漫遊記のインデックスを作るPHPスクリプトがエラーを起こしていた。いわく「Fatal error: Call to undefined function mb_convert_encoding()」。ubuntuをアップグレードしてphp7になったせいだろうけど、mb_convert_dncodingは廃止になっているわけではない。検索。

weble.org

 なるほど。「sudo apt-get install php-mbstring」でインストール。

 しかし、今度は「Fatal error: Call to undefined function eregi()」と。ereg系関数はそのうち廃止されるとは知っていたが、ついにその時が来たのか。

5.3 の時点で非推奨となっていましたが、POSIX互換の正規表現に関する関数が取り除かれています。 影響を受けるのは以下の関数です。
ereg(), eregi(), ereg_replace(), eregi_replace, split(), spliti(), sql_regcase()
ereg に関連する殆どの関数が取り除かれました。今後は preg_match や preg_replace などの PCRE 系関数 を使うことになります。

 ということで、preg_matchで書き換え。見つかった時の返り値が違うのでif文も書き換え。

string の中で pattern がマッチした場合にはマッチした文字列の長さを返し、マッチしなかった場合 またはエラーとなった場合は FALSE を返します。

preg_match() は、pattern が指定した subject にマッチした場合に 1 を返します。 マッチしなかった場合は 0、エラーが発生した場合は FALSE を返します。