【PHP】下らねぇ質問はここに書き込みやがれ 43
■ このスレッドは過去ログ倉庫に格納されています
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
0538nobodyさん
2007/04/07(土) 18:47:11ID:???何か実現したい事があった時に、色んな設定(コーディング)等をする必要があるのは高度だ。
不具合があった時に問題切り分けなど時間かかって経費かかるし、
速度面や再利用性など重視で問題がなければ、言語内で完結したほうがいい。
0540nobodyさん
2007/04/07(土) 18:57:09ID:???0541nobodyさん
2007/04/07(土) 19:40:16ID:???0542nobodyさん
2007/04/07(土) 20:06:11ID:???0543nobodyさん
2007/04/07(土) 20:27:29ID:???みたいのを読んだ気がするんだけど、
functionの戻り値がOKなら配列(array)だめならfalse(bool)
みたいに違う型を送るのは、設計的にあまりよくないのですか?
戻り値が想定できないじゃなくて、文字列か配列特定できないどっちかが返ってしまうとかだったかも・・・。
0544nobodyさん
2007/04/07(土) 20:56:32ID:???その関数を使うPG視点で分かりやすく使いやすいのが良い関数。
>戻り値が想定できない?ような設計はだめだ
「戻り値が想定できないような関数名はだめだ」なら良く聞くけど。
0545nobodyさん
2007/04/07(土) 22:01:57ID:???PHPの標準関数はそういう戻り値(array or bool)が多いけど
正直言って使いにくいとはよく思う。
慣れたんで困らなくはないけど。
ただ、これは作法の話であって設計がダメとかいうのとは違う。
元の話を思い出したらまた来な。
0546nobodyさん
2007/04/07(土) 22:11:55ID:???0547nobodyさん
2007/04/07(土) 22:36:32ID:???ほとんど同一人物だろこれ。
0548nobodyさん
2007/04/07(土) 22:37:42ID:???0549nobodyさん
2007/04/07(土) 22:45:55ID:???0551nobodyさん
2007/04/07(土) 23:01:15ID:???PHPに興味はあるんだけど頭が悪くて質問に答えるどころか、
疑問も浮かんでこないのに、なにかスレで言いたくてたまらない
可哀想なやつだと思ってにこにこして読んであげてるよ、おれw
0552nobodyさん
2007/04/07(土) 23:01:46ID:K6TrX8TC$fp = fopen(filename, "r");
while(!feof($fp))
{
$str = fgets($fp, 4096);
$str = rtrim($str); // 改行除去
echo "$str<br>";
}
fclose($fp);
ファイルの中身
------------------
ああ
いい
うう
EOF
------------------
単純にファイルの中身を表示しているだけだが、ファイルの末端を改行すると
その行も処理されちゃうのはなんで?
EOFで最後の行は無視されるかと思うんだけど…
(if (!$str){ continue; } でうまくいけるけど)
0553nobodyさん
2007/04/07(土) 23:15:51ID:???null[EOF]
null[改行]
はrtrimから見れば一緒です。
0555nobodyさん
2007/04/07(土) 23:19:30ID:???0556nobodyさん
2007/04/07(土) 23:20:53ID:???単純にeofに達する判断が読み出した後だからとしか
期待する動作を望むならfgetsの戻り値でやるとか
$fp = fopen(filename, "r");
while($str = fgets($fp))
{
$str = rtrim($str);
echo "$str<br>";
}
fclose($fp);
0557nobodyさん
2007/04/08(日) 03:33:53ID:evw5P74Isubstr_count ( file_get_contents($file), "\n" );
今までは
count(file($path));
でやってたけど上のほうが1.5倍速かった
ファイルはShift_JISで日本語入ってるけど平気かな
0558nobodyさん
2007/04/08(日) 04:30:38ID:???sjisの下位バイトは制御コード使ってないので大丈夫。
間違ってるのは後者。改行コードが0個でも1と返る。
0559nobodyさん
2007/04/08(日) 09:24:41ID:iJakkiFrたとえば、ライブハウスのライブ情報を登録する機能があるとして、
各日にちごとに出演者情報を登録する際に、出演者数が毎日マチマチで
ある場合、SQLに送信する出演者IDの数もマチマチになるわけですけど、
そうすると、単純に考えたら保存するフィールドが複数必要になります。
でも、そんな不安定なことするわけにいかないので、特定のフィールド”players”に
カンマ区切りで追加上書きしていくのが正解なのかなぁと思ったんですが、
こういう発想でいいんでしょうか?
なんだかphpの質問かSQLの質問かわからないですが、アプリ制作の
いろはとして質問させてもらいました。OKですか?
0560nobodyさん
2007/04/08(日) 09:40:33ID:???DBの正規化の考え方からすれば、その「不安定なこと」も「特定フィールド
カンマ区切り」もいずれも外れてる。
ライブイベント情報に即して、出演者「行」を増やしていく(第一正規化)。
ライブイベント情報をキーにして出演者 tableを別途作り、またIDキーなどで
整序していく(第二正規化以降)のが普通。
0562nobodyさん
2007/04/08(日) 10:48:24ID:evw5P74Iさんくす
問題ないのね というか後者は間違ってたのか 助かりました
0563nobodyさん
2007/04/08(日) 11:42:42ID:???大抵カラムをその数だけ増やすかカンマ区切りで入れちゃうんだけど
0564nobodyさん
2007/04/08(日) 11:44:15ID:???0565nobodyさん
2007/04/08(日) 11:49:33ID:???みたいなもん)、出演者情報は、どう考えてもライブ情報なら最初から正規化対象だろうから
いい勉強の機会ということで。
0566nobodyさん
2007/04/08(日) 12:48:00ID:+aqEfY9a$path = '/diary/2007/';
$dir = opendir($_SERVER['DOCUMENT_ROOT'].$path);
while($file = readdir($dir)) {
if(ereg(".php$", $file)) {
$file = ereg_replace('.php', '', $file);
echo('<a href="/diary/2007/'.$file.'">'.$file.'</a>'."\n");
}
}
closedir($dir);
このようにファイル名を取得してリストを作っています。
ディレクトリ 2007 の中には 01.php, 02.php, 03.php, 04.php のファイルがあり
また、上記の方法ではこの順に表示されます。
ディレクトリの中の最後のファイル名のみを取得したい場合は
(上記の例では 04.php が "最後のファイル名" に相当します)
どのように書けば良いのでしょうか。よろしくお願いします。
0567nobodyさん
2007/04/08(日) 13:13:00ID:???$aF[] = ereg_replace('.php', '', $file);
として
最後に
$hosii_file_mei = array_pop($aF);
じゃだめなのかい?
0568nobodyさん
2007/04/08(日) 13:23:08ID:Q73wCY81PHPでBBSを作りました。
案の定荒らしが書き込まれています。
そこでプロキシ経由での書き込みを禁止したいのですが、その書き込みがプロキシ経由かどうかを知るためにはどうすればよいのでしょうか?
よろしくお願いします。
0571568
2007/04/08(日) 13:29:08ID:Q73wCY81ありがとうございます。
getHostByAddr($_SERVER['REMOTE_ADDR']) === $_SERVER['REMOTE_ADDR'] )
で真にならなければプロキシ経由になるんですね。
知りませんでした。さっそく導入してみます。
0572nobodyさん
2007/04/08(日) 13:30:42ID:???こんなに簡単にわかるのか・・・
0573569
2007/04/08(日) 13:31:55ID:???「経由」かもしれない、っていう程度だし、負荷がかかるし、あんまり自分は好きな方法じゃない。
とりあえずそこらへんからはじめて見たらってな程度。
自分がやるなら>>570の方面でやるだろうな。
0574nobodyさん
2007/04/08(日) 13:38:40ID:???フレームワーク?
それともソフト?
0575nobodyさん
2007/04/08(日) 13:38:59ID:???$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php');
とかやってcount()とかarray_pop()とかarray_slice()とかかなぁ。
0577568
2007/04/08(日) 13:43:30ID:Q73wCY81http://bbq.uso800.net/code.html
に組み込み方法として
sub checkProxyList
{
my $RADDR = $ENV{'REMOTE_ADDR'} ;
$RADDR =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $query_addr = "$4.$3.$2.$1.niku.2ch.net";
my $addr = join('.', unpack('C*', gethostbyname($query_addr)));
if ($addr eq '127.0.0.2')
{
DispError("ERROR!","公開PROXYからの投稿は受け付けていません!!(1)");
}
return 0 ;
}
が載っていましたが、これってPHPではないですよね?
PHPでのBBQの導入はどうすればよいのでしょうか?
0578nobodyさん
2007/04/08(日) 13:43:56ID:???いや、ググって調べたんだが自分の考えが合っているかどうかわかんないので
よく使う関数集みたいな感じで集めたものでいいの?
「アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。」
0579nobodyさん
2007/04/08(日) 13:44:54ID:???glob関数は、パターンマッチでファイル名を確保するから、
それ使うと、>>566の要件(おそらくファイルシステム上のファイル順での取得)には合わないでしょ。
0580nobodyさん
2007/04/08(日) 13:49:52ID:???それくらい勉強しなさい。
perl知らなくても、その程度のコード見れば移植は簡単でしょ。
それにもう少しぐぐれば、PHPでのそのBBQ対応スクリプト見つかるし。
脊髄反射で聞くのはやめようぜ。
0582nobodyさん
2007/04/08(日) 13:51:47ID:???include_once()
require()
require_once()
この違いがわかんね
0585nobodyさん
2007/04/08(日) 13:55:58ID:???どの辺り読むかURL出してやったほうがいいと思うぞ
ただでさえ読みづらいマニュアルなんだ
0587568
2007/04/08(日) 14:01:34ID:Q73wCY810588nobodyさん
2007/04/08(日) 14:07:27ID:???http://jp.php.net/manual/ja/function.include.php
http://jp.php.net/manual/ja/function.require.php
http://jp.php.net/manual/ja/function.include-once.php
http://jp.php.net/manual/ja/function.require-once.php
これでいいのか?
Webなんかで見るから見辛いんだろ?
CHMでダウンロードして再コンパイルすれば文字化けも消えて便利だぞ?
0589nobodyさん
2007/04/08(日) 14:08:22ID:???ちょwwww詳しく!!!!
0590nobodyさん
2007/04/08(日) 14:08:57ID:???0591nobodyさん
2007/04/08(日) 14:17:07ID:???>どの辺り読むかURL出してやったほうがいいと思うぞ
関数なんて関数名でぐぐれば出てくるしPHPサイとの検索機能使ってもでてくるし
関数リファレンスって章があるんだし
自分で探せない奴は頭おかしいと思うぞ。
0592566
2007/04/08(日) 14:21:53ID:+aqEfY9aありがとうございました。最近のファイルを取得したかったので、
>>567 の方法を採らせていただきました。ありがとうございます。
0593nobodyさん
2007/04/08(日) 14:25:12ID:???>>567だけど、>>579のglob使うほうがスマートだよ。
$index = glob($_SERVER['DOCUMENT_ROOT'].'/diary/2007/*.php',GLOB_NOSORT);
echo array_pop($index);
の二行で終わる。
0594nobodyさん
2007/04/08(日) 14:27:02ID:???PHPほど親切で分かりやすいマニュアルはないだろマジで・・・
0595nobodyさん
2007/04/08(日) 14:29:00ID:???ザクザク見つかる。
というかそれしか出てこない。
PHPマニュアルのミラーがなんであんなにあるのか不思議だ。
置くなとは言わないが、せめて検索エンジンはじいてくれよ。。。
0596nobodyさん
2007/04/08(日) 14:29:21ID:???0597nobodyさん
2007/04/08(日) 14:41:36ID:???ググった時の上位10件がPHPマニュアルとそのミラーなんて酷すぎるぜ。
あと、PHPマニュアルは階層構造になっているのが逆に使いづらいというか。
目次をクリックしたらまた目次だったときは一瞬迷う。
0598nobodyさん
2007/04/08(日) 14:43:03ID:???0599nobodyさん
2007/04/08(日) 14:45:07ID:???沢山あって分かりにくいからミラー作らないで下さい/Googleは規制してくださいってか?
情報の選別くらい自分でしようぜ
0600nobodyさん
2007/04/08(日) 14:51:11ID:???俺も検索しててウザーって思う
なんでみんなあんなにミラー作りたがるんだ?
0601nobodyさん
2007/04/08(日) 15:20:38ID:???0602nobodyさん
2007/04/08(日) 15:25:46ID:???0604nobodyさん
2007/04/08(日) 15:40:28ID:???0605nobodyさん
2007/04/08(日) 15:43:51ID:???0608nobodyさん
2007/04/08(日) 15:50:40ID:???・ぐぐる。
・目的別リファレンスがある書籍を買う。
・日頃からマニュアルを眺めて関数の機能を把握しておく。
0609nobodyさん
2007/04/08(日) 15:51:17ID:???0610609
2007/04/08(日) 15:52:19ID:???0611nobodyさん
2007/04/08(日) 16:09:15ID:???0612nobodyさん
2007/04/08(日) 16:34:10ID:???公式ブックマークしとけばそんなサイト気にならないよ。
0613nobodyさん
2007/04/08(日) 16:46:06ID:???自分らしさの表現なの?
どうせなら本家ミラーのjp*.php.netにすればいいのに
0614nobodyさん
2007/04/08(日) 16:52:55ID:???0615nobodyさん
2007/04/08(日) 17:05:27ID:???0616nobodyさん
2007/04/08(日) 17:33:21ID:???ミラーサイト側に苦情を入れようと思ってる。
0617nobodyさん
2007/04/08(日) 17:47:25ID:???サーバーの挙動が遅いってのもあるよな。そこらへんは使う気になれない。
0618nobodyさん
2007/04/08(日) 17:52:51ID:???以上、アンチミラーサイト側
それについてミラーサイト作者の反論
↓
0619nobodyさん
2007/04/08(日) 18:06:37ID:???0620617
2007/04/08(日) 18:13:53ID:???0622nobodyさん
2007/04/08(日) 18:33:07ID:???0623nobodyさん
2007/04/08(日) 18:34:56ID:???例えばどの関数でぐぐるとそうなる?
0624nobodyさん
2007/04/08(日) 19:09:56ID:???http://www.google.co.jp/search?q=ob_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_clean&lr=lang_ja
http://www.google.co.jp/search?q=ob_get_contents&lr=lang_ja
上位にくるミラーうざい
0625nobodyさん
2007/04/08(日) 19:11:08ID:???むしろミラーサイトなんて複数もいらねえよ
0626nobodyさん
2007/04/08(日) 19:12:27ID:???0627nobodyさん
2007/04/08(日) 20:35:55ID:???/^\d{4}$/
でいけましたが、
4桁〜8桁の文字にマッチさせるにはどうすれば良いのでしょうか?
/^\d{4-8}$/
にしてみましたがダメでした
0628nobodyさん
2007/04/08(日) 20:41:18ID:???・ウェブサイトの知名度やページランクが上がる可能性がある。
・広告をつければ何もせずにお金がじゃんじゃか、ああおいしい。
・なんとなくいいことした気分になる。
0631nobodyさん
2007/04/08(日) 20:44:22ID:???つhttp://www.php.net/manual/ja/reference.pcre.pattern.syntax.php
0632nobodyさん
2007/04/08(日) 20:50:55ID:???0633nobodyさん
2007/04/08(日) 20:59:02ID:???0634nobodyさん
2007/04/08(日) 20:59:54ID:???0635nobodyさん
2007/04/08(日) 21:04:49ID:???マニュアルばっかりだとやる気なくすよってことでは?
-マニュアルとか-manualを付けるって手もあるけど
たまたまそれらの語句を含んでいた有益なページまで除外してしまうかもしれんし
0636nobodyさん
2007/04/08(日) 21:10:11ID:???■ このスレッドは過去ログ倉庫に格納されています