phpのeregでDeprecatedエラーが出てるから調べてみたら使えなくなるという非常事態が発生

 

新たにレンタルサーバーを借りてシコシコとサイト制作に勤しんでいると
何やらページ上部にエラーメッセージが出ていることを確認!

なになに?eregで処理をしている行でエラーが出ているみたいだなぁ~。

 

Deprecated: Function ereg() is deprecated in ~

なんだこのエラーメッセージは、私は英語が苦手だ!Google先生に手伝ってもらおう!
(どんな些細で簡単な英文でも確実に翻訳サイトを利用するのが私のマナー)

eregのエラーメッセージ

Google翻訳いわく、「非推奨:関数の類似関数は()で推奨されていません」
なんだと!非推奨だと??前作ったサイトだと普通に動いていたぞ!仕方ない・・・
phpマニュアルを見てみよう!でも、書き方が玄人的で私の脳みそでは理解し難いから、あまり好きじゃないのよね。

赤い三角印で警告文キタ━(゚∀゚)━!

phpマニュアルereg

この関数はPHP 5.3.0 で 非推奨となりました。この機能を使用しないことを強く推奨します。
おもいっきり非推奨マークついてる!

ついでに、下記の関数もphp6で廃止。

php6で廃止されるかわいそうな関数たち

● ereg()
● ereg_replace()
● eregi()
● eregi_replace()
● split()
● spliti()
● sql_replace()

おいおい!使いまくってるよ!

どうも、すっごく前からわかっていたみたい・・・2010年には既に。。
じゃあどうすんだ!ってことで調べてみた。

pregはPerl互換(PCRE関数)、eregはPOSIX拡張ということで
POSIX拡張が廃止となるみたいだよ。
で、Perl互換(PCRE関数)の下記の関数を使えということみたい。

php6でさらに注目される関数たち

● preg_match()
● preg_match_all()
● preg_replace()
● preg_replace_callback()
● preg_split()
● preg_quote()
● preg_filter()
● preg_grep()
● preg_last_error()

切り替えないといけないのかぁ~めんどくさいなぁ(゜_゜)

ereg_replaceの代わりでpreg_replaceを使う

私の場合は、ereg_replaceでエラーが出たのでpreg_replaceで同じ事をやってみる!
小難しく書くのは私が混乱するので実際に書いてみます!

<?php
$str_mae = 'この文のカンマを消してみようと思うよ!';
$str_ato = preg_replace('/カンマ/', '', $str_mae);
echo $str_ato;
?>

動いた!動いた!書き方は大して変わらないみたい。
置き換えたい文字、上記でいう「カンマ」の前後にスラッシュを加えること。
ereg_replace()ではスラッシュはありませんでしたね。

その他の関数の使い方や詳しい内容は、私が苦手なphpマニュアルでどうぞ!
http://www.php.net/manual/ja/ref.pcre.php

 

力技使ってエラー消してやるw

「php5.3でも非推奨で動くんだろ?だっらいいじゃねぇか!」
「php6になるまでに何とかするから!コードを書き直している暇など無い!」と
おっしゃる御人にはとっておきをご紹介!
サッと一行書き加えるだけで、あーら不思議エラー文が消えちゃいます!
そのコードがこれだ!

error_reporting(E_ERROR & ~E_NOTICE & ~E_PARSE); 

これを上の方に書き加えてたらエラーが消えるよ!根本解決じゃないよ!
php6になったら問答無用で動かなくなるよ!それまでに書き換えよう!

何か間違いがあったら教えて下さい。

投稿日: 2012/02/11
最終更新日: 2015/12/29
 
筆者のご紹介
角政典@moreiic
真性のお家大好きフリーランスです。プログラムよりご飯の方が断然好き!博多出身のデブデザイナー。インドアだけど遊んでくれる人募集中!
よく検索されてる記事