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

【PHP】質問スレッドpart17【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/17 17:14ID:AT+bUkag
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 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-4


抜けているものがあったら補足願います
0497nobodyさん04/05/31 23:25ID:???
>>470
ありがたう
タグで検索しても引っかからないから助かりました。
0498nobodyさん04/05/31 23:57ID:???
スクリプトから他スクリプトの結果を取得するにはどのようにすれば良いでしょうか?
例
http://hoge.hoge/a.php
の内部で
http://hoge.hoge/b.php
の結果を取得して表示したい。
0499nobodyさん04/06/01 00:06ID:???
>>496
マジレスすると。
http://science3.2ch.net/test/read.cgi/sky/1039275406/1-

マニュアルが読めてない(date関数の意味を理解していない)節
があるので、再度読み直してもわからない場合は語学板。
勘違いだとわかった場合は数学板。未読だった場合は社会学/哲学板など。

>>498
includeとかfopenでhttpストリームを指定して取得する。
0500nobodyさん04/06/01 00:15ID:???
自作サーバでdebian+PHP4.3.6+Apache2の環境で動かしています。
sessionを使ってみようと思ったのですが、

<?session_start();
if (!session_is_registered('count')) {
session_register("count");
$count = 0;
}
else { $count++; } ?>
<html><body>
<a href='<?php echo $PHP_SELF ."?PHPSESSID=" . $PHPSESSID ?>'>
<?php echo $count ?>
</a>
</body></html>

これだけなのですが、動きません。
エラーは一切でず、$PHPSESSIDは空っぽです。
何が原因だと考えられるでしょうか?

phpinfoでは
Session Support enabled となっており、
コンパイルオプションは以下のみです。
'./configure' '--enable-mbstring' '--enable-mbregex'
'--with-apxs2=/usr/apache2/bin/apxs' '--with-mysql'
よろしくお願いします。
0501nobodyさん04/06/01 00:43ID:???
<?seesion_start();
これはいいの?
0502nobodyさん04/06/01 00:44ID:???
$ar = stat('test.php');
echo $a['ctime']; //またはmtime?

Windows上でためしたところ、上記でtest.phpファイルそのものの最終更新時刻がわかりますが、
Unix上では上記スクリプト実行のたびに更新時刻もどんどん変わってしまいます。
これはOSのし様ですか?
050350004/06/01 00:57ID:???
>>501さん
<?php
session_start();
とちゃんと書いてます。ごめんなさい。
基本的に文法ミスは無いはずです。
違うサーバではきちんと表示されることがわかりました。
なんででしょう?
# ここに張るのに適当に短くしたつもりが・・・
0504nobodyさん04/06/01 02:02ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
0505nobodyさん04/06/01 03:03ID:???
>>502
時刻だけならfilemtimeでよくない?
鯖で見てないからどうなるかしらんけど。
0506nobodyさん04/06/01 03:05ID:???
>>493
文字日付→UNIXタイムに変換する関数がある。
0507nobodyさん04/06/01 04:26ID:???
>>505
いや、どちらにしてもctime/mtimeの取得方法が
内部で変わるわけではないので、
>Unix上では上記スクリプト実行のたびに更新時刻もどんどん変わってしまいます。
>これはOSの仕様ですか
が、そもそも変な感じ。
050850204/06/01 04:45ID:MqX7wJyb
ありがとう。
実行のたびに更新時刻が変わったのは何かの勘違いでした。
0509sakky04/06/01 13:57ID:aOyX5NXt
テンプレート形式にしたくて
$a = "abc<-#email#->cba";
$email = "[email protected]";
$b = ereg_replace("(<\-#)([a-z]+)(#\->)","$\\2",$a);
print($b);
という形式でテストしてみたのですが、置換したところが、$emailと出て、
変数として扱ってくれません。どうしたら変数として扱ってくれる置換が
できるでしょうか?教えてください。お願いします。
0510nobodyさん04/06/01 15:31ID:???
できないなら一行で書こうとするな。変数名はpreg_matchで抜き出してから使え。
0511sakky04/06/01 16:01ID:aOyX5NXt
アドバイスありがとうございます。おかげでできました。
0512nobodyさん04/06/01 16:17ID:g7ULO3n5
PHPからメール送信する場合、

