【PHP】質問スレッド Part5

このエントリーをはてなブックマークに追加
952nobodyさん:02/12/01 12:44 ID:EpowQ2LG
ちょっと伺いたいのですが
無料ホムペスペースのsendmailは
PHP4で使えますでしょうか?
953nobodyさん:02/12/01 12:49 ID:Ympa0jkR
>>952
当然使えます。sendmailもqmailも設定ひとつです
954952:02/12/01 12:53 ID:???
サンクスです!
早速、スクリプト探してきます!!
955初心者:02/12/01 15:01 ID:IYJM+D46
>>947
自分も丁度気になっていたところ。
ob_start("ob_gzhandler");
で良いと思うんですが。
956nobodyさん:02/12/01 15:53 ID:???
良い。
957nobodyさん:02/12/01 17:53 ID:???
変数宣言強制したい。
958nobodyさん:02/12/01 18:04 ID:???
>>947
今のPHPの設定を目を皿にして確認してみよう。
ただし、PHPでgzipコンプレスすると正常動作しなくなるスクリプトが少なからず出てくる。
(クライアント側ブラウザに圧縮されたバイナリデータが展開されてしまう)
スクリプトを修正すればなんとかなるとは思うが。

そろそろ新スレか?
959nobodyさん:02/12/01 19:13 ID:???
経験上、995まで大丈夫。(w
960nobodyさん:02/12/01 22:40 ID:???
精神衛生上、970くらいじゃないか?
961nobodyさん:02/12/02 00:30 ID:eE3XhUq7
POSTされた変数から手動で改行を取り除く処理で、

foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $value);
}
↑のように書くと意図したように動かない


foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $_POST[$key]);
}
↑のように書くとちゃんと動く

同じように見えるんだけどなにか違うの?
\nとかじゃなくてただのアルファベットとかだとちゃんと前者でもちゃんと動作するんみたい。
何故?誰か教えて。
962nobodyさん:02/12/02 01:50 ID:???
うちの環境(php-4.1.2-7)だとうまく動いた。
\nじゃなくて、\r\nに変更したけど。
963nobodyさん:02/12/02 04:08 ID:???
Part2 が立ったのは 995
Part3 が立ったのは 980
Part4 が立ったのは 999
Part5 が立ったのは ……HTML 化待ちで、漏れは読めない
964961:02/12/02 04:43 ID:eE3XhUq7
>>962
試してみた。
$_POST[$key] = str_replace("\r\n", "", $value);
だけだと成功

$_POST[$key] = str_replace("\r\n", "", $value);
$_POST[$key] = str_replace("\n", "", $value);
$_POST[$key] = str_replace("\r", "", $value);
3つ書くと失敗
後ろの$valueを$_POST[$key]に変更すると成功

php-4.2.2なんだけどなー。なんでだろう。
965nobodyさん:02/12/02 09:45 ID:vgT4ee9m
ダダダダ、ダダダダ、ヨザーー。

正規表現
966nobodyさん:02/12/02 23:01 ID:2uvkz+AI
最近PHPの勉強をはじめて、自分用に電車の時刻表を作ってます。
そこで祝日(成人の日)の判定が分からないです。

1月第2月曜日ってのはどうやって判定したらよいのでしょう?
教えてください。
967nobodyさん:02/12/02 23:34 ID:???
第二日曜が14日でなけりゃ第二日曜の次の日。
第二日曜が14日なら第二月曜は8日。
968ノウバディ:02/12/02 23:56 ID:yCCT0waL
レッツPHPのアクセス解析に、
CGIBOY同様の訪問回数、初回訪問日などを
誰かつけてください。
おながいします、。
969nobodyさん:02/12/03 00:53 ID:F9qCnjkA
966です。
>>967さんありがとうございます。

簡潔に書けそうなすばらしいロジックですね。
ただ、第二日曜を判定するロジック(書き方)が分からないのです。

教えてクンですみません。PHP4でのこの辺の書き方教えていただけないでしょうか。
970nobodyさん:02/12/03 01:26 ID:Q35J3m80
$timestamp = mktime(0, 0, 0, $month, 1, $year);
$first_day = getdate($timestamp);
if($first_day[wday] == 0)
  $second_monday = 8;
