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

【PHP】下らねぇ質問はここに書き込みやがれpart15

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/01/14(土) 20:06:11ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは流れを見て970/980/990の誰かが建てれ

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/

過去スレは>>2
FAQは>>3
0252nobodyさん2006/01/20(金) 11:04:18ID:???
鯖PC経由の書き込みをしない設定にすると、公式に直接飛ばす事になってしまいます。
公式に飛ばさずに直接値を渡すにはどうすれば良いのでしょうか。
0253nobodyさん2006/01/20(金) 11:05:12ID:???
あ、p2スレと勘違いした_| ̄|○
0254nobodyさん2006/01/20(金) 11:06:08ID:???
>>250
正確な用語の使い方ではないので、YesともNoとも回答ができる。
でも多分Yesだと思われ。
0255nobodyさん2006/01/20(金) 11:06:09ID:???
>>252
鯖PCって何? 公式って何? 値って何?
前提がすっぽ抜けすぎてて何が聞きたいのかまったくわかりません。
0256nobodyさん2006/01/20(金) 11:06:53ID:???
誤爆かよ!
02572542006/01/20(金) 11:08:52ID:???
ごめん。多分「なりません」が正解ということ。
0258nobodyさん2006/01/20(金) 14:14:53ID:+oUGIFYt
function()文で数値を戻り値として返す場合、
"で囲ってあがないといけないんですよね?

function(){
return "0";
}

みたいに。
0259nobodyさん2006/01/20(金) 14:20:31ID:???
>>258
だから何?
0260nobodyさん2006/01/20(金) 14:50:22ID:???
>>259
あってんの?あってないの?
0261nobodyさん2006/01/20(金) 14:57:20ID:???
>>259
スレタイ嫁
0262nobodyさん2006/01/20(金) 15:13:24ID:???
>>258
数字じゃなくて数値なんだろ?なら括る必要はない。
裸で気になるんだったら()で括っとけ
0263nobodyさん2006/01/20(金) 16:06:28ID:utcSO+tE
PHP 4.4.2で eaccelerator使えてます?FreeBSDなんですが。
0264nobodyさん2006/01/20(金) 17:19:01ID:???
>>258
どっちでも大して変わらない
0265nobodyさん2006/01/20(金) 17:30:09ID:???
>>258>>264
そのまま戻り値をprintしたときに0って出るか何も出ないかの差はあるかな。
0266nobodyさん2006/01/20(金) 17:56:01ID:???
>>265
どっちでも出る。
0267nobodyさん2006/01/20(金) 18:15:36ID:???
>>264
型を含んだ比較の結果がかわったりする
仕様上の型でかえすべき
0268nobodyさん2006/01/20(金) 19:24:34ID:???
質問です。
<html>
<body>
<?php
$page = @readfile("http://www.yahoo.co.jp");
?>
</body>
</html>
と言うような感じで他サイトを読み込んだのですが
読み込んだサイトにあるリンクのURLが自分のドメインを
含んでしまい、リンク先に正常に飛べません。
リンクのURLが読み込んだファイルと同様のドメイン
上の例ですとhttp://yahoo.co.jp/hogehoge.htmにするにはどうすればよいのでしょうか?
今の状態ですとhttp://hogehoge.jp/hogehoge.htmとなってしまいます。

よろしくお願いします。
0269nobodyさん2006/01/20(金) 19:29:21ID:???
>>268
preg_replaceで相対パスを絶対に置き換えれば言い。
02702682006/01/20(金) 19:42:50ID:???
>>269

preg_replaceを使用するということは
fileで一度ソースを読み込んで置換してという
順序になると思うのですが

readfileでやることは不可能なのでしょうか?

get? post? あたりを駆使してムリでしょうか?
0271nobodyさん2006/01/20(金) 19:44:05ID:???
>>270
むり。
0272nobodyさん2006/01/20(金) 19:44:50ID:???
>>270
<base href="〜">
02732682006/01/20(金) 19:52:51ID:???
すげえええええええええええ
来ました出来ました。有難うございます。

