トップページ⇒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
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']]++;
}
0353nobodyさん2006/01/22(日) 21:28:19ID:???
>>352
エラーの内容くらい書けよ。
0354nobodyさん2006/01/22(日) 21:33:57ID:???
Undefined INDEX $k['sex']
0355nobodyさん2006/01/22(日) 21:38:26ID:???
DB に何が入っててどうやって取り出しているかが問題であって、
その部分が悪いわけじゃない。
ちゃんと array_key_exists でチェックして処理してくれ。
はい次。
0356nobodyさん2006/01/22(日) 21:40:06ID:???
おいおい、おまいら
カウンターのインデックスはDBからの値であって
宣言してないわけだよ。そこへインクリメントしてるから
エラーになるわけだ。 わかんないのか?
$counter[?????]++;
0357nobodyさん2006/01/22(日) 22:31:49ID:???
>>349
レス�dクスです。

>そのスクリプト、sshで、sudoなり、suしてrootになって実行すれば動作するだろ。
説明不足で申し訳ございません;
ブラウザで実行させての動作ということでして;;
もしかしてchownはシェルで実行させないと元々動かない感じだったでしょうか

>apache経由で動かしてるんだから、apacheの動かしているユーザーでしか動かせない。
それともapacheで動かせる権限にディレクトリなりファイルなりを変更すればブラウザでも行ける感じでしょうか
未だに右往左往しておりますorz

ちなみにphp5系+apahce2系をFedoraCore3で動かしてます。
(FreeBSDにしようと思いましたが環境の都合でFCを選択しました)
0358nobodyさん2006/01/22(日) 22:38:51ID:???
ケツ痒くなってきた
0359nobodyさん2006/01/22(日) 22:47:31ID:???
>>357
ブラウザがアクセスするのはサーバなんだから
サーバの権限で動かせるようにすればおk

多分サーバは nobody か apache ユーザ/グループで動かしてるんだろうから
chown -R apache:apache /var/www とかすれば?
0360nobodyさん2006/01/22(日) 23:21:57ID:???
DWでphpでホームページを作っていますが同じページでパソコンと携帯のUserAgentを判断してレイアウトと表示される内容を変えたいのですが、出来ますか?
0361nobodyさん2006/01/22(日) 23:27:01ID:???
>>360
できる。
UAを調べて、条件文使ってPCだったらこれ、携帯だったらこれといった感じ。
0362nobodyさん2006/01/23(月) 00:07:48ID:???
<html><body>
<form action="./mailform.php">
■件名<br>
<input type="text" name="subject"><br>
■本文(※必須)<br>
<input type="text" name="message"><br>
<input type="submit" value="送信"></form>
<?php
$to = "[email protected]";
if( $message ){
mb_language( "Japanese" );
mb_send_mail( $to, $subject, $message );
echo ( "送信しました" );
}
?>
</body></html>

