noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

php 覚書き

phpの勉強の教材として、さまざまな本が出版されていますが、それらを少しずつ、理解度が薄いところを中心に、基本に立ち返りながら研鑽しています。 もちろん、ネットからの情報も欠かせないので、本、ネットの両方を軸に学習を進めています。 少し古めの本を利用するときの注意点。 自環境のphpのバージョンが最新で、学習に使う本やサイトが古いと、エラーを吐いて、すぐに動作確認できない場合があります。 今回は次のような場面で、エラーが吐かれ、若干の変更後、動作確認できた。 ちなみにphpの自環境は5.4.7で、学習に使った本のphpバージョンは4.3。この差だけでもいろいろなエラー発生の要因になりそうですが。古めのスクリプトを、新しいスクリプトに変更する際の知識になるかと思い、触れてみました。 まず一つ目。 define関数についてです。本によると、defineで定義する場合、 define(DATA,0) define(NAME,1) define(BODY,2) こんな感じで書かれていましたが、自環境ではエラーを吐いて、動きません。 調べてみると、define(定数名、内容)の定数名はダブルクォーテションでくくる必要がある模様。 さっそく、それぞれの定数名にダブルクォーテションをつけてみると動作しました。 次にereg_replace関数とsplit関数 上のふたつ、php5.3以降推奨されていない関数ということです。 なので、それぞれ変更が必要です。

× $data[$i] = ereg_replace("\n$","", $data[$i]);
○ $data[$i] = preg_replace("/\n$/","",$data[$i]);
× $data[$i] = split(",", $data[$i]);
○ $data[$i] = preg_replace("/\r$/","",$data[$i]);

※「\n$」は行の末尾の改行コードを現しています。 phpのバージョン違いの学習をする際には注意が必要ですね。