>>272様感謝します。

>>269様 >>271様
ご意見有難うございました。
0274nobodyさん2006/01/20(金) 20:01:45ID:???
ttp://pear.php.net/manual/ja/package.http.http-download.php
これとsetGzip()で特定のディレクトリを圧縮しつつダウンロード、
ということをしたいのですが、以下のどこがおかしいか
教えてくださいませ。
疑問点はまずsetFile()がディレクトリを指定するのが不可能っぽいですが、
解決方法はないか、setFileをファイルで試しても
setGzipの部分が上手く動作していないようです、何か間違っているでしょうか?
お願いしますm(_ _)m

<?php
require_once("HTTP/Download.php");
$dl = &new HTTP_Download();
$dl->setFile($directory);
$dl->setGzip(TRUE);
$dl->setContentType('application/x-gzip');
$dl->setContentDisposition(HTTP_DOWNLOAD_ATTACHMENT, 'latest.tgz');
$dl->send();
?>
0275nobodyさん2006/01/20(金) 20:16:39ID:???
>>274
ディレクトリに対応してないので HTTP_Download だけじゃダメ。
Archive_Tar も併用すべき。
オンザフライ圧縮する必要はなくなるが
一時ファイルを生成する必要が出てくる。
あとは頑張れ
http://pear.php.net/manual/ja/package.filesystem.archive-tar.archive-tar.php
0276nobodyさん2006/01/20(金) 23:10:38ID:yP1RJnKV
入力された文字が例えば100文字以上なら100文字以降なら切り捨てて保存する場合どうしたらいいのでしょうか?
0277nobodyさん2006/01/20(金) 23:17:32ID:???
>>276
substrかmb_strcut
0278nobodyさん2006/01/21(土) 10:57:51ID:???
sedコマンドについてです。(sedじゃなくてもいいんですが)
tab区切りのテキストファイルがあるんですが、そのファイルの
先頭の列のみ残してあとのデータを削除したいんです。

sed "s/\t*//g" test.txt

ではうまくいきませんでした。(削除されないファイルが出てきます。)
誰か、、、よろしくお願いします。
02792782006/01/21(土) 11:04:40ID:???
あ、質問すれ間違えました、、、すいません
0280nobodyさん2006/01/21(土) 15:41:37ID:???
ロギングプログラムを作ろうと思ってるのですが、
log.txt(300MB)で
fopen("log.txt", "a")した場合ってメモリ300MB消費されませんよね?
逆に
fopen("log.txt", "r")としたらメモリ300MB消費される、
この考えあってますでしょうか?
0281nobodyさん2006/01/21(土) 15:49:37ID:???
>>280
> fopen("log.txt", "a")した場合ってメモリ300MB消費されませんよね?
合ってる。

> fopen("log.txt", "r")としたらメモリ300MB消費される、
間違ってる。正しくはその後の処理方法次第。
0282nobodyさん2006/01/21(土) 15:55:59ID:???
>>280
やってみりゃ分かるが、fopenはファイルを開く「準備」をするだけ。
メモリに読み込むのは別の関数のお仕事。
0283nobodyさん2006/01/21(土) 16:40:25ID:1jcdXAZV
DBからとり出したデータに特定の文字列があるかどうか調べるのはfor文を回してeregなどで使うのでしょうか。
0284nobodyさん2006/01/21(土) 16:43:47ID:???
何のための DB なんだ…
0285nobodyさん2006/01/21(土) 16:59:44ID:???
>>283
SQLでselect
0286nobodyさん2006/01/21(土) 21:35:07ID:???
今月から1ヶ月前の月を算出する最も簡単な記述方法ってどんな感じでしょうか?
unixタイムスタンプから1か月分引くとかいう面倒な方法しか
思いつきませんでしたorz
0287nobodyさん2006/01/21(土) 21:45:49ID:???
>>286
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
echo date ("M-d-Y", $lastmonth);
これでいいのかな・・・?
0288nobodyさん2006/01/21(土) 22:12:08ID:???
>>286
print date("Y/m", strtotime("-1 month"));
0289nobodyさん2006/01/21(土) 22:47:59ID:???
>>286じゃないけど、ふと思った。
月から1引くやり方って、1月の時も大丈夫…なように作ってあるはずだよねぇ。
0290nobodyさん2006/01/21(土) 22:52:20ID:???
>>289
少なくとも>>287と>>288は自動的に前年になる。
0291nobodyさん2006/01/21(土) 23:00:46ID:???
初めてmktime()を使った時にここまで面倒見てくれるのかー!って感動した記憶があるよ。
マニュアルを読まなかったら、自力で繰り上げやら繰り下げ処理を書いたり、
その辺の面倒を見てくれそうなカレンダーライブラリを探そうとしてただろうなぁ。
0292nobodyさん2006/01/21(土) 23:23:32ID:???
おまえの面倒はオレが見るよ。
0293nobodyさん2006/01/21(土) 23:37:40ID:E6I0jSws
ポッ(照)
0294nobodyさん2006/01/22(日) 02:16:59ID:???
下らない質問ですが、PHPで行列は使えますでしょうか…。
例えば