mail($to, $sub, $text, $from)とやると、
$toがパソコンのメールアドレスだと普通に送信できるのですが、
ドコモの携帯電話のアドレスを入れると、
$fromの内容がそのまま本文の先頭に入ってきてしまいます。
mail($to, $sub, $text)とやると普通に送信できます。
ボーダーフォンとかは持ってないので試せません。

PHPからドコモの携帯にメールを送る場合は$fromの指定は使えないのでしょうか。

よろしくお願いします。
0513nobodyさん04/06/01 16:24ID:???
>>512
その$fromはどんな文字列?
051451204/06/01 16:32ID:g7ULO3n5
>>513
さっそくレスありがとうございます。
↓こんな感じです。

$from = "Bcc:[email protected]\n";
$from.= "From: XXXXXX <[email protected]>\n";
$from.= "Reply-To: [email protected]\n";
$from.= "X-Mailer: PHP/" . phpversion();
0515nobodyさん04/06/01 18:41ID:???
>>514
fromにそんなに入れちゃ...
Bccその他は第4引数のadditional_headersに入れるべき。
0516nobodyさん04/06/02 09:07ID:???

 こ こ は 誰 も 質 問 に 答 え な い 質 問 ス レ ッ ド で す ね

0517nobodyさん04/06/02 09:38ID:???
手取り足取り教えるより>>510や>>515のような答え方の方が
質問者のためになる
051851504/06/02 10:09ID:???
スマーソ
すんげぇ勘違いしてますた。
051951504/06/02 10:11ID:???
で、マニュアルには、改行は\r\nとすべきってありますね。
0520nobodyさん04/06/02 11:49ID:???
先生気取りキモイ
0521nobodyさん04/06/02 12:43ID:???
もう勝手にすれば!!!!
0522nobodyさん04/06/02 12:59ID:???
>>516
ここは質問するスレだろ
0523nobodyさん04/06/02 13:48ID:???
>>516
質問すれば答えが返ってくるのが当たり前か…?なぜそんな風に考える…バカがっ…!
0524nobodyさん04/06/02 15:03ID:???
>>516
ていうか応えてるジャン

