【PHP】下らねぇ質問はここに書き込みやがれ 43
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2007/04/01(日) 04:21:50ID:VGqlLhlDPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 41
http://pc11.2ch.net/test/read.cgi/php/1173163186/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0941nobodyさん
2007/04/11(水) 14:42:45ID:???0942nobodyさん
2007/04/11(水) 14:43:03ID:???PHP自体の話題じゃないから、.forward スクリプト とか mail alias スクリプトあたりで検索してみて。
ピント来ないのであれば、.forwardやメールaliasでよく使われるprocmailと一緒に検索。
.forward procmail とか。そこらへんからなにをやってるのか糸口をつかもう。
0944925
2007/04/11(水) 14:48:34ID:???ご丁寧にありがとうございますm(_ _)m
サーバーサイドは無知ですので書籍等も探してみたい思います。
>>941
マニュアル人間!
0945925
2007/04/11(水) 14:54:43ID:???しねよカス。
>>943
えっと、ググってみましたがいまいちよくわかりません。
もう少し詳細に教えていただけませんでしょうか?
>>944
偽者やめてください・・・
0946925
2007/04/11(水) 15:06:45ID:???0947nobodyさん
2007/04/11(水) 15:19:11ID:???0948nobodyさん
2007/04/11(水) 15:30:56ID:???0949貴之
2007/04/11(水) 16:07:05ID:1U3tdNyudefine ("ROOT_DIR", realpath( dirname(__FILE__) . '/..' ).'/' );
となると思うのですが、
ルートディレクトリの上を定数にするにはどうしたらいいでしょうか?
0950nobodyさん
2007/04/11(水) 16:11:42ID:???0951nobodyさん
2007/04/11(水) 16:25:39ID:???0952nobodyさん
2007/04/11(水) 16:36:47ID:???0953貴之
2007/04/11(水) 16:50:59ID:1U3tdNyu既にぐぐりました!
ID出すとかきちんとルールは守っていますので。
口が悪くてすみません。
でも教えてください!
0954nobodyさん
2007/04/11(水) 16:52:36ID:???0955nobodyさん
2007/04/11(水) 17:14:42ID:aPlJaTQ1os redhat es4 です
メールから受け取った文字列をPHPで処理してDBに格納するといったことをやりたいのですが、
mb_convert_encodingでのコード変換が上手くいきません。
いろんなサイトを見て回って教科書どおりだと思うんですが、なんで上手くいかないのでしょうか。
サンプルコード
==========================================================
#内部文字コードを表示
echo "internal=".mb_internal_encoding();
#受け取った文字列の文字コードを表示
echo "\n$mail['subject']=".mb_detect_encoding($mail['subject']);
#文字コードを変換
$test = mb_convert_encoding($mail['subject'],mb_internal_encoding(),mb_detect_encoding($mail['subject']));
#変換後の文字列の文字コードを表示
echo "\nafter convert=".mb_detect_encoding($test);
[結果]
internal=EUC-JP ⇒現在の文字コード
Array['subject']=JIS ⇒文字列の文字コード
after convert=SJIS ⇒変換後の文字コード
==========================================================
0956貴之
2007/04/11(水) 17:23:27ID:1U3tdNyu14です。
解答お願いします。
ググるワードでもいいのでお願いします。
ルートディレクトリ 上
くらいしか考えられなかったです。
0957nobodyさん
2007/04/11(水) 17:48:00ID:???define('ROOT_DIR', dirname(dirname(__FILE__)) . '/');
define('ROOT_DIR_UP1', dirname(ROOT_DIR) . '/');
0958nobodyさん
2007/04/11(水) 18:11:00ID:???mb_convert_encodingは正確に指示通りconvert出来るかどうか別だから、
mb_detect_orderをセットして優先順位を決めてからやってみたら?
0959貴之
2007/04/11(水) 18:37:42ID:1U3tdNyuできました!
ありがとう
0960nobodyさん
2007/04/11(水) 19:24:32ID:zI9N6jInAさん,10 Cさん,5 Bさん,-5 Dさん,-10
Dさん,8 Cさん,2 Eさん,-2 Fさん,-4
Bさん,9 Gさん,3 Hさん,-1 Cさん,-11
と、こんな感じで「名前,点数 (タブ区切り) 名前,点数 〜〜」
というデータが書かれたtsvファイルがあります。
これを
1位 Aさん 10点
2位 Bさん 4点
・
・
・
という具合に、順位とそれぞれの点数を全部加算して出力したいのですが、
よい実装方法が浮かびません。
あらかじめtsvファイルから名前だけを抜き出して重複チェックをし、
それを別のファイルに書き出しておく。
tsvファイルを開いてfileで配列にいれ、
foreachで回して、別ファイルに書き出した名前でひっかかった点数だけを抜き出して加算していく。
加算した点数と名前をまた別ファイルに書き出していく。
そして最終的にそれをソートし・・・
ってな具合かなと思ってるんですが、
もっとスマートな方法がありそうなので、質問してみました。
0962nobodyさん
2007/04/11(水) 19:38:44ID:???ファイルを読みながら、名前をキー、点数を値にして配列を作る。
キーが既に存在したら点数を加算するだけ。
最後に配列をソート。
0963nobodyさん
2007/04/11(水) 20:16:06ID:zNlK5rg/http://aaaaaaaa.ddo.jp:8080
などのWMEの配信が
今放送しているかどうかをチェックしたいのですが
どういう方法がいいんでしょうか?
お願いいたします。
0964nobodyさん
2007/04/11(水) 20:17:27ID:???0965960
2007/04/11(水) 20:43:06ID:zI9N6jInレスありがとうございました。
確かにそうなんですけどね><
今回ちょっと使えないんです…
>>962
レスありがとうございました。
今ちょっとやってみたんですが、うまいことできそうです。
名前をキーにするっていう発想がなかったです…
0966nobodyさん
2007/04/11(水) 21:00:20ID:zNlK5rg/incやfopenでもFalseでした…
うーん
0967nobodyさん
2007/04/11(水) 21:01:28ID:???0968960
2007/04/11(水) 21:06:34ID:zI9N6jIn傷口を広げないで下さい><
0969nobodyさん
2007/04/11(水) 22:07:13ID:???<?php
$a = '?';
$b = 'か';
$c = 'し';
$d = 'ま';
$e = 'す';
$f = '週';
$g = '回';
$h = 'H';
$i = '何';
echo $f .$i .$g .$h .$c .$d .$e .$b .$a;
?>
0972nobodyさん
2007/04/11(水) 22:54:58ID:???0973nobodyさん
2007/04/11(水) 23:04:55ID:???12のPHP最適化テクニック
ttp://phpspot.org/blog/archives/2006/11/12php.html
01. staticメソッドが使えるなら使おう。速度は4倍になる
02. __get, __set, __autoload は使わない
03. require_once は重い
04. include, requireで読み込むファイルはフルパスにしよう
05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
10. $row['id'] は $row[id] より7倍速い
11. PHPのエラーメッセージは重い( noticeとかwarningとか)
12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
(参考)
PHPの最適化は本当か?
ttp://jigen.aruko.net/archives/433/
PHPのパフォーマンス改善
ttp://selfkleptomaniac.org/archives/45
■最適化にまつわる神話
1. コメントをなくすと速くなる
2. ダブルクォート(”)はシングルクォート(’)より速い
3. 参照渡しの方がコードが速くなる
4. オブジェクトを使う方が速くなる
5. タナリ($a = 1 ? $b = $a : $b = 0;)はif(){}else{より速い
これらは全部嘘です。
0974nobodyさん
2007/04/11(水) 23:39:07ID:???これでは無理でした。
[0-100]
以下だとできるんですがスマートではないです。
100 | [1-9][0-9] | [1-9]
0975nobodyさん
2007/04/11(水) 23:47:02ID:???0976nobodyさん
2007/04/11(水) 23:50:28ID:???ちなみにphp-5.2.1にて俺が取ったベンチだと
str_replaceが最速
ttp://www.uploda.org/uporg771139.gif.html
0979nobodyさん
2007/04/12(木) 00:04:54ID:???釣られておくけど、その記事のTIPSは
いくつかを除いて重箱の隅レベルのパフォーマンス改善だし
これを使えあれを使うな系はケースバイケースのものが多いし
正直あまり良くないと個人的には思う
初心者に誤った先入観を持たせるような気がする
0980nobodyさん
2007/04/12(木) 00:07:58ID:???うほっ!
原文読んだら、反対なのねん!
>str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4
>>979
俺も思う。だからテンプレに入れるべきじゃないと思うんだよね…。
0981nobodyさん
2007/04/12(木) 00:12:30ID:???「Q:処理が重いです A:コードを整理して無意味なコードやループを無くせ」
0982nobodyさん
2007/04/12(木) 00:20:36ID:???> 01. staticメソッドが使えるなら使おう。速度は4倍になる
そんなもんクラス設計によりけりだから
> 02. __get, __set, __autoload は使わない
使うと便利になるケースめちゃくちゃあるだろアフォかおまえは
> 03. require_once は重い
分かるけどコードキャッシュなりなんなりで解決すべきで
コーディングで対処するものではないのでは
> 04. include, requireで読み込むファイルはフルパスにしよう
これも誤解を招く書き方
> 05. スクリプト開始時のUNIXタイムを $_SERVER['REQUEST_TIME'] で取れる
ふんふん、それでそれで?
> 06. strncasecmp関数やstrpbrk関数を使えるケースはこれらを使い、正規表現は使わない
微妙
> 07. preg_replaceはstr_replaceより速い、しかし、strtrはpreg_replaceより4倍速い
これはまあベンチの話だし的は外してない
> 08. 引数を、単体か配列かで自動判別するようなコードは出来るだけ避ける
ケースバイケース
> 09. @ を使ったエラー制御はとても遅い。→ @fputs($fp, "?");
これは俺もあまりおすすめしない
> 10. $row['id'] は $row[id] より7倍速い
それnoticeちゃうんかと
> 11. PHPのエラーメッセージは重い( noticeとかwarningとか)
じゃあおまえはもうerror_reporting(0)でずっとコーディングしてろこのハゲ
> 12. for ($x=0; $x < count($array); $x) のように、forの中でcountを使うと毎回countが呼ばれるので使わない。
どっちでもいーよ死ね
こんな感じだろ?実際
0984nobodyさん
2007/04/12(木) 00:24:28ID:???「A:気にしない。気になるんだったら頑張れ」ぐらいでもよさそう。
俺は>>7(or >>973)要らないと思うよ。
0985nobodyさん
2007/04/12(木) 00:26:44ID:???TIPS的にどうかって意味合いでしか書いてねーし
実際ベンチの結果なんてしるかよw
鬼の首取った気で嬉しかったのか?ww
0986974
2007/04/12(木) 00:39:31ID:???IPチェックしたいのでその方法はあまりきれいじゃないかなあと
'/^210\.121\.3\.([0-9]|[1-9][0-9]|1[0-9][0-9] |2[0-4][0-9]|25[0-5])$/'
こんな感じしか無理ですか?
0987nobodyさん
2007/04/12(木) 00:42:37ID:???0988nobodyさん
2007/04/12(木) 00:54:19ID:???$ip = explode(".", $_SERVER["REMOTE_ADDR"]);
$chk_ip1 = sprintf("%d.%d.%d", $ip[0], $ip[1], $ip[2]);
if($chk_ip1 == "210.121.3" && ($ip[3] >= 0 && $ip[3] <= 100)){
echo "ok";
}
0989nobodyさん
2007/04/12(木) 01:06:50ID:???それを言ったら、最適化のTIPSであって
コードが読みやすくするTIPSではないから
>>982のいくつかは的外れだぞ
0990nobodyさん
2007/04/12(木) 01:27:46ID:???0991nobodyさん
2007/04/12(木) 01:49:43ID:???0992nobodyさん
2007/04/12(木) 01:50:50ID:???0993nobodyさん
2007/04/12(木) 01:53:03ID:???0994nobodyさん
2007/04/12(木) 02:11:26ID:???上位2つくらいの処理を見直すだけでずいぶん速くなることはよくある。
パフォーマンス最適化のTIPSなんてバカらしくなる。
0995nobodyさん
2007/04/12(木) 02:38:09ID:???そのためにも普段は見通しの良いコードを書くことを心がけるべきで、
パフォーマンス最適化TIPSみたいな小手先のテクニックを使って
コードが読みづらくなるのであれば、そのような愚は避けるべきだ。
そういうTIPSは最適化の時に考慮してやればいいだけの話だ。
0997nobodyさん
2007/04/12(木) 05:51:21ID:???せっかくのテンプレ案なんだから、否定するだけじゃなくて改良しようとかポジティブなほうにそのパワーを使えばいいのに・・
0998nobodyさん
2007/04/12(木) 06:57:36ID:???0999nobodyさん
2007/04/12(木) 08:09:41ID:???1000nobodyさん
2007/04/12(木) 08:10:12ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。