else
  $second_monday = 15 - $first_day[wday];
かな?
1日が日曜日なら第2月曜は8日、それ以外なら2週間後の今日から
最初の日曜日までの日数を引いた日、っていう感じ。
たぶん合ってると思う。
971nobodyさん:02/12/03 01:28 ID:???
ごめん、なんか自分で見直してみて説明変だな。
まあ、そんな感じで。
972nobodyさん:02/12/03 01:29 ID:???
$year = 2002;
$month = 1;
$the_day = happy_monday($year,$month);

echo $the_day;

function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}
973nobodyさん:02/12/03 12:11 ID:???
>968
レッツPHPの人にお頼み申せ。
974nobodyさん:02/12/03 16:07 ID:F9qCnjkA
>>966です。
>>970,972 ありがとう。休日(ダイヤ)か平日(ダイヤ)かの判定ができるようになりました。
こんな感じです。

//-----------------------------------------
//休日か平日の判定
function is_holiday($year,$month,$day){
$ls_day = sprintf("%02d/%02d",$month,$day);
$sflg = "weekday";
$holiday = array("01/01","02/11","03/21","04/29","05/03","05/05","07/20","09/15","09/23","11/03","11/23","12/23","12/30","12/31","01/02","01/03");
for ( $i = 0; $i < count($holiday); $i++ ) {
$holiday[$i] = holiday_shift($holiday[$i] . "/" . $year );
}
$holiday[16] = "01/" . sprintf("%02d",happy_monday($year,1));//成人の日
$holiday[17] = "10/" . sprintf("%02d",happy_monday($year,10));//体育の日
for ( $i = 0; $i < count($holiday); $i++ ) {
if ($ls_day == $holiday[$i]) {
$sflg = "holiday";
break;
}
}
return $sflg;
}
//-----------------------------------------
//ハッピーマンデー対応
function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}
975nobodyさん:02/12/03 16:07 ID:F9qCnjkA
974の続き

//-----------------------------------------
//祝日が日曜日の時には月曜日が休み
function holiday_shift($in){
$t = split("/",$in);
if(date("w",mktime (0,0,0, $t[0], $t[1], $t[2])) == 0) {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]+1);
} else {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]);
}
return $holiday;
}
976nobodyさん:02/12/03 19:51 ID:R/9PtWVb
htmlファイルから、
たとえば
<html><body><table><tr><td>文章</td></tr></table></body></html>
このようなファイルで<table>〜</table>までを取り出したいときにはどうしたら良いでしょうか?
この場合は
<table><tr><td>文章</td></tr></table>
を取り出せればいいのですが
宜しくお願いします。
977nobodyさん:02/12/03 20:18 ID:PNt+pMvy
>>976
<table>から</table>にマッチする正規表現で抜いてくればいいんじゃない?
978nobodyさん:02/12/03 23:16 ID:vkKrixb3
JpGraphをやりたくて、PHP徹底攻略実戦を買いました。
インストールしている途中でPHP.iniのインクルードパスのところで
いきづまってます。PHP.iniのインクルードバスがコメントになってる
からです。どうすればいいのですか?
Linux7.3です。LinuxもPHPも素人です。
7.3にPHPは既に入ってました。
<? phpinfo(); ?>は動作しました。
979nobodyさん:02/12/04 00:21 ID:???
//削除
980うえ〜ん:02/12/04 05:35 ID:XOwW5my4
こういうやつでなんで読み込んでくれないんでしょう?
全っ然わからん。PHP歴4時間・・・

