トップページ⇒php
1001コメント344KB

【PHP】質問スレッド Part5

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん02/09/11 14:15ID:FWA0CpdU
レスは気長に待つのが良い感じかも。


■本家
http://www.php.net/

■日本 PHP ユーザ会
http://www.php.gr.jp/

■PHP マニュアル
http://www.php.net/manual/ja/

■PEAR マニュアル
http://pear.php.net/manual/ja/


過去スレ, 関連スレ及び注意事項等は、
>>2-10あたりにきっと誰かが……。
0952nobodyさん02/12/01 12:44ID:EpowQ2LG
ちょっと伺いたいのですが
無料ホムペスペースのsendmailは
PHP4で使えますでしょうか?
0953nobodyさん02/12/01 12:49ID:Ympa0jkR
>>952
当然使えます。sendmailもqmailも設定ひとつです
095495202/12/01 12:53ID:???
サンクスです!
早速、スクリプト探してきます!!
0955初心者02/12/01 15:01ID:IYJM+D46
>>947
自分も丁度気になっていたところ。
ob_start("ob_gzhandler");
で良いと思うんですが。
0956nobodyさん02/12/01 15:53ID:???
良い。
0957nobodyさん02/12/01 17:53ID:???
変数宣言強制したい。
0958nobodyさん02/12/01 18:04ID:???
>>947
今のPHPの設定を目を皿にして確認してみよう。
ただし、PHPでgzipコンプレスすると正常動作しなくなるスクリプトが少なからず出てくる。
(クライアント側ブラウザに圧縮されたバイナリデータが展開されてしまう)
スクリプトを修正すればなんとかなるとは思うが。

そろそろ新スレか?
0959nobodyさん02/12/01 19:13ID:???
経験上、995まで大丈夫。(w
0960nobodyさん02/12/01 22:40ID:???
精神衛生上、970くらいじゃないか?
0961nobodyさん02/12/02 00:30ID: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とかじゃなくてただのアルファベットとかだとちゃんと前者でもちゃんと動作するんみたい。
何故?誰か教えて。
0962nobodyさん02/12/02 01:50ID:???
うちの環境(php-4.1.2-7)だとうまく動いた。
\nじゃなくて、\r\nに変更したけど。
0963nobodyさん02/12/02 04:08ID:???
Part2 が立ったのは 995
Part3 が立ったのは 980
Part4 が立ったのは 999
Part5 が立ったのは ……HTML 化待ちで、漏れは読めない
096496102/12/02 04:43ID: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なんだけどなー。なんでだろう。
0965nobodyさん02/12/02 09:45ID:vgT4ee9m
ダダダダ、ダダダダ、ヨザーー。

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

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

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

教えてクンですみません。PHP4でのこの辺の書き方教えていただけないでしょうか。
0970nobodyさん02/12/03 01:26ID: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週間後の今日から
最初の日曜日までの日数を引いた日、っていう感じ。
たぶん合ってると思う。
0971nobodyさん02/12/03 01:28ID:???
ごめん、なんか自分で見直してみて説明変だな。
まあ、そんな感じで。
0972nobodyさん02/12/03 01:29ID:???
$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;
}
0973nobodyさん02/12/03 12:11ID:???
>968
レッツPHPの人にお頼み申せ。
0974nobodyさん02/12/03 16:07ID: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;
}
0975nobodyさん02/12/03 16:07ID: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;
}
0976nobodyさん02/12/03 19:51ID:R/9PtWVb
htmlファイルから、
たとえば
<html><body><table><tr><td>文章</td></tr></table></body></html>
このようなファイルで<table>〜</table>までを取り出したいときにはどうしたら良いでしょうか?
この場合は
<table><tr><td>文章</td></tr></table>
を取り出せればいいのですが
宜しくお願いします。
0977nobodyさん02/12/03 20:18ID:PNt+pMvy
>>976
<table>から</table>にマッチする正規表現で抜いてくればいいんじゃない?
0978nobodyさん02/12/03 23:16ID:vkKrixb3
JpGraphをやりたくて、PHP徹底攻略実戦を買いました。
インストールしている途中でPHP.iniのインクルードパスのところで
いきづまってます。PHP.iniのインクルードバスがコメントになってる
からです。どうすればいいのですか?
Linux7.3です。LinuxもPHPも素人です。
7.3にPHPは既に入ってました。
<? phpinfo(); ?>は動作しました。
0979nobodyさん02/12/04 00:21ID:???
//削除
0980うえ〜ん02/12/04 05:35ID: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>
0981nobodyさん02/12/04 06:23ID:???
"home/hoge/hoge.dat"
0982nobodyさん02/12/04 06:25ID:???
"./home/hoge/hoge.dat"でもいいけど。
0983nobodyさん02/12/04 06:35ID:???
(´-`).。oO { エラー処理すればすぐ分かるのになぜしないんだろう
0984nobodyさん02/12/04 07:28ID:???
そろそろ次スレきぼんぬ。
0985nobodyさん02/12/04 09:38ID:???
>>984
あと10は逝けるね
0986nobodyさん02/12/04 10:57ID:???
つーことで、テンプレ追加・修正案募集中。
0987 02/12/04 14:04ID:xBoKBvCa
>>980
$fp = fopen ($filename,"r");
0988nobodyさん02/12/04 14:11ID:???
ネームかパスかはちょっと悩むところだね。
0989ageてもいい?02/12/04 14:51ID:???
WebServer の基本認証のユーザー名とパスワードって
取得できるのかなぁ?
0990nobodyさん02/12/04 14:52ID:???
げっつ990!(ワラ
0991nobodyさん02/12/04 16:10ID:???
1000取りage!!!!!!!!!!!!!!
0992nobodyさん02/12/04 16:12ID:???
>>991 ageんなヴォケ!
0993980 (そろそろ新スレ?)02/12/04 16:26ID: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 オレも知りたい・・・
099498902/12/04 16:37ID:???
Apache モジュールとして動作してればいいらしい。
phpinfo 見ると、、、Server API が、CGI になってた(鬱

どやってApacheモジュールにするのかなぁ?
0995nobodyさん02/12/04 16:50ID:???
>>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 は有るの?
099699502/12/04 16:53ID:???
しもた。先書かれた。
>>994 root権限あるの?
099799502/12/04 17:00ID:???
次スレ立てますた
http://pc.2ch.net/test/read.cgi/php/1038988518/l50
0998nobodyさん02/12/04 17:06ID:???

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

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

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