【PHP】下らねぇ質問はここに書き込みやがれpart15
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/01/14(土) 20:06:11ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは流れを見て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はぅあ...
そういうオチだったorzз
普通に/* hogehoge */って囲んでたっす('A`)
これって、Shift_JISダッタンディスカー!?
0305nobodyさん
2006/01/22(日) 05:51:04ID:???0306nobodyさん
2006/01/22(日) 05:51:31ID:pSXDGSqgお、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz
EUCが吐き出せないのってどんな文字があるんだろう('A`)
0308nobodyさん
2006/01/22(日) 06:14:27ID:pSXDGSqgお、おいらただの文字コードとしか思ってなかったので。。。
さっき試してたんですが、テキストファイルの読み込みなんかも2バイト文字があるときちんと読み込んでいないようで。。。orz
EUCが吐き出せないのってどんな文字があるんだろう('A`)
0309nobodyさん
2006/01/22(日) 06:14:49ID:???CSSの先頭に@charset "EUC-JP";とかかいとくといいんでないの?
0310nobodyさん
2006/01/22(日) 06:20:18ID:pSXDGSqgググって見たけど、イマイチわからないなぁ。
Shift_JISとかが、文字コードだって認識はあるけど
CSSの/**/で囲ったコメント以下が読み込まれてないのは、わからないのです。
0311nobodyさん
2006/01/22(日) 06:30:52ID:???0312nobodyさん
2006/01/22(日) 06:34:32ID:pSXDGSqgありがとです。。
CSSは普通にスタイルの指定をしているのみで、他の記述は一切していませんでした。
試してるんですけど、テキストファイルから日本語もちゃんと取り出せるようにするには
どうしたらいいのでしょうか?
エンコードの指定を読み込むときにするべきですか?
それとも、テキストファイル自体をEUCで保存or頭にcharset指定??
0314nobodyさん
2006/01/22(日) 06:36:09ID:???0315nobodyさん
2006/01/22(日) 06:36:28ID:pSXDGSqgそのようです。
CSSの/*hogehoge*/がShift_JISのようだったんですが
どこでそれが分かるのか、確認したいのですが術を知らず。。。。orz
0316nobodyさん
2006/01/22(日) 06:39:06ID:???それなりにまともなテキストエディタを使えば今の文字コードを表示してくれる。
とりあえずWindows標準のメモ帳で読み込んで、普通に漢字が表示されたらShift-JIS。
文字化けを起こしたらEUCなりUnicodeなりのShift-JIS以外の文字。
0317nobodyさん
2006/01/22(日) 06:40:07ID:???0318nobodyさん
2006/01/22(日) 06:41:07ID:pSXDGSqg$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フリーのエディタを使ってますが今の文字コードや改行の種類は分かるようになっています。
ただ、PHPファイルの中に記述したり読み込んだりするものたち(例えば外部のテキストやCSS)のコードをどうやってPHP仕様に合わせればいいのかがググって見てもわかんないのです。
0321nobodyさん
2006/01/22(日) 06:48:38ID:???HTMLをEUCで出力してるならそれで読み込むCSSもEUCで保存しろ。
テキストファイルは処理の仕方による。読み込んでそのまま変換もせずに
出力してたり検索に使ってたりするなら最初からEUCで保存しとけ。
0322nobodyさん
2006/01/22(日) 06:50:40ID:???EUCの方が都合がいいのはPerlだって全く同じだ。
同様にPHPでもPerlでもShift_JISで書けるぞ。
0323nobodyさん
2006/01/22(日) 06:51:09ID:pSXDGSqg何を持ってしてかは分かりませんが、
テキストファイルを読み込んでみたんです。それで、それをHTMLに吐き出させるようにしたのに正しく出力されませんでした。
HTMLに吐かせる前にprintで調べると、数字や小文字のアルファベットは正常にできてました。ただ、日本語のところだけは文字化けしたり、空白だったり。。
もうorzなんです。
0324nobodyさん
2006/01/22(日) 06:53:39ID:pSXDGSqg最初からEUCに変換は都合上できないので、PHP上で変換したいのですが
そういう関数がありましたっけ?
0325nobodyさん
2006/01/22(日) 06:59:10ID:pSXDGSqgそうなんですか、知りませんでしたorz
PHPはEUCで保存しないと文字化けするもんだとばかり。。。
perlをEUCで保存した経験はなかったです。勉強になりました_ト ̄|○
0326nobodyさん
2006/01/22(日) 06:59:56ID:???0327nobodyさん
2006/01/22(日) 07:00:31ID:???0329nobodyさん
2006/01/22(日) 07:10:10ID:pSXDGSqgググって来ました!
明確な助言で超わかりやすかったです。ありがとう。
0330nobodyさん
2006/01/22(日) 07:37:21ID:???0331nobodyさん
2006/01/22(日) 07:55:57ID:???0332nobodyさん
2006/01/22(日) 08:11:50ID:???0334nobodyさん
2006/01/22(日) 10:19:09ID:???http://php.benscom.com/images/php_snow.gif
ファイル名にsnowって書いてあるね。
0336nobodyさん
2006/01/22(日) 12:29:09ID:nt4QJioJ配列をグローバル宣言するにはどうしたらいいのでしょうか?
0339nobodyさん
2006/01/22(日) 14:29:08ID:???<?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:???0343nobodyさん
2006/01/22(日) 17:26:06ID:???$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:???ためしにsshでそのphpの所有者をrootにして実行したのですが通りませんでした。
そこで、shell_exec関数で php XXX.php >>/dev/null と書いて実行したのですが通りませんでした。
php5環境でchownを使われてる方、何か特別な設定を施されましたでしょうか。
ちなみにサーバのルートドキュメントでそのphpは実行されてまして、
作成されたディレクトリのデフォルトの所有者はapacheとなっています。
この所有者をchownでrootなど他の所有者に変更したいです。
0345nobodyさん
2006/01/22(日) 18:14:11ID:???個人的に作ったツールで第3月曜日を取得するのは以下のような方法で取得していた。
これで問題があるようなら報告よろしく。
21 - (int)date("w", mktime( 0, 0, 0, $month, 20, $year));
0346nobodyさん
2006/01/22(日) 18:20:39ID:???http://jp.php.net/manual/ja/function.chown.php
0347nobodyさん
2006/01/22(日) 18:28:25ID:???> phpの所有者をrootにして実行した
この時の権限チェックは、
・実行プログラム - zend謹製のphpプログラムそのもの
・読み込むファイル - 対象のphpスクリプトファイル
に対して行われるので、スクリプトの所有者を弄っても無意味ですよ。
chownを使わないで済むように作るか、chownの操作対象を含む親ディレクトリの所有者や
パーミッションを適切なものに変更するのが一般的なやり方です。
0348nobodyさん
2006/01/22(日) 18:50:11ID:???レスありがとうございます。
試しに次のことをやってみたのですがやはりOperation not permittedとエラーが出てしまいます。
・phpがあるさらに上層のディレクトリの権限を777に
・試しにルートディレクトリからそのスクリプトがあるディレクトリをrootの所有に
ちなみにphpのプログラムは念のため確認してみましたが所有はrootでした。
mkdirでディレクトリを作成してそのディレクトリの権限をアカウントの者にしたいのですが、
apacheの所有でディレクトリが作成されてしまいまて、効率悪いですがシェルで直接手直しするしかないようです(´・ω・`)ショボーン
0349nobodyさん
2006/01/22(日) 19:07:39ID:???「phpのプログラムの所有」うんぬんとか言ってる時点で見当違い。
apache経由で動かしてるんだから、apacheの動かしているユーザーでしか動かせない。
そのスクリプト、sshで、sudoなり、suしてrootになって実行すれば動作するだろ。
そういうことだ。
0350nobodyさん
2006/01/22(日) 20:40:16ID:???Undefined になるよな。
E_NOTICEだとエラーの詳細がわからんし・・・
おまいらどうしてる?
0351nobodyさん
2006/01/22(日) 21:02:03ID:???0352nobodyさん
2006/01/22(日) 21:17:08ID:???作りたいんですけどえらーになってしまう。
foreach ($play as $k ){
$counter[$k['sex']]++;
}
0354nobodyさん
2006/01/22(日) 21:33:57ID:???0355nobodyさん
2006/01/22(日) 21:38:26ID:???その部分が悪いわけじゃない。
ちゃんと array_key_exists でチェックして処理してくれ。
はい次。
0356nobodyさん
2006/01/22(日) 21:40:06ID:???カウンターのインデックスはDBからの値であって
宣言してないわけだよ。そこへインクリメントしてるから
エラーになるわけだ。 わかんないのか?
$counter[?????]++;
0357nobodyさん
2006/01/22(日) 22:31:49ID:???レス�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:???ブラウザがアクセスするのはサーバなんだから
サーバの権限で動かせるようにすればおk
多分サーバは nobody か apache ユーザ/グループで動かしてるんだろうから
chown -R apache:apache /var/www とかすれば?
0360nobodyさん
2006/01/22(日) 23:21:57ID:???0362nobodyさん
2006/01/23(月) 00:07:48ID:???<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:???なるほど・・・1日を基点として3週間の最後の日から引けば確かに月曜日になりますね。
ありがとうございますm(_ _"m)ペコリ
date("w")って数値で返ってくるのですが、string型なんですね(;´▽`A``
>>362
mb_internal_encoding指定してやってみて
0365nobodyさん
2006/01/23(月) 02:27:47ID:???指定した文字列を抜き出すにはどうすればいいでしょうか?
またそのデータ内に指定した文字列がいくつ入っているかも出来ないでしょうか?
0366nobodyさん
2006/01/23(月) 02:38:53ID:???$cnt = preg_match_all('/文字列/', file_get_contents("ファイル名"));
0367nobodyさん
2006/01/23(月) 04:32:07ID:???HTML convert time to 0.015 sec.
みたいな部分はどのように記述されてるのでしょう?
wikiのソースを見ても全くわからず・・・
PHPで動的なサイトを作る練習をしているんですけど、
htmlが、どのくらいの速さで出力されるのか知りたいのです。
どなたかわかるかた教えてください。
0368nobodyさん
2006/01/23(月) 04:41:51ID:???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:zyAl85LCphp1.phpで
$_SESSION[$key1][$key2]
のデータを入力したものを
php2.phpで参照しようとしてもできませんでした…
0371nobodyさん
2006/01/23(月) 09:59:38ID:???それぞれの利点欠点を教えてください。
0372nobodyさん
2006/01/23(月) 10:04:36ID:???0373nobodyさん
2006/01/23(月) 10:10:50ID:???0374371
2006/01/23(月) 10:17:45ID:???個人的には、性能よりも標準で、つまりより多く使われている方を選択したいのですが。
0376371
2006/01/23(月) 10:23:46ID:???0377nobodyさん
2006/01/23(月) 10:30:40ID:???0378nobodyさん
2006/01/23(月) 10:52:30ID:???0379nobodyさん
2006/01/23(月) 11:15:42ID:???0380nobodyさん
2006/01/23(月) 11:17:16ID:???例えば2×3の配列あって前の配列?の最後の配列を取りたい場合は
end(array)でとれると思うのですが
前の配列の最後の中にある配列の特定の値を取りたい場合はどうしたらいいのでしょうか?
array[0][2]という感じで。
一旦end(array)を取得して次にarray[2]とか2回に分けないといけないのでしょうか?
0381nobodyさん
2006/01/23(月) 11:33:19ID:???0382nobodyさん
2006/01/23(月) 12:10:22ID:???0384nobodyさん
2006/01/23(月) 13:27:42ID:???if($i==1){
?>
<TABLE>
<?php
}
?>
上のような記述方法って正式に認められてますでしょうか?
0386nobodyさん
2006/01/23(月) 13:33:31ID:???どうすればよいのでしょうか?
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:???0389nobodyさん
2006/01/23(月) 13:58:04ID:???pregじゃダメ?
$url = preg_replace("/^(http:\/\/[^/]+).*/","$1",$url);
あるいは
$tmp = parse_url($url);
$url = $tmp['scheme'] . '://' . $tmp['host'];
0391nobodyさん
2006/01/23(月) 14:14:18ID:???parse_url()使ったほうが楽な気がする
$array = parse_url($url);
print $array['scheme'].'://'.$array['host'];
0392nobodyさん
2006/01/23(月) 14:26:03ID:???個人的にはオススメしない
0396nobodyさん
2006/01/23(月) 18:12:39ID:???手抜き版
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:???array_push( "", $var );
とほぼ同じ
0400nobodyさん
2006/01/23(月) 19:36:32ID:???array_push( $var, "" );
だよね。
しかも$varを配列で宣言しておかないとワーニングになるし。
0401nobodyさん
2006/01/23(月) 20:08:36ID:???一応解決?しましたので似たような人のために自分が取った方法を書いてきます。
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:???残念だが 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に接続しています。
■ このスレッドは過去ログ倉庫に格納されています