簡単なメールフォームを作ってみましたが、
日本語を件名等に含ませると???となります。
どうすればいいでしょうか?
マニュアル読みましたがうまくいかなく↑な風になりました。
よろしくお願いします。
0363nobodyさん2006/01/23(月) 01:21:28ID:???
>>345
なるほど・・・1日を基点として3週間の最後の日から引けば確かに月曜日になりますね。
ありがとうございますm(_ _"m)ペコリ
date("w")って数値で返ってくるのですが、string型なんですね(;´▽`A``

>>362
mb_internal_encoding指定してやってみて
03643622006/01/23(月) 01:53:26ID:???
>>363
こんな夜中にありがとうございます。
早速やってみます。
0365nobodyさん2006/01/23(月) 02:27:47ID:???
指定したファイルのバイナリデータから、
指定した文字列を抜き出すにはどうすればいいでしょうか?
またそのデータ内に指定した文字列がいくつ入っているかも出来ないでしょうか?
0366nobodyさん2006/01/23(月) 02:38:53ID:???
>>365
$cnt = preg_match_all('/文字列/', file_get_contents("ファイル名"));
0367nobodyさん2006/01/23(月) 04:32:07ID:???
wikiの下のほうでよくみかける、
HTML convert time to 0.015 sec.
みたいな部分はどのように記述されてるのでしょう?
wikiのソースを見ても全くわからず・・・
PHPで動的なサイトを作る練習をしているんですけど、
htmlが、どのくらいの速さで出力されるのか知りたいのです。
どなたかわかるかた教えてください。
0368nobodyさん2006/01/23(月) 04:41:51ID:???
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

$start_time = microtime_float();
 :
メイン処理
 :
$end_time = microtime_float();
printf("HTML convert time to %4f sec.", $end_time - $start_time);

とかいう感じじゃないの?
0369nobodyさん2006/01/23(月) 06:30:22ID:zyAl85LC
セッションで2次元配列を扱うことはできないんでしょうか?
php1.phpで
$_SESSION[$key1][$key2]
のデータを入力したものを
php2.phpで参照しようとしてもできませんでした…
0370nobodyさん2006/01/23(月) 07:47:29ID:???
>>369
自己解決しますた('▽')
てか、ageてた…ごめんなさい
0371nobodyさん2006/01/23(月) 09:59:38ID:???
mySQLとPostgreSQLでどちらを使うか迷っています。
それぞれの利点欠点を教えてください。
0372nobodyさん2006/01/23(月) 10:04:36ID:???
mySQLの方が響きが良い。
0373nobodyさん2006/01/23(月) 10:10:50ID:???
板違いじゃないのか
03743712006/01/23(月) 10:17:45ID:???
phpと使う場合の利点欠点です。
個人的には、性能よりも標準で、つまりより多く使われている方を選択したいのですが。
0375nobodyさん2006/01/23(月) 10:21:21ID:???
>>374
じゃmysqlでいいんじゃない?
psql使えるレン鯖そう多くないし
03763712006/01/23(月) 10:23:46ID:???
ありがとう。糞切りがつきました
0377nobodyさん2006/01/23(月) 10:30:40ID:???
今時の辞書は「踏ん切り」を「糞切り」と変換するのか・・・?
0378nobodyさん2006/01/23(月) 10:52:30ID:???
そういう意味なら PHP 4 → MySQL, PHP 5 → SQLite じゃないか?
0379nobodyさん2006/01/23(月) 11:15:42ID:???
これからはPostgreSQLですよ。マジで。
0380nobodyさん2006/01/23(月) 11:17:16ID:???
2次元配列を使っていて説明しにくいのですが
例えば2×3の配列あって前の配列?の最後の配列を取りたい場合は
end(array)でとれると思うのですが
前の配列の最後の中にある配列の特定の値を取りたい場合はどうしたらいいのでしょうか?
array[0][2]という感じで。

一旦end(array)を取得して次にarray[2]とか2回に分けないといけないのでしょうか?
0381nobodyさん2006/01/23(月) 11:33:19ID:???
end(ary[0])
0382nobodyさん2006/01/23(月) 12:10:22ID:???
配列とか変数とかを気軽にRSS(RDF)形式に書き出すクラスは配布されていませんでしょうか?
0383nobodyさん2006/01/23(月) 12:55:18ID:???
>>381 サンクス
0384nobodyさん2006/01/23(月) 13:27:42ID:???
<?php
if($i==1){
?>

<TABLE>

<?php
}
?>

上のような記述方法って正式に認められてますでしょうか?
0385nobodyさん2006/01/23(月) 13:29:53ID:???
>>384
ok
0386nobodyさん2006/01/23(月) 13:33:31ID:???
ereg_replace を使ってURLのドメインまでを取り出したいのですが
どうすればよいのでしょうか?

http://www.yahoo.co.jp/hogehogehoge/hoge/hoge.htm
↓
http://www.yahoo.co.jp

http://google.com/hoge.htm
↓
http://google.com

のようにしたいのですがどうすればよいでしょうか?
0387nobodyさん2006/01/23(月) 13:35:27ID:???
変数名を正規表現で抽出したいのですが、どのように記述すればいいでしょうか?
0388nobodyさん2006/01/23(月) 13:40:57ID:???
WebProg の正規表現スレってなくなったの?
0389nobodyさん2006/01/23(月) 13:58:04ID:???
>>386
pregじゃダメ?
$url = preg_replace("/^(http:\/\/[^/]+).*/","$1",$url);

あるいは

$tmp = parse_url($url);
$url = $tmp['scheme'] . '://' . $tmp['host'];
0390nobodyさん2006/01/23(月) 13:58:54ID:???
>>388
あるよ
0391nobodyさん2006/01/23(月) 14:14:18ID:???
>>389
parse_url()使ったほうが楽な気がする

$array = parse_url($url);
print $array['scheme'].'://'.$array['host'];
0392nobodyさん2006/01/23(月) 14:26:03ID:???
parse_url() ってうまく解釈できないときにエラーが出るんで、
個人的にはオススメしない
0393nobodyさん2006/01/23(月) 15:02:13ID:???
>>387
変数名の抽出ってPHPのソースからか???
0394nobodyさん2006/01/23(月) 17:24:31ID:???
>>393
そそ、ソースからです。
0395nobodyさん2006/01/23(月) 17:32:57ID:???
>>394
ブロックの長過ぎるコードの解析でもするならそれ用のツールを
用意した方がいいと思うんだけど。
0396nobodyさん2006/01/23(月) 18:12:39ID:???
>>394
手抜き版
preg_match_all('/(\$GLOBALS\[[a-zA-Z_]+\w*\]|\$GLOBALS\[\'[a-zA-Z_]+\w*\'\]|\$GLOBALS\[\"[a-zA-Z_]+\w*\"\]|\$[a-zA-Z_]+\w*)/', $src, $match);
$list = array_unique($m[0]);
var_dump($list);

$XXXX と $GLOBALS[〜] だけ抜き出す。
0397nobodyさん2006/01/23(月) 18:13:29ID:???
書き間違い。
$list = array_unique($m[0]); は $list = array_unique($match[0]);
0398nobodyさん2006/01/23(月) 19:09:38ID:???
くだらない質問スマソ、
$var[] = "";
ってどういう意味でしょうか?
0399nobodyさん2006/01/23(月) 19:12:07ID:???
>398
array_push( "", $var );
とほぼ同じ
0400nobodyさん2006/01/23(月) 19:36:32ID:???
>>399
array_push( $var, "" );

だよね。
しかも$varを配列で宣言しておかないとワーニングになるし。
0401nobodyさん2006/01/23(月) 20:08:36ID:???
こんばんは。昨日chown関数で質問してた者です。
一応解決?しましたので似たような人のために自分が取った方法を書いてきます。

sudoでapacheとnobadyにchownの権限を与えて後はsystem関数で出力 です。
何故かapacheとnobady両方に権限を与えてやらないと通りませんでした。
apacheで動かしてるんだからapacheだけでも行けそうな気がするのですがnobadyがないとFALSEを返すようです。

ちなみにテスト環境は/homeへテスト用アカウント発行して chown -R で再帰的に全てのフォルダ、ファイルを一旦apacheの所有にしてテストしました。
実行はブラウザでアクセスして動かしました。

蛇足ですが、スーパーバイザー権限てroot権限と解釈しているのですがあってますでしょうか

sudoでやりたいことは実現したのですがapahceとnobadyにchown権限を与えているという現状がかなりリスクを背負っているようで回避策を探しています・・・。

0402nobodyさん2006/01/23(月) 21:40:22ID:???
>401
残念だが nobady ではない。 nobody だ。
0403nobodyさん2006/01/23(月) 21:51:41ID:???
セッション情報をデータベースに保持しています。
データベースからセッション情報を取得してから
https://www.stackasterisk.jp/tech/php/searchAction.do?cid=18
のPHP出力をダウンロードさせるの情報を参考にして
phpを作ったのですが正常に反応しません。
セッション情報を取得せずに
試してみると上手くいくので間違いなくsession、ヘッダーあたりで問題があると
思うのですが、解決策はないでしょうか?

ちなみにデータベースからセッション情報を取得するのは
pearのDB.php使ってmysqlに接続しています。
■ このスレッドは過去ログ倉庫に格納されています