10 11 12 13 14 15

とあったとすると
両者の合計が出来るだけ平等になるように二つに分けたいのです。
この場合ですと
10 15 12
11 14 13
の二つに分けたいのです。
よろしければお力添えお願いします。
0295nobodyさん2006/01/22(日) 02:28:43ID:???
>>294
行列じゃなくて行列問題?
0296nobodyさん2006/01/22(日) 02:37:50ID:???
>>294さん
行列問題…になるのかもです。
12種類の数字を合計値が出来るだけ平等になるように二つのグループに分けるような動作をするのをPHPによる記述で作ろうと思ったのですが、
全ての組み合わせを記述してすると12C6で膨大な記述が必要になってしまうので
何かスマートな方法がありましたらご教授願いたいです
0297nobodyさん2006/01/22(日) 02:52:54ID:???
>>294>>296
どっちかっつーとアルゴリズムの問題だと思うので言語関係ないんじゃ…。
(これを一発で解決するような言語ってどっかにあるの?)
でも記述は長くならないと思うけどね。
長いのはループ回数&処理時間じゃないの?
0298nobodyさん2006/01/22(日) 03:21:41ID:???
そうですか〜。
ありがとうございます。一つずつ組み合わせを記述してベストな組み合わせを導いてみようと思います
0299nobodyさん2006/01/22(日) 03:23:41ID:???
>>298
アホカ
0300nobodyさん2006/01/22(日) 03:32:18ID:???
>>294
線形計画法で解けるとおもわれ。
0301nobodyさん2006/01/22(日) 04:38:46ID:pSXDGSqg
perlは経験しPHPを勉強中の者です。

PHPにHTMLを吐き出させたら、ソース通りに行きません。
どうなってるのでしょうか?

PHP5+apache+winxpと、PHP4+apache+赤帽の2種類のマシンで試してみましたが、どうにもうまくいきませんでした。
ブラウザはIE6.0です。

現状は、EUC+LFで保存したPHPファイルをブラウザで見ようとすると、CSSで指定していた色やborderの線がちゃんと表示されない。
やりたいことは、外部呼出しを設定しているHTMLをコード通りに表示させたい。
やったことは、PHPで吐き出した画面上でブラウザのエンコードの種類をEUCからShift_JISに変えたらCSSの通りに色がついたり、borderもきちんと表示されました。
あとは、ソースの見直しとHTML単独での表示テスト。

EUCっていうのはCSSとの相性が悪いのでしょうか?
PHPでちゃんとCSSの表示が上手くいくやり方を教えていただけませんか。
どうしても原因がわからないので、よろしくお願いします。
0302nobodyさん2006/01/22(日) 05:22:08ID:???
>>301
それはPHPがどうのこうのってのは全然関係ないと思われ。
EUCコード自体はHTMLとの相性も問題ない。
CSSにShift-JISでコメント入れちゃってるとかいうオチじゃないよな?
0303nobodyさん2006/01/22(日) 05:32:34ID:pSXDGSqg
>>302
はぅあ...
そういうオチだったorzз

