トップページ⇒php
997コメント327KB

【PHP】自作スクリプト発表会

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/03/30 11:55ID:M/C/V7hb
自分が書いたPHPスクリプトを発表するスレ。
初心者が書いた入門スクリプト、ベテランが書いたすげースクリプト。
発表してね。
予めスクリプトの内容を明記してURLを貼り付けるのがよろしいかと。
マターリ進行でいきませう。

PHPが使える無料サーバ情報(レッツPHP!):
http://php.s3.to/php/
0455nobodyさん2006/01/21(土) 18:36:33ID:???
>>454
訂正しても使えないものは使えない
自分で試してからにしてくれ
0456nobodyさん2006/01/21(土) 19:14:05ID:???
>>455
使えるよ。
使い道は無いけど。
名前に動作確認済みって書いてあるし。
0457nobodyさん2006/01/21(土) 23:10:58ID:???
454は俺も動かなかった
ま、どうでもいいけどさ
0458nobodyさん2006/01/22(日) 00:32:05ID:???
頭の中でも動かなかった
0459nobodyさん2006/01/22(日) 02:08:31ID:???
配列のほうをシャッフルするのか
俺なら添え字を乱数で生成するけど
0460nobodyさん2006/01/22(日) 02:16:54ID:???
そもそもエラーで(ry
0461作ってみたわけだが@動作確認済み2006/01/22(日) 02:43:40ID:???
私はエラーでなかった。
需要ないけどね、このおみくじ…。
0462nobodyさん2006/01/22(日) 08:45:02ID:???
PHPよくわからないけど配列のやり方の勉強になった。
ここって初心者が書いたスクリプトもOKなんでしょ?
こういう雰囲気だと出しにくいよ。
0463nobodyさん2006/01/22(日) 08:58:32ID:???
>初心者が書いた入門スクリプト、ベテランが書いたすげースクリプト。
どっちも歓迎。
まぁ叩かれても諦めずにやれば良い物が書けるようになるさ
0464nobodyさん2006/01/22(日) 13:00:12ID:???
じゃあ、俺も、、
『携帯固有番号対応ホスト抜き出し関数』

function Get_USER_HOST(){
$host = getenv("REMOTE_HOST");
$addr = getenv("REMOTE_ADDR");
if($host == "" || $host ==$addr){
$host = gethostbyaddr($addr);
}
if(ereg("docomo.ne.jp",$host)){
$serial = $_SERVER[HTTP_USER_AGENT];
$serial = explode("ser",$serial);$serial = $serial[1];
$serial = substr($serial, 0, 11);
}
if(ereg("ezweb.ne.jp",$host)){
$serial = $_SERVER[HTTP_X_UP_SUBNO];
$serial = str_replace(".ezweb.ne.jp","",$serial);
}
if(ereg("jp-[a-z].ne.jp",$host)){
$serial = $_SERVER[HTTP_USER_AGENT];
$serial = explode("SN",$serial);$serial = $serial[1];
$serial = substr($serial, 0, 11);
}
if($host == "p2.2ch.net"){
$serial = $_SERVER[HTTP_USER_AGENT];
$serial = explode("p2-client-ip: ",$serial);$serial = $serial[1];
$serial = explode(";",$serial);$serial = $serial[0];
}
$USER_HOST['host'] = $host;
$USER_HOST['serial'] = $serial;
return $USER_HOST;
}
0465nobodyさん2006/01/22(日) 13:18:34ID:???
なんとも気持ちの悪いソースだ
0466nobodyさん2006/01/22(日) 13:43:40ID:???
独学我流でやるとこうなるってことだ、、
0467nobodyさん2006/01/22(日) 14:24:04ID:???
$serial 使いすぎです><><><><><><
0468nobodyさん2006/01/22(日) 14:31:40ID:???
>>454
普通はこう
配列のkeyに日本語よくないねー
<?php
header("Content-Type: text/html; charset=Shift_JIS");
$data = array(
array( '大吉','残念、大吉を出すために運を使ってしまった'),
array( '中吉','ラッキー、今日はいいことありますよ♪'),
array( '小吉','小さな幸せ'),
array( '吉','つまらん一日を…'),
array( '凶','引き籠る')
);
$num = rand( 0, count( $data)-1);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<title>おみくじ</title>
</head>
<body>
<h1>おみくじ</h1>
<dl>
<dt><?php echo $data[$num][0]; ?></dt>
<dd><?php echo $data[$num][1]; ?></dd>
</dl>
</body>
</html>
0469nobodyさん2006/01/22(日) 15:23:12ID:???
>>468 GJ
うごいた
0470nobodyさん2006/01/23(月) 14:44:05ID:???
おれなら

array(
array(
'fortune' => '大吉',
'comment' => '残念、大吉を出すために運を使ってしまった'
),
array(
...
),
...
);

ってやるな
0471nobodyさん2006/01/23(月) 17:49:51ID:???
おれなら

<?php
header("Content-Type: text/html; charset=Shift_JIS");
$data = array(
array( '凶','引き籠る')
);
$num = rand( 0, count( $data)-1);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<title>おみくじ</title>
</head>
<body>
<h1>おみくじ</h1>
<dl>
<dt><?php echo $data[$num][0]; ?></dt>
<dd><?php echo $data[$num][1]; ?></dd>
</dl>
</body>
</html>

ってやるな
04724682006/01/23(月) 20:29:00ID:???
>>470
コーディング量が増えただけ
>>471
ちょwwwかわってないww

むしろ、こういうのはタブとかコンマ区切りのテキストファイルとかでデータ作っとく方がいいよね

<?
/* テキストファイルex.txt
大吉,残念、大吉を出すために運を使ってしまった
中吉,ラッキー、今日はいいことありますよ♪
小吉,小さな幸せ
吉,つまらん一日を…
凶,引き籠る
*/
$tmp = file( 'ex.txt');
$val = '';
foreach( $tmp as $val){
$data[] = explode( ',', $val);
}
nl2br( print_r( $data));
?>
0473nobodyさん2006/01/23(月) 20:37:48ID:???
>$val="";
不要
04744702006/01/24(火) 09:31:49ID:???
>>472
> むしろ、こういうのはタブとかコンマ区切りのテキストファイルとかでデータ作っとく方がいいよね

基本はそれ前提で考えてる
なんで連想配列にするかっていうと、二次元配列の添字だけ
見ても何の処理してるのか分かりにくいから

まぁこんだけのスクリプトならどうでもいいけど、分かりやすく
書く習慣はとても大事だと思っているんで
0475nobodyさん2006/01/24(火) 12:34:45ID:???
>>
473
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E5%A4%89%E6%95%B0%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96&num=50
0476nobodyさん2006/01/24(火) 14:01:05ID:???
>>475
配列に入っている値を順に取り出す処理でループの外の初期化になんの
意味があると思って Google へのリンクを貼ってるのだろう
0477nobodyさん2006/01/24(火) 16:41:34ID:6HwgBAbK
>>80
このスクリプト欲し過ぎる
0478少佐 ◆tkyK4yl1H6 2006/01/24(火) 22:40:36ID:???
>>477
似たようなのでよければ(´゚д゚`)
http://sv1.no-ip.org/mcs/
ソースはhttp://sv1.no-ip.org/download/mcs.zipです。
短時間で作ったので不完全だったらごめんなさい。
04794772006/01/24(火) 22:55:14ID:???
>>478
神過ぎる。
ありがたく使わせて頂きます。
0480少佐 ◆tkyK4yl1H6 2006/01/24(火) 23:04:17ID:???
>>479
どういたしまして過ぎます。
1カ所だけ修正したので、DLしなおしてもらえるとうれし過ぎます。
04814772006/01/24(火) 23:21:50ID:???
>>480
早速DLし直させて頂きました!
ありがとうございま過ぎる。
0482nobodyさん2006/01/24(火) 23:32:13ID:???
少佐(*´Д`)´`ア´`ア
0483少佐 ◆tkyK4yl1H6 2006/01/25(水) 01:05:59ID:???
たびたびごめんちゃい。
ログの上限を超えた場合の自動削除で、ファイルを削除し忘れてますたorz
修正しときますた。
あと、>>80氏のより遙かにヘボいと思われます。
保守できないサイトの多いこと多いこと。
0484popo2006/01/25(水) 07:39:44ID:???
高性能テキストカウンターをつくっているんですが高機能と言ったらどんな機能が必要でしょうか?
0485nobodyさん2006/01/25(水) 09:18:32ID:???
>>484
高性能なのか高機能なのかどっちだ?
どちらにせよ、機能的にはアクセス解析で何ができるかが肝となるわけだが。
0486nobodyさん2006/01/25(水) 10:03:40ID:???
>>484
面白い。サイコーに面白いよ。
0487nobodyさん2006/01/25(水) 14:19:04ID:???
>>484
スレ治外
0488nobodyさん2006/01/25(水) 15:03:13ID:???
>>484

強固なロック(環境に依存しない unix windows)
今日、昨日、全部
二重ログ(トラブル時自動復帰)
ログのバックアップ(上記の自動復帰の予備)
時間指定で連続カウントしない設定可能
画像、画像連結、GD、テキスト設定可能
桁数設定可能
javascript ssi img php それぞれの呼び出しに設定可能

こんな感じでどう?
0489nobodyさん2006/01/25(水) 15:37:40ID:???
>>488
>>484 はテキストカウンタって言ってるわけだが
0490nobodyさん2006/01/25(水) 15:42:30ID:???
>>483
削除パス付きにするのは難しいこと?
0491少佐 ◆tkyK4yl1H6 2006/01/25(水) 18:01:09ID:???
>>490
難しいというか、え?何のこと?というあれです。
そのようにしておきました。
ログデータの互換性が無くなったかもしれません。
.htaccessを追加しましたが、確認してないのでよくわかりません。
DLは同じURLからお願いします。
0492nobodyさん2006/01/25(水) 19:16:02ID:???
>>491
お先においらが頂いた ムフ♥

少佐(*´Д`)´`ア´`ア
0493nobodyさん2006/01/25(水) 22:21:32ID:???
>>491
ggggggggggggggggggggggggggggggggggggggggggj

纏めサイト運営してるんで�d
0494nobodyさん2006/01/26(木) 01:25:47ID:???
>>491
logも問題ないです、少佐ありがとう。
0495少佐 ◆tkyK4yl1H6 2006/01/26(木) 13:57:03ID:???
>>492-494
適当にやったものに限って使ってもらえてうれしいです。
明日引っ越しするので、しばらく鯖の電源を切ることになります。
引っ越し先でネットが繋がったら、またよろしくお願いしますm(_ _)m
0496nobodyさん2006/01/26(木) 17:02:00ID:???
ふむ、全裸で少佐の復活待ってる
0497nobodyさん2006/01/26(木) 17:48:31ID:???
少佐のサイトへ行くとfc2の無料鯖へ繋がる。
しかも、
>リアル引っ越し中です。そのうち復活する予定です
の文字。

少佐、つまりfc2へ入社すると暗に示しているんですね?
0498少佐 ◆tkyK4yl1H6 2006/01/26(木) 18:51:24ID:???
>>496
じゃあ僕も全裸で新幹線に乗りますね。
これで偶然すれ違ってもお互いに一目瞭然で安心です。

>>497
僕はfc2ちゃいます('A`)
NotFoundじゃマズいかなぁと思ったので適当に手軽なWebスペースをレンタルしただけです('A`)

ということで、PCを梱包してきます。
0499nobodyさん2006/01/26(木) 19:26:52ID:???
いてら〜 ノシ
0500nobodyさん2006/01/26(木) 23:12:52ID:???
少佐・・・どこへ・・・少佐(*´Д`)´`ア´`ア
0501nobodyさん2006/01/26(木) 23:33:36ID:P4JZCK77
思いっきり我流のphpフレームワークで恐縮ですが公開して見ました。

もしよろしかったらご覧いただければ幸いです。

http://pharon.lolipop.jp/

0502nobodyさん2006/01/27(金) 15:51:18ID:???
姉歯物件悲惨だな
0503nobodyさん2006/01/27(金) 19:10:28ID:???
>>501
hyoji がワロタ
05045032006/01/27(金) 19:16:05ID:???
でもすごいと思う。尊敬する。
0505nobodyさん2006/01/31(火) 15:03:45ID:???
これだけでっかいプログラム組むのすごいなぁ
俺なんかfunctionすら使わないで掲示板(ぽいの)作ったこともあるよぅ。

だからオブジェクトとか言われてもピンとこない(´・ω・)
0506nobodyさん2006/01/31(火) 16:03:46ID:???
1つの処理で1関数、1つの役割で1オブジェクトって感じで作ってるな。
個人的に関数はパッと見て理解出来る数行にしときたいけど、2・3行の関数を大量に作ると見難くなるし何より名前が雑に・・英語か、英語力の無さが原因なのかァァァァァ

まぁ休日に趣味っぽい感じでやってるだけだから、そんなに気を使う必要はないけど
0507nobodyさん2006/01/31(火) 16:59:18ID:???
501が何に使えるのかさっぱりわからん
誰か簡単に説明してくれ
0508nobodyさん2006/01/31(火) 20:58:26ID:???
心意気は買ってあげたい。中の人、頑張れ。
0509nobodyさん2006/01/31(火) 21:35:57ID:???
最近2chで良く聞くけど「中の人」って何?
0510nobodyさん2006/01/31(火) 22:00:19ID:???
>>509
「中の人など居ない!!」

最近て言うか、かなり前からあるだろ
0511nobodyさん2006/02/01(水) 11:02:09ID:???
>>507
簡単にコーディングできる。
0512nobodyさん2006/02/03(金) 07:41:33ID:???
      .|┃
 スス--ッ .|┃""ヽ、
      .|┃゚ ▼)
    .●..|┃゚Д゚) …少佐復活まだ?
_____|┃ ..|)
      .|┃_,,ノ
_____|┃U_
0513nobodyさん2006/02/07(火) 04:21:41ID:???
class File_Io {
private $filename = null;
private $fp = null;
const Read_Type = "r";
const Write_Type = "a";
public function __construct($fn) {
$this->filename = $fn;
}
private function File_Open($type) {
$this->fp = fopen($this->filename,$type)
flock($this->fp, LOCK_EX);
}
private function File_Close() {
fclose($this->fp);
}
public function File_Read() {
$this->File_Open(self::Read_Type);
$ret = fread($this->fp, filesize($this->filename));
$this->File_Close();
return $ret;
}
public function File_Write($value) {
$this->File_Open(self::Write_Type);
$ret = fwrite($this->fp, $value);
$this->File_Close();
return $ret;
}
}
0514nobodyさん2006/02/07(火) 19:27:07ID:???
>>513
何に使ったらいいの><?
0515nobodyさん2006/02/07(火) 20:00:29ID:???
スルーしとけ
0516nobodyさん2006/02/08(水) 16:37:51ID:O7y2qCCz
うごかねーから直した。
ファイル操作なんだなこれ
<?
class File_Io {
  var $filename  = '';
  var $fp     = '';
  var $Read_Type = "r";
  var $Write_Type = "a";
  function File_Io($fn) {
    $this->filename = $fn;
  }
  function File_Open($type) {
    $this->fp = fopen($this->filename,$type);
    flock($this->fp, LOCK_EX);
  }
  function File_Close() {
    fclose($this->fp);
  }
  function File_Read() {
    $this->File_Open( $this->Read_Type);
    $ret = fread($this->fp, filesize($this->filename));
    $this->File_Close();
    return $ret;
  }
  function File_Write($value) {
    $this->File_Open( $this->Write_Type);
    $ret = fwrite($this->fp, $value);
    $this->File_Close();
    return $ret;
  }
}
?>
0517nobodyさん2006/02/08(水) 18:10:45ID:???
全然関係ないけど
IOとかって「I」と「O」で別の単語だから、FileIOって書いたほうがいいんかんうぇ?
05184132006/02/08(水) 18:21:10ID:8f4tRzkY
バージョンうp!
http://life.my.land.to/send_mail.zip
添付ファイルも使えるようになったよ。
0519nobodyさん2006/02/08(水) 18:22:21ID:O7y2qCCz
>>517
IOってそれぞれ何の意味があるの?
in,out?
0520nobodyさん2006/02/08(水) 18:50:55ID:???
C言語やC++言語の
stdioとiostreamのioと同じ意味だよ。
0521nobodyさん2006/02/08(水) 19:56:09ID:???
>>518
404 orz
05225182006/02/08(水) 21:01:58ID:???
失礼!
http://life.my.land.to/src/send_mail.zip
0523nobodyさん2006/02/08(水) 21:28:14ID:???
>>522
�d�d
0524nobodyさん2006/02/08(水) 22:16:00ID:???
そうか…
File_Io->File_Write("filename");
とかやりたいってことなのね。
個人的には
fileIO->write("filename");
と極力記号など打ちたくない気もするけども。
0525nobodyさん2006/02/08(水) 22:31:57ID:???
ようやくfunctionばっかりのプログラムを書くことができますた
これからOOPをはじめまつ
0526nobodyさん2006/02/09(木) 01:29:40ID:???
>>513
PHP5の記述。

>>516
PHP4の記述。
0527nobodyさん2006/02/10(金) 14:00:56ID:???
ソース貼り付けられる場所を教えてください。。
0528nobodyさん2006/02/10(金) 15:41:08ID:???
>>527
( ゚д゚)ポカーン
0529nobodyさん2006/02/10(金) 15:42:12ID:???
>>526

>>516 はPHP5でうごく?
0530nobodyさん2006/02/10(金) 17:06:10ID:???
>>518

/usr/sbin/sendmail

せめてsendmailのパスくらいは指定出来るようにしようぜ。
他にも突っ込みたいところ結構あるが。
0531nobodyさん2006/02/10(金) 17:23:37ID:???
>>530
折角だから全部教えたれ。
その方がよくなるだろうし。
0532nobodyさん2006/02/10(金) 17:30:16ID:???
>>518

i18n_mime_header_encode
i18n_convert

って何の関数?
0533nobodyさん2006/02/10(金) 17:32:16ID:???
mb_encode_mimeheaderとmb_convert_encodingのエイリアスか。
自己解決。
05345182006/02/10(金) 20:21:39ID:???
>>530 >>531
ぜひ聞きたいです。よろしくお願いします(`・ω・´)
0535nobodyさん2006/02/11(土) 03:09:53ID:???
>>529
動く
0536nobodyさん2006/02/11(土) 10:41:08ID:???
>>535
�dクス
0537nobodyさん2006/02/11(土) 15:48:57ID:???
エラー処理まったく無いのもどうかと思うがな
0538nobodyさん2006/02/13(月) 10:20:05ID:???
少佐とかっていうコード汚すぎる
0539nobodyさん2006/02/13(月) 11:38:37ID:???
見本希望。
0540nobodyさん2006/02/13(月) 13:09:33ID:???
>>539 禿同
0541nobodyさん2006/02/13(月) 13:32:47ID:???
少佐信者降臨!
0542nobodyさん2006/02/13(月) 15:23:56ID:???
538じゃないけど、俺もそう思う。まだ1ファイルしか見てないけど。
少佐のソース、upload_check.phpの150行目。
ImageCreateFromwbmp()って関数だけど、
これってWindowsのビットマップファイル用の関数じゃないから
.bmpの画像ファイル受け取っても正常に処理できるのかな?
たしかWBMPって「wireless bitmap」とかだった気がする。特殊端末向けの。
この関数にwindows系のBMPファイル与えたらどうなるのか試してないけどさ。

あと、そもそもアップロードされてきたファイルの拡張子を信頼する形で
ソースが書かれてるから、実際には違う形式のものとかをアップできてしまう気もする。

それから同じ処理を何度も書きすぎ。具体的には・・・
サムネイル(小)〜(大)の部分。200行近くあるけど、小も大もひとつに出来る。

それからimageCreateTrueColor()関数とImageCopyResampled()関数。
TrueColorじゃないGIF形式にも使ってるのが謎。上記二つはTrueColor向け関数。
TrueColorじゃないならimageCreate()、ImageCopyResized()あたりな気がする。

それからDB接続とかの基本的な部分はクラス化するなり関数化するなりして、
別ファイルにまとめてrequire_once()して使ったほうがいい。
文字数チェックや禁止語句チェックなんかも関数化とかして別ファイル行き。
これらはパラメータ変更するだけで何度も色んなソースで使えるから。
機能追加、修正のときにそのほうが見やすいし楽。1ファイルにしかないからそこを修正すればいい。

俺も大したことないからでかいこと言えないんだけど。
初期からこういうソースの書き方に慣れていると絶対苦労する。
でも彼はこうやって成果物を出しているから立派だと思う。
これから色々学んで成長していくのだろうから、生暖かく見守りたい。

前まで職場にいたPHP職人(経験3年以上?とかだったと思う)は、
こういうソースの書き方だったけど、ひどすぎてメンテとかできない、パフォーマンスもひどい。
時間と相談しつつ設計からやり直してどんどん書き直してるよ。
0543nobodyさん2006/02/13(月) 18:19:55ID:???
>>538
お前の日本語がおかしい
0544nobodyさん2006/02/13(月) 20:07:17ID:???
>>542
添削おながいしまつ…(´・ω・)
0545nobodyさん2006/02/14(火) 06:16:12ID:???
>>542
542ですけど、添削してもらうとか考えないでとりあえず造ったものを
みんなに見せたらいいんじゃないかな。
そういうスレだと思い込んでる俺がいる。
それに「100点満点のソースは実在しない」と思うよ。

とりあえず晒しとけば、アイデアはいいが設計やソースの書き方がアレだなーとか、
いい筋してるがもうひと頑張りだとかコメント付く気がする。
もしかしたらココこうしたほうがいいんじゃない?とか誰かが言ってくれるかもだし。
0546少佐 ◆tkyK4yl1H6 2006/02/14(火) 06:39:26ID:???
>>538氏
汚くてごめんなさい自覚してますorz

>>542氏
まさにこれ、という感じです。
wbmpについては後から気づいたんですが、
ほとんど関数化とかしてないので、めんどくさくて残してました。
config.phpの設定ではbmpは削除しておいたと思います。
サムネイルについてはもう完全に自己流でルーズリーフに書きながら考えたので、
ものすごくグチャグチャだと思います。
頭が追いつかないので、「これをこうして、こっちをこうして…」という感じで、
ひとつひとつ完結させながらやってるのが問題だと思います。
逆にminilogの方は関数使いすぎで自分でもわけわかんなくなってきました。

>>512氏
今月から毎日18時間働いております('A`)
今は徹夜中の小休止ですorz
0547nobodyさん2006/02/14(火) 06:45:08ID:???
キタ━━━━━━( ´∀`)━━━━━━ !!
0548nobodyさん2006/02/14(火) 07:41:01ID:???
  _、_
( ,_ノ` )y━・~~~ 少佐、動けばいいんだよ動けば
0549その12006/02/14(火) 11:26:45ID:O2fgq8yY
自分もファイル操作用クラスを作ってみた。
長いので分割します。
------------------------------------
<?php
/**
 * 特定のディレクトリ内のファイルの読み書きを行うクラスです.
 */
class file_manager {
  /**
   * ディレクトリを表す文字列です.
   */
  var $dir;
  
  /**
   * 指定されたディレクトリ内のファイルを操作する新しい file_manager を構築します.
   * 引数が省略された場合はカレントディレクトリ(./)を扱います.
   * 
   * なお、指定されたディレクトリが見つからない場合は作成を試みます.
   * 作成に失敗した場合は警告を発生させます.
   *
   * @param $dir 操作対象のディレクトリ. 相対パスまたは絶対パス. ただし末尾に '/' は含めない.
   */
  function file_manager($dir = ''){
    $this->dir = (0 < strlen($dir)) ? $dir : '.';
    // 指定されたディレクトリが存在しない場合は作成を試みる.
    if(!file_exists($this->dir)){
      $success = @mkdir($this->dir);
      if(!$success) 
        trigger_error('FILE_MANAGER_ERROR:('.$dir.')は利用することができません', E_USER_WARNING);
    }
  }
0550その22006/02/14(火) 11:28:38ID:O2fgq8yY
  /**
   * 指定されたファイルの中身を返します.
   * ファイルが存在しない場合は NULL を返します.
   */
  function read_file($filename){
    $file = $this->dir.'/'.$filename;
    $lines = @file($file);
    if(!$lines) return NULL;
    $str = '';
    foreach($lines as $line){
      $str .= $line;
    }
    return $str;
  }
  
  /**
   * 指定されたファイルの中身を与えられた文字列で上書きします.
   * ファイルが存在しない場合は新たに作成します.
   *
   * @param $filename ファイル名
   * @param $contents ファイルに書き込むデータ
   */
  function write_file($filename, $contents){
    $file = $this->dir.'/'.$filename;
    $fp = fopen($file, 'w');
    fwrite($fp, $contents);
    @chmod($file, 0666);
    fclose($fp);
  }
0551その32006/02/14(火) 11:29:52ID:O2fgq8yY
  /**
   * 指定されたファイルの名前を新しいファイル名に変更します.
   *
   * @param $oldfile リネーム対象のファイル名
   * @param $newfile 対象のファイルの新しい名前
   */
  function rename_file($oldfile, $newfile){
    return rename($this->dir.'/'.$oldfile, $this->dir.'/'.$newfile);
  }
  
  /**
   * 指定されたファイルを削除します.
   */
  function delete_file($filename){
    return unlink($this->dir.'/'.$filename);
  }
  
  /**
   * 指定されたファイルが存在するかどうかを調べます.
   * ファイルが存在する場合に TRUE を返します.
   */
  function file_exists($filename){
    return file_exists($this->dir.'/'.$filename);
  }
}
?>
0552nobodyさん2006/02/14(火) 14:21:08ID:???
>>549
すごくいいと思う。
こういうのは無しなんだろうか
function read_file($filename){
$file = $this->dir.'/'.$filename;
$str = @file_get_contents($file);
if( $str) return $str;
else return NULL;
}


0553nobodyさん2006/02/14(火) 14:45:56ID:???
>>552
どうもです。
file_get_contents にすればもっとシンプルに出来たんですが、
PHPのバージョンが古いと対応してないので、
代替手段としてこういう実装にしました。

PHPを導入してるレンタルサーバーって、
自分の知っている限りではみんなバージョンが4系なんだけど、
その中でも4.1*だったり4.3*だったりバラバラなんですよね。
0554nobodyさん2006/02/14(火) 19:34:08ID:???
foreach($lines?as?$line){
??$str?.=?$line;
}
これよりimplode使ったほうが速いよ
$str = implode('', $lines);
■ このスレッドは過去ログ倉庫に格納されています