>>520
こなきゃいい。質問もないんだろ?困ってる人はその先生が欲しいんだよ
0525nobodyさん04/06/02 16:50ID:???
PHP+MySQLでBBS作って、書き込みすることできますか?
0526nobodyさん04/06/02 16:55ID:???
>>525
そう動作するように作れば、書き込めるよ
0527nobodyさん04/06/02 16:56ID:???
>>525
そういうスクリプトもあるだろうな。
0528nobodyさん04/06/02 16:57ID:???
>>525
書き込みできるように作れば書き込みできる
0529nobodyさん04/06/02 17:20ID:???
>>524
先生というのは、正しい情報を提供する者で
誤った情報を提供する者のことではありませんよ
0530nobodyさん04/06/02 17:31ID:???
>>529
教えて君の理論だな
0531nobodyさん04/06/02 17:39ID:???
まぁ、教える立場に立った事がある人なら>>529みたいな事は書かないけどな。
0532nobodyさん04/06/02 17:40ID:???
>>529
今まで誤った情報を提供する先生に出会ったことないのか?
幸せだな。
俺は育ちが悪いのか、小学校で既に先生も時には間違ってると悟っていた。
0533nobodyさん04/06/02 17:56ID:???
>>529みたいな発言をするヤツは十代半ばが多いな。
いわゆる反抗期みたいな感じなんだろ、そっとしておいてやれよ。
精々盗んだバイクで走り出してくれw
0534nobodyさん04/06/02 18:12ID:???
近代史を教えている先生はほとんど先生じゃなくなるなw
教科書が間違っているからいいのか。
0535nobodyさん04/06/02 18:20ID:???
永田町の先生に至っては(以下自粛
0536nobodyさん04/06/02 18:37ID:???
>>520は>>517へのレスね
0537nobodyさん04/06/02 18:39ID:zu8X23qu
php のデバッグってみなさんどうされていますか?
私は Emacs でコーディングしているので必然的に
print_r などで出力して確認するような古典的な方法しか
使っていないのですが,もっと効率よく開発できないか
といろいろ調べてみたら Eclipse + TruStudio や
Magma Studio など Windows で開発すればそれなりに
効率よくできそうなツールを見つけました.

みなさんはどうされているか,いろいろ意見を聞きたいです.
よろしくお願いします.
0538nobodyさん04/06/02 18:41ID:5rKkpSCd
つい最近PHPという言葉をしったばかりです。
質問します。

PHPで掲示板をつくりたいのですが、
どこのディレクトリにアップロードすればいいのでしょうか?
0539nobodyさん04/06/02 18:43ID:???
>>538
HTMLが置けるディレクトリなら基本的にどこでも
054053804/06/02 18:45ID:5rKkpSCd
cgi-binと、public_htmlがわかれている鯖では
public_htmlの方におけばいいということですか?

すみません。
0541nobodyさん04/06/02 18:49ID:???
エスパーじゃない人はあなたのサーバの設定を読み取れないので分かりません。
0542nobodyさん04/06/02 18:49ID:???
本当に自分で作るのだろうな?
そこらで拾ってきたスクリプトの設置がわからないとかだったらブッ頃すぞ!
0543nobodyさん04/06/02 18:52ID:???
>>542
市ね
0544nobodyさん04/06/02 18:56ID:???
>>540
コラコラ
板違いですよ
054553804/06/02 18:58ID:???
んんん、みなさん、ありがとうございました。
自分で作るとはかいてませんが?

がんばってみます。
すみませんでした。
0546nobodyさん04/06/02 19:03ID:???
>>545
ここは自分で作る人の板です
0547nobodyさん04/06/02 19:05ID:???
>>537
Magma じゃなくて Maguma な。
PHP-users 検索したら腐るほど出てくる。
俺は Eclipse だが使い込んだら Emacs 最強なんじゃないの。
0548nobodyさん04/06/02 19:06ID:???
あと Maguma は 2 バイト文字が化けたと思うが、日本語がまともに扱えるようになっているなら教えて欲しいな。
0549nobodyさん04/06/02 19:06ID:???
どの環境も慣れだろ?
俺は秀丸で十分
0550nobodyさん04/06/02 19:08ID:???
>537
自前のデバッグ用フレームワーク作ってやってる
結局最終的にやってることはvar_dumpだけどね
0551nobodyさん04/06/02 21:35ID:???
■■◎■■
 ↓
♪■◎■■

教えろ
0552nobodyさん04/06/02 21:40ID:???
>>551

echo "■■◎■■<br>\n";
echo " ↓<br>\n";
echo "♪■◎■■<br>\n";
0553nobodyさん04/06/02 21:40ID:???
ごめんなさい嘘です、真面目に質問します。
例えば
■■◎■■
という変数の、「■」を一つだけ置き換えて「♪」にしたいのですが、
どういう風に書けばいいのでしょうか?
for文の中に入れて、
■■◎■■
 ↓
♪■◎■■
 ↓
♪♪◎■■
  :
  :

とういう感じになるといいのですが…(´・ω・`)
0554nobodyさん04/06/02 22:10ID:???
>>553
こういうこと?

$str = $prevstr = '■■◎■■';

while (($str = preg_replace('/■/', '♪', $str, 1)) != $prevstr) {
echo $str, "<br />";
$prevstr = $str;
}
0555nobodyさん04/06/02 22:15ID:???
ここは、PHP全般ですが?
>>546
0556nobodyさん04/06/02 23:11ID:???
連想配列のキーが同じ単語であった場合、値を加算したいです。よろしくお願いします。
055755604/06/02 23:19ID:???
array('apple' =>'2', 'orange'=>'4', 'apple'=>'1');

配列がこんなかんじだった場合
apple=3
orange=4
としたいです、お願いします。
0558nobodyさん04/06/02 23:19ID:???
>>556
ttp://www.athuman.com/hajl/
0559nobodyさん04/06/02 23:22ID:???
>>554
あぅああー、そんな関数しらなかったよ;_;

どうもありがとう。
0560nobodyさん04/06/03 02:11ID:???
誰かZendStudio3.5β2試した香具師いますか?
今なら無料でダウンロードできて、
PHP5とかへの対応ができているらしぃのだが
人柱募集
http://www.zend.com/store/beta.php
0561nobodyさん04/06/03 03:27ID:???
>557
$ar1 = array('apple' =>'2', 'orange'=>'4', 'apple'=>'1');
$ar2 = array();
whle (list($key, $value) = each($ar1)){
 $ar1[$key] += $ar2;
}
0562nobodyさん04/06/03 03:28ID:???
>561
あ、適当に書いてたわ、スマン
× $ar1[$key] += $ar2;
○ $ar2[$key] += $value;
0563nobodyさん04/06/03 08:04ID:???
>>537
最近PEARのPHPUnit使い始めたけど良いですよ。

0564nobodyさん04/06/03 11:44ID:???
著作権関連がうるさい中、個人のウェブ管理者にはムービー関連の制作が
辛い中、PHPでカプエスクイズを作りました。
これなら大丈夫でしょう(ただクイズにゲーム画面を使えないのが
少々ネックですが)、取り合えず、テスター募集中です。

ttp://cgi.f13.aaacafe.ne.jp/~mugen/cvs_quiz/

問題数が多くなればランキング形式を採用しようと思います。
0565nobodyさん04/06/03 12:06ID:???
> PHP Written by "KaPoKoN"

はじめて知った!!
てっきりRasmusやAndi&Zeevだと思ってたんだけど。
これからはKaPoKoN様に感謝して使用するよ!!
0566nobodyさん04/06/03 12:30ID:???
>>564
問題の意味すら若欄買った
0567nobodyさん04/06/03 13:18ID:???
KaPoKoN作のPHPはZend engineじゃ無くてKaPoKoN Engineか
056855604/06/03 14:12ID:???
>>562

返答ありがとうございます。
でもFatal error: Unsupported operand typesというのが

>$ar2[$key] += $value;

ここの部分で出てしまいます。何度も確認したのでタイプミスなどは無いと思うのですが。。
0569nobodyさん04/06/03 14:26ID:???
>>568
562じゃないが562のスクリプト通り(厳密に言えばwhileに修正w)で動いたが。

ってかさ、
$ar1 = array('apple' =>'2', 'orange'=>'4', 'apple'=>'1');
これ、アリなんか?
うちじゃprint_rしたらappleは後ろのしか入ってないぞ。
バージョンによっては通るのかも知れないが、こういう構造自体問題あるだろ?
057056904/06/03 14:32ID:???
あ、ついでに気付いたけど。
Unsupported operand typesなのは文字列になってるからかもしれない。
$ar1 = array('apple' =>2, 'orange'=>4, 'apple'=>1); //値の''を取った
にしてみそ
0571nobodyさん04/06/03 16:02ID:???
うちではUnsupported operand typesは出なかったなぁ
$ar1 = array('apple' =>'2', 'orange'=>'4', 'apple'=>'1');
$ar1_mod = array(
 array('apple'=>'2'),
 array('orange'=>'4'),
 array('apple'=>'1')
);
while (list($key, $value) = each($ar1_mod)){
 while(list($key2,$value2) = each($value)){
  $ar2[$key2] += $value2;
 }
}
print_r($ar1);
print_r($ar1_mod);
print_r($ar2);
057255604/06/03 16:42ID:???
ああ、そっか。
$ar1こう書きましたが
>$ar1 = array('apple' =>'2', 'orange'=>'4', 'apple'=>'1');

実際はテキストファイルから読み込んで配列にしているので、値の部分が文字列に
なってしまったんですね。
分り易いようにと修正して書いてしまいましたけど、分らないうちはありのままを
伝えるべきですたね。
お答えくださった皆さんありがとうございました。
0573nobodyさん04/06/03 18:23ID:???
>>564
で、どういう質問をしたいのかね?
0574nobodyさん04/06/03 18:27ID:???
>>530-533
自演ダサーー
0575vv04/06/03 19:19ID:???
複数行にわたる文字列 (\r\n区切り) を正規表現で1行毎に抜き出し列挙するには
どうしたらよいのでしょうか??

$multiline;

eregi("[^\r]*\r\n",$multiline,$regs);

ってやると1行目しか抜けないんですけど、原因がわからん
おしえてちょ
0576nobodyさん04/06/03 19:23ID:???
>>575
いまいち意味がわからんが、
explode()
だとダメなのか?
0577nobodyさん04/06/03 19:25ID:???
何でわざわざ正規表現使うの?
0578vv04/06/03 19:38ID:/CiHMqdY
>>576,>>577
explode知らんかった
使ったらできたよ
ありがトン
0579nobodyさん04/06/03 22:26ID:???
cronを使って定期的にphpを実行したいのですが、
<?php
//動作確認用でメールを送る関数
?>
とした所、ブラウザーからアクセスした場合には正常に動きますが、
crontabで指定した場合には動作しません。
/ファイルパス/crontab.php: =: command not found
/ファイルパス/crontab.php: =: command not found
/ファイルパス/crontab.php: =: command not found
/ファイルパス/crontab.php: =: command not found
/ファイルパス/crontab.php: line 8: syntax error near unexpected token `mb_send_mail($'
/ファイルパス/crontab.php: line 8: `$rcd = mb_send_mail($mlto, $mlsb, $mlms, $mlfr);'
CGIモードではどうかと思い、
#/usr/local/bin/php
を先頭の行に入れて、<?phpと?>を削除しましたが、それでもなお、上記と同様のエラーが返ってくるばかりです。

どなたか、ヒントを頂けませんでしょうか?
0580nobodyさん04/06/03 22:46ID:???
ここで基本を質問するやからは、まずマニュアルを読んでからにしろ...
本位買って、暇な時に斜め読みにして頭に入るようにしとけよ...

あ、こんな関数知りませんですた

ばっか。
058157904/06/03 22:47ID:???
少なくとも、私の持っているPHP関数本3冊にはありませんでした。
cronというとshell scriptがメインらしいですが、phpも実行出来る。としか書いて無くて
検索しても妥当なのが見つからないのでお伺いしました。教えて頂けませんでしょうか?
0582nobodyさん04/06/03 22:49ID:???
>>579
cronで動かす場合、
まず、ファイルへのPATHはフルパスで書かなきゃならない。
そして、実行権限を与えずにcli版で動かす場合は
/usr/local/bin/php /full/path/to/script.php
のように指定する。
実行権限を与えた場合は
/full/path/to/script.php
だけでいいが、script.phpの先頭行に
#!/usr/local/bin/php
が必要。>>579には ! が抜けている。
2行目以下には<?php ?>で必要部分囲う。
0583nobodyさん04/06/03 23:11ID:???
>>579
>CGIモードではどうかと思い、
>#/usr/local/bin/php
>を先頭の行に入れて、<?phpと?>を削除しましたが、
>それでもなお、上記と同様のエラーが返ってくるばかりです。

辺りから、CLI及びCGIのPHPと、その他(ApahceSAPIなど)のPHPとで
mbsrtringモジュールの使用可能の可否が違うと思われ。
設定で変えるか、CLI及びCGIのPHPをリビルド&インストール。
058458304/06/03 23:15ID:???
エラーの吐いてるのが誰かを考えると、
PHP以前に、582氏の指摘が妥当だな。
0585nobodyさん04/06/03 23:18ID:???
でも579みたいのがcron使ってるって怖いな。
同じ鯖にはいて欲しくない。
0586nobodyさん04/06/03 23:29ID:???
定期実行の質問が出てくるとcronを使え、っていつも言ってたんだけど、
それも考えもんだね。ちょっと怖くなったよ。くわばらくわばら
0587nobodyさん04/06/03 23:55ID:???
phpをコマンドラインで実行したいのですがどうやったらいいですか?

Fedora Core1 をインストールしたままで使っています
php -v は
PHP 4.3.6 (cgi) (built: May 13 2004 05:56:26)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
です
0588nobodyさん04/06/04 00:03ID:???
 
0589nobodyさん04/06/04 00:23ID:???
>>587
>>580
0590nobodyさん04/06/04 07:54ID:???
質問してる奴やる気あんのか
0591nobodyさん04/06/04 09:19ID:???
やる気マンマンおまんまんですよ
だから皆さんに訊いてるんじゃないですか
0592nobodyさん04/06/04 09:22ID:???
聞く気があるかじゃなくて勉強する気があるのか
0593nobodyさん04/06/04 09:26ID:???
>>592
>>591
0594nobodyさん04/06/04 09:29ID:???
>>591
お前は何を質問したんだ?
0595nobodyさん04/06/04 09:33ID:???
>>594
前スレで質問して叩かれまくった
最近はしてない
0596nobodyさん04/06/04 09:36ID:???
じゃあこのスレの自浄作用は衰えていなかったようだな
■ このスレッドは過去ログ倉庫に格納されています