普通に/* hogehoge */って囲んでたっす('A`)
これって、Shift_JISダッタンディスカー!?
0304nobodyさん2006/01/22(日) 05:36:01ID:???
>>303
…おまえ、Shift-JISとEUCって何のことか分かってるか?
0305nobodyさん2006/01/22(日) 05:51:04ID:???
perlからやり直せ
0306nobodyさん2006/01/22(日) 05:51:31ID:pSXDGSqg
>>304
お、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz

EUCが吐き出せないのってどんな文字があるんだろう('A`)
0307nobodyさん2006/01/22(日) 06:08:49ID:???
>>306
ただの文字コードだよ。分かってるんじゃないか。
なのに何故見当違いの判断をする??
0308nobodyさん2006/01/22(日) 06:14:27ID:pSXDGSqg
>>304
お、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz

EUCが吐き出せないのってどんな文字があるんだろう('A`)
0309nobodyさん2006/01/22(日) 06:14:49ID:???
CSSもEUCで保存したの?
CSSの先頭に@charset "EUC-JP";とかかいとくといいんでないの?
0310nobodyさん2006/01/22(日) 06:20:18ID:pSXDGSqg
>>307
ググって見たけど、イマイチわからないなぁ。
Shift_JISとかが、文字コードだって認識はあるけど
CSSの/**/で囲ったコメント以下が読み込まれてないのは、わからないのです。
0311nobodyさん2006/01/22(日) 06:30:52ID:???
hogehogeがShift_JISで書かれてるんだろ
0312nobodyさん2006/01/22(日) 06:34:32ID:pSXDGSqg
>>309
ありがとです。。
CSSは普通にスタイルの指定をしているのみで、他の記述は一切していませんでした。

試してるんですけど、テキストファイルから日本語もちゃんと取り出せるようにするには
どうしたらいいのでしょうか?
エンコードの指定を読み込むときにするべきですか?
それとも、テキストファイル自体をEUCで保存or頭にcharset指定??
0313nobodyさん2006/01/22(日) 06:35:27ID:???
>>294
強化学習で
0314nobodyさん2006/01/22(日) 06:36:09ID:???
テキストファイルの読み込みってどういうやり方でやってるのさ。
0315nobodyさん2006/01/22(日) 06:36:28ID:pSXDGSqg
>>311
そのようです。
CSSの/*hogehoge*/がShift_JISのようだったんですが
どこでそれが分かるのか、確認したいのですが術を知らず。。。。orz
0316nobodyさん2006/01/22(日) 06:39:06ID:???
>>315
それなりにまともなテキストエディタを使えば今の文字コードを表示してくれる。
とりあえずWindows標準のメモ帳で読み込んで、普通に漢字が表示されたらShift-JIS。
文字化けを起こしたらEUCなりUnicodeなりのShift-JIS以外の文字。
0317nobodyさん2006/01/22(日) 06:40:07ID:???
perlからやり直せ
0318nobodyさん2006/01/22(日) 06:41:07ID:pSXDGSqg
>>314
$fuga=fopen("hoge.txt","r");
が主ですが、たまに
$fuga=file("hoge.txt");とかも使います。
0319nobodyさん2006/01/22(日) 06:42:39ID:???
それで何を持ってして「読み込めてない」と判断してるんだ?
読み込み自体には文字コードは関係ないぞ。printなどで出力すると関係するが。
0320nobodyさん2006/01/22(日) 06:46:10ID:pSXDGSqg
>>316
フリーのエディタを使ってますが今の文字コードや改行の種類は分かるようになっています。
ただ、PHPファイルの中に記述したり読み込んだりするものたち(例えば外部のテキストやCSS)のコードをどうやってPHP仕様に合わせればいいのかがググって見てもわかんないのです。
0321nobodyさん2006/01/22(日) 06:48:38ID:???
>>320
HTMLをEUCで出力してるならそれで読み込むCSSもEUCで保存しろ。
テキストファイルは処理の仕方による。読み込んでそのまま変換もせずに
出力してたり検索に使ってたりするなら最初からEUCで保存しとけ。
0322nobodyさん2006/01/22(日) 06:50:40ID:???
どーでもいいが、EUCは別にPHPの仕様じゃないぞ。その方が都合がいいだけだ。
EUCの方が都合がいいのはPerlだって全く同じだ。
同様にPHPでもPerlでもShift_JISで書けるぞ。
0323nobodyさん2006/01/22(日) 06:51:09ID:pSXDGSqg
>>319
何を持ってしてかは分かりませんが、
テキストファイルを読み込んでみたんです。それで、それをHTMLに吐き出させるようにしたのに正しく出力されませんでした。
HTMLに吐かせる前にprintで調べると、数字や小文字のアルファベットは正常にできてました。ただ、日本語のところだけは文字化けしたり、空白だったり。。

もうorzなんです。
0324nobodyさん2006/01/22(日) 06:53:39ID:pSXDGSqg
>>321
最初からEUCに変換は都合上できないので、PHP上で変換したいのですが
そういう関数がありましたっけ?
0325nobodyさん2006/01/22(日) 06:59:10ID:pSXDGSqg
>>322
そうなんですか、知りませんでしたorz

PHPはEUCで保存しないと文字化けするもんだとばかり。。。
perlをEUCで保存した経験はなかったです。勉強になりました_ト ̄|○
0326nobodyさん2006/01/22(日) 06:59:56ID:???
mb_convert_encoding()
0327nobodyさん2006/01/22(日) 07:00:31ID:???
perlからやり直せ
0328nobodyさん2006/01/22(日) 07:03:57ID:???
>>327
童貞厨はオナって市ねよ
0329nobodyさん2006/01/22(日) 07:10:10ID:pSXDGSqg
>>326
ググって来ました!
明確な助言で超わかりやすかったです。ありがとう。
0330nobodyさん2006/01/22(日) 07:37:21ID:???
他のやつは的確な助言をしてくれませんでしたね^w^
0331nobodyさん2006/01/22(日) 07:55:57ID:???
php.netのPHPのマークの上にある白いのは何ですか?
0332nobodyさん2006/01/22(日) 08:11:50ID:???
えーと、どこで笑えばいいのかな?
0333nobodyさん2006/01/22(日) 09:01:30ID:???
>>331
てかり
0334nobodyさん2006/01/22(日) 10:19:09ID:???
こっちのことだと思われ。
http://php.benscom.com/images/php_snow.gif
ファイル名にsnowって書いてあるね。
0335nobodyさん2006/01/22(日) 10:36:45ID:???
>>329
HTML と CSS と文字コードの関係についてもっと勉強した方がいい
0336nobodyさん2006/01/22(日) 12:29:09ID:nt4QJioJ
初めまして。
配列をグローバル宣言するにはどうしたらいいのでしょうか?
0337nobodyさん2006/01/22(日) 13:06:10ID:???
>>336
クラス外かつ関数外で配列定義。おわり。
大抵の場合、コードの見通しが悪くなるので好ましくない。
0338nobodyさん2006/01/22(日) 14:01:53ID:???
>>328
結婚してますが何か?
0339nobodyさん2006/01/22(日) 14:29:08ID:???
PHPでメールを送信しようとしてます。

<?php
mb_language("Japanese");
$address[] = "********@docomo.ne.jp";
$headers = "From: *-*-*-*[email protected]\r\nReply-To: *-*-*-*[email protected]";
mb_send_mail($address[$i], "お知らせ", "お知らせでした。\nThe End.", $headers);
?>

これだと文字化けしてしまいました。
日本語でメールを送る場合のエンコードはどうすればいいんですか?
ちなみにスクリプトのエンコードはShift-JISになってます。
0340nobodyさん2006/01/22(日) 14:37:28ID:???
ISO-2022-JP
0341nobodyさん2006/01/22(日) 14:49:54ID:???
>>338
既婚!=童貞脱出
0342nobodyさん2006/01/22(日) 15:08:09ID:???
>>336
配列も普通の変数も宣言は変わらんよ
0343nobodyさん2006/01/22(日) 17:26:06ID:???
第3月曜日を知るにはどうすればいいのか教えてください。
$yは年で$mは月です。
$w = date('w', mktime(0, 0, 0, $m, 1, $y));
return(23-$w);
こうしたら、1日が日曜日の場合、第4月曜になってしまいますorz
急遽
if($w){return(23-$w);} else {return(16-$w);}
としてるのですが、もっとスマートな方法があったら教えてください。
0344nobodyさん2006/01/22(日) 17:56:17ID:???
phpで作成したディレクトリの所有者権限を変更したいのですがchownが通りません。
ためしにsshでそのphpの所有者をrootにして実行したのですが通りませんでした。

そこで、shell_exec関数で php XXX.php >>/dev/null と書いて実行したのですが通りませんでした。
php5環境でchownを使われてる方、何か特別な設定を施されましたでしょうか。

ちなみにサーバのルートドキュメントでそのphpは実行されてまして、
作成されたディレクトリのデフォルトの所有者はapacheとなっています。
この所有者をchownでrootなど他の所有者に変更したいです。
0345nobodyさん2006/01/22(日) 18:14:11ID:???
>>343
個人的に作ったツールで第3月曜日を取得するのは以下のような方法で取得していた。
これで問題があるようなら報告よろしく。

21 - (int)date("w", mktime( 0, 0, 0, $month, 20, $year));
0346nobodyさん2006/01/22(日) 18:20:39ID:???
>>344
http://jp.php.net/manual/ja/function.chown.php
0347nobodyさん2006/01/22(日) 18:28:25ID:???
>>344
> phpの所有者をrootにして実行した
この時の権限チェックは、
・実行プログラム - zend謹製のphpプログラムそのもの
・読み込むファイル - 対象のphpスクリプトファイル
に対して行われるので、スクリプトの所有者を弄っても無意味ですよ。

chownを使わないで済むように作るか、chownの操作対象を含む親ディレクトリの所有者や
パーミッションを適切なものに変更するのが一般的なやり方です。
0348nobodyさん2006/01/22(日) 18:50:11ID:???
>>346-347
レスありがとうございます。
試しに次のことをやってみたのですがやはりOperation not permittedとエラーが出てしまいます。

・phpがあるさらに上層のディレクトリの権限を777に
・試しにルートディレクトリからそのスクリプトがあるディレクトリをrootの所有に

ちなみにphpのプログラムは念のため確認してみましたが所有はrootでした。
mkdirでディレクトリを作成してそのディレクトリの権限をアカウントの者にしたいのですが、
apacheの所有でディレクトリが作成されてしまいまて、効率悪いですがシェルで直接手直しするしかないようです(´・ω・`)ショボーン
0349nobodyさん2006/01/22(日) 19:07:39ID:???
もうちょっとLinux関連の知識を培ったほうがいいと思う。

「phpのプログラムの所有」うんぬんとか言ってる時点で見当違い。
apache経由で動かしてるんだから、apacheの動かしているユーザーでしか動かせない。

そのスクリプト、sshで、sudoなり、suしてrootになって実行すれば動作するだろ。
そういうことだ。
0350nobodyさん2006/01/22(日) 20:40:16ID:???
error reporting E_ALLだと、配列の存在しないINDEX参照したときに
Undefined になるよな。
E_NOTICEだとエラーの詳細がわからんし・・・
おまいらどうしてる?
0351nobodyさん2006/01/22(日) 21:02:03ID:???
array_key_existsで先にに調べれば?
0352nobodyさん2006/01/22(日) 21:17:08ID:???
こんな感じでDBからの値を元にINDEX
作りたいんですけどえらーになってしまう。

foreach ($play as $k ){
$counter[$k['sex']]++;
}
■ このスレッドは過去ログ倉庫に格納されています