-----test.php
<HTML><BODY>
<?php
$filename = "/home/hoge/hoge.dat";
$fp = fopen ("$filename","r");
flock ($fp,1);
$contents = fread($fp,filesize($filename));
flock ($fp,3);
fclose ($fp);
print $contents;
?>
</BODY></HTML>
981nobodyさん:02/12/04 06:23 ID:???
"home/hoge/hoge.dat"
982nobodyさん:02/12/04 06:25 ID:???
"./home/hoge/hoge.dat"でもいいけど。
983nobodyさん:02/12/04 06:35 ID:???
(´-`).。oO { エラー処理すればすぐ分かるのになぜしないんだろう
984nobodyさん:02/12/04 07:28 ID:???
そろそろ次スレきぼんぬ。
985nobodyさん:02/12/04 09:38 ID:???
>>984
あと10は逝けるね
986nobodyさん:02/12/04 10:57 ID:???
つーことで、テンプレ追加・修正案募集中。
987 :02/12/04 14:04 ID:xBoKBvCa
>>980
$fp = fopen ($filename,"r");
988nobodyさん:02/12/04 14:11 ID:???
ネームかパスかはちょっと悩むところだね。
989ageてもいい?:02/12/04 14:51 ID:???
WebServer の基本認証のユーザー名とパスワードって
取得できるのかなぁ?
990nobodyさん:02/12/04 14:52 ID:???
げっつ990!(ワラ
991nobodyさん:02/12/04 16:10 ID:???
1000取りage!!!!!!!!!!!!!!
992nobodyさん:02/12/04 16:12 ID:???
>>991 ageんなヴォケ!
993980 (そろそろ新スレ?):02/12/04 16:26 ID:XOwW5my4
>>980 です。ありがとうございます。色々試してみました。
けど・・・まだダメなんです。
教えて頂いたとおりに、
$filename = "./home/hoge/hoge.dat"; とか
$filename = "home/hoge/hoge.dat"; と
やってもダメでした。
ただエラーが表示されるようになって、
「No such file or directory 」といわれます。
読んだままファイルの指定の仕方が間違ってるみたいなんですが・・・

で、ご指摘頂いた /home とルートからフルパスで書くところをhome/と
していますが、どういった理由なのでしょうか?
それともそんな書き方はもともと出来なくて、全て相対パスで書くべき
なのでしょうか?
http://www.php.net/manual/ja/function.fopen.php
を見ると $fp = fopen ("/home/rasmus/file.txt", "r");
のようにルートからフルパスで書いてあります。

test.phpとhoge.datを同じディレクトリに入れて
$filename = "./hoge.dat"; としてみたら、エラーは全く出ない
のですが、
<HTML><BODY></BODY></HTML>
とだけ見えて内容を全然読んでくれませんでした。

ちなみに >>987 さんの言うとおりに4行目はこうしてみました。
$fp = fopen ($filename,"r");

質問ばかりで申し訳ないのですが、ご教授願います。

>>989 オレも知りたい・・・
994989:02/12/04 16:37 ID:???
Apache モジュールとして動作してればいいらしい。
phpinfo 見ると、、、Server API が、CGI になってた(鬱

どやってApacheモジュールにするのかなぁ?
995nobodyさん:02/12/04 16:50 ID:???
>>989
Apacheモジュール版なら
$HTTP_SERVER_VARS['PHP_AUTH_USER'], $HTTP_SERVER_VARS['PHP_AUTH_PW']
とか
$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']
で取れるだろ。

>>993
で、/home/rasmus/file.txt は有るの?
996995:02/12/04 16:53 ID:???
しもた。先書かれた。
>>994 root権限あるの?
997995:02/12/04 17:00 ID:???
998nobodyさん:02/12/04 17:06 ID:???

 長らくお待たせしました。やっと1000取り合戦場になるようです。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、やっぱやんなきゃダメか?    ,,、,、,,,
    /三√ ´兪)/   \________________ ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,    \今更やる気でねぇ…………よ。。。/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    ;)    (ι   )   (    ;)    )
999nobodyさん:02/12/04 17:09 ID:???
1000GETずさー
1000nobodyさん:02/12/04 17:11 ID:???
       ここに 乂1000取り合戦場乂 としての価値はありません。

       ,,、,、,,,       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\   \∧_ヘ
,,、,、,,,             やっぱや〜めたっと >   / \〇ノゝ  ,,、,、,,,
           ,,、,、,,,  ________/   /三√ ゚д゚)
                                /三/| ゚U゚| \
    \エーーーーーーーッ!?/   ,,、,、,,,    U (:::::::::::)∪  ,,、,、,,,
   ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧  //三/|三|\
   (    )    (     )   (    )    )   ∪  ∪
  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧,,、,、,,,       ,,、,、,,,
  (    )    (    )    (    )    (    )      ,,、,、,,,
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。