【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0002nobodyさん
2005/11/27(日) 00:08:30ID:eBvjdczp【PHP】質問スレッドpart30【php】
http://pc8.2ch.net/test/read.cgi/php/1130190606/
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/l50
【PHP】質問スレッドpart28【php】
http://pc8.2ch.net/test/read.cgi/php/1115281031/l50
【PHP】質問スレッドpart27【php】
http://pc8.2ch.net/test/read.cgi/php/1109857283/l50
関連リンク
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
0003nobodyさん
2005/11/27(日) 00:10:26ID:eBvjdczp【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/l50
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/l50
【PHP】フレームワークについて語るスレ【総合】
http://pc8.2ch.net/test/read.cgi/php/1123608068/l50
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/l50
[PHP-users MLヲチ8]巣もいませんでした。
http://pc8.2ch.net/test/read.cgi/php/1132800251/
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/l50
関連板
データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
0004nobodyさん
2005/11/27(日) 00:11:47ID:eBvjdczp1. ブラウザに何も表示されないんだけど・・・
→ error_reporting、display_errors、log_errors
2. include/requireに?a=b&c=dのようなパラメータつけたい
→ できません
3. $a1,$a2,$a3...はどうしたら?
→ 可変変数・・・というかむしろ配列使え
4. echo "$arr['hoge']['fuga']"; がうまくいかない
→ {おっぱい括弧}でくくれ
5. echo?print?
→ echoはコンマ区切りで書ける。printは関数。パフォーマンスは気にするな
6. 値渡し・参照渡しのパフォーマンス
→ これまた気にするな
7. csvやtsvを扱いたい
→ まずはfgetcsv
8. ファイル入出力関数(fopen等)でリモートファイル扱う際の限界
→ fsockopenでソケット通信で解決
9. 一定時間ごとに何かしたい
→ cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
→ ImageMagick
11. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
12. クッキーの情報をユーザから隠したい
→ セッション使え、ただしクッキーとセッションは仕組みが違うから同じように扱うな
0005nobodyさん
2005/11/27(日) 00:12:49ID:eBvjdczp1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
目の前で生じている現象をそのまま具体的に書くなどもっての外。
事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
"どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
絶対に避ける。
8. 情報は小出しに。
「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称でなはい。
まちがっても「エスパーの方,回答お願いします」なんて痛い質問するな。つーかカエレ。
0006nobodyさん
2005/11/27(日) 00:13:27ID:???0007nobodyさん
2005/11/27(日) 00:13:59ID:???0009nobodyさん
2005/11/27(日) 00:37:48ID:???0010nobodyさん
2005/11/27(日) 00:55:01ID:???見つけました、で終わるんじゃなくて
質問したんだったら、どう解決したのかも書け
getID3(http://www.getid3.org/)だと思うが
0011nobodyさん
2005/11/27(日) 00:57:00ID:???0012nobodyさん
2005/11/27(日) 01:20:11ID:???送られてきたクエリーがASCIIかどうか判定する関数が
欲しいのですが、そういう関数って用意されているのでしょうか
あったら教えてください。
0013nobodyさん
2005/11/27(日) 04:12:56ID:???PEARをインストールしようとgo-pear.batを実行し、
なにも反応がないのでENTERを3,4回叩くと、
以下のようなエラーが出てしまいます。
Fatal error: PEAR_Installer_Role::require_once(): Failed opening required 'PEAR/Installer/Role/Php.php' (include_path='.;c:\php\includes;c:\php\pear') in phar://go-pear.phar/PEAR/Installer/Role.php on line 80
どうすればよいでしょうか?
0014nobodyさん
2005/11/27(日) 04:52:09ID:???ageてね。
ASCIIかどうかってのが言葉通りの意味なら自分で書くしかないよ。
function ctype_ascii($str) {
for ($i = 0; $i < strlen($str); $i ++) if (ord($str{$i}) & 0x80) return false;
return true;
}
あとは目的としているものがctype_*関数でどうにかならないかどうかもチェック。
ctype_printとかは0x80以上でもtrueになる範囲があるので注意。
>>13
ageてね。
反応があるまで待ってみたら?
0015nobodyさん
2005/11/27(日) 04:57:56ID:???0016nobodyさん
2005/11/27(日) 10:46:06ID:9sz9qgK1例えばabc.jpgのファイルであれば
$array=explode(".",$filename)
$array[1]
でできるのですが、ほかの箇所に.があった場合にうまく処理できません。
どこに.があろうと拡張子を取得するにはどうすればよいでしょうか?
4.3.11を使用しています。
0017nobodyさん
2005/11/27(日) 10:51:20ID:???0018nobodyさん
2005/11/27(日) 10:57:28ID:???pathinfo
0019nobodyさん
2005/11/27(日) 11:11:08ID:???0021nobodyさん
2005/11/27(日) 12:25:55ID:???0022nobodyさん
2005/11/27(日) 12:43:22ID:???これ以上でも以下でもない
0023nobodyさん
2005/11/27(日) 12:44:04ID:???0025nobodyさん
2005/11/27(日) 13:04:35ID:???https://coterie.ws/uncho.pl.html.htm.php.gz.rm.zip.lzh.txt.php9?cat=afo
0026nobodyさん
2005/11/27(日) 13:47:49ID:???0027nobodyさん
2005/11/27(日) 14:35:18ID:???最もスマートな方法は何でしょうか。
例えば
$s = "aaa\nbbb\nccc\nddd\n";
↓
$arr[0] = "aaa";
$arr[1] = "bbb";
$arr[2] = "ccc";
$arr[3] = "ddd";
みたいな感じです
0028nobodyさん
2005/11/27(日) 14:43:41ID:???0029nobodyさん
2005/11/27(日) 15:08:05ID:???みたいな記述を見たもので、別物なのかなと思いました。
0030nobodyさん
2005/11/27(日) 15:20:14ID:???PerlやPHPはそのインターフェイスの上で動作可能な言語。
0031nobodyさん
2005/11/27(日) 15:25:50ID:VNuPQoCa0032nobodyさん
2005/11/27(日) 15:45:02ID:???0034nobodyさん
2005/11/27(日) 16:54:45ID:???0035nobodyさん
2005/11/27(日) 16:54:47ID:???マニュアルぐらい読んでくれ。分からない単語はググりゃ知識が深まる。
ttp://www.php.net/manual/ja/intro-whatcando.php
ttp://www.php.net/manual/ja/install.general.php
0036nobodyさん
2005/11/27(日) 17:22:22ID:???・関数の戻り値をリファレンスで受け取りたい場合、
function &hoge() {
とするだけで良いのですか?受け取る時
$hage =& hoge();
もしなくてはいけないですか?
・SQLインジェクション対策に、入力値検査に加えて、MySQLならmysql_real_escape_stringし、%を\%にすれば、少しは大丈夫だと言えますか?
0037nobodyさん
2005/11/27(日) 17:57:13ID:???解決しました。
0038nobodyさん
2005/11/27(日) 18:03:33ID:???0039nobodyさん
2005/11/27(日) 18:04:13ID:???$a[1] = array('bbb', 10);
$a[2] = array('ccc', 5);
みたいな配列を、二番目の配列の要素で降順にソートしたいのですが、
そういう関数って用意されていますか?
sortあたりで調べたんですが見つからなかったので
誰かわかる人いたらお願いします。
ちなみに上の結果は
$a[0] = array('aaa', 10);
$a[1] = array('ccc', 5);
$a[2] = array('bbb', 0);
です。
0041nobodyさん
2005/11/27(日) 18:16:11ID:???こういうふうになるような関数を探しています
0042nobodyさん
2005/11/27(日) 18:20:37ID:???0043nobodyさん
2005/11/27(日) 18:25:19ID:???1つ目:
本当に意味を理解していて参照渡しにする必要があるなら両方に&をつけないとだめ。
ただし基本的には>>4の6。
PHPで参照が必要なのは2つ(またはそれ以上)の変数に対して、どの実体を指すかを連動して変更する場合のみ。
パフォーマンスを上げる目的で参照渡しにするのは大抵NGだろうね。
2つ目:
mysql_real_escape_stringしたらあとはクエリの中でシングルクォートでくくりさえすれば%はエスケープしなくてもいいよ。
LIKEにユーザーからの入力つっこむとか言い出すなら別かもしれないけど。
>>39
usort
0044nobodyさん
2005/11/27(日) 19:23:13ID:XoOSQ9gn>>16
array_pop($array);
0047nobodyさん
2005/11/28(月) 01:55:14ID:???と
array['0']
って、同じもの何でしょうか。
今まで違うものだと思ってたので
予想外の結果が出てとまどっています。
誰か知ってる人確認させてください。
だとしたら、ってことは
array[0]、array[1]、…
ってのも実は連想配列だったんですかね…
0048nobodyさん
2005/11/28(月) 02:07:56ID:???0049nobodyさん
2005/11/28(月) 02:25:52ID:???このスレではどれくらいの割合で、
「マニュアル読め」というレスがありますか?
0053nobodyさん
2005/11/28(月) 03:13:59ID:???前スレを対象にマニュアルでレスを絞り、
マニュアル嫁的なレスを数えてみたところ、18のレスがありました。
およそ2%ですね。ちなみにくだ質の前スレは20のマニュアル嫁的なレスがありました。
これからも頑張ってください^^
0054nobodyさん
2005/11/28(月) 04:04:34ID:???実際にはPHPには連想配列しかないと考えていいと思う。
マニュアルには
> 配列型は1つだ けで、整数または文字列のインデックスを使用することができます。
と表現されてるけど、実際にはインデックスには文字列しか使えないと言ったほうがベター。
PHPでは整数インデックスであってもハッシュ表を検索している。
つまり暗黙の型変換は'0'→0ではなく0→'0'の方向に行われる。
メモリ上のオフセットでアクセスする本物の整数インデックスと比べると計算理論上の計算量は等しいけど、実質的にはPHPで配列へのアクセスが大量にあると普段は高速なPHPもひどく速度落ちする。
ハッシュがらみ以外に余計な計算はしていないので、速度落ちの原因はそれ以外ないと思う。
「インデックスに整数も使える」と言っているのは、「Perlで言うハッシュしか使えない」という側面を隠蔽するためのPHP側の戦略。
ここに暗黙の型変換がうまい位置で役立っている。
まあ実用上は「整数も使える」とごまかしておいたほうがわかりやすいってのはあるけど。
0055nobodyさん
2005/11/28(月) 04:10:38ID:???0056nobodyさん
2005/11/28(月) 04:21:31ID:???PHPのハッシュは単純な見た目と操作感に反して、色々と工夫が面白い。
0057nobodyさん
2005/11/28(月) 04:33:09ID:???0059nobodyさん
2005/11/28(月) 04:54:44ID:a54yzRbD0061nobodyさん
2005/11/28(月) 04:57:41ID:???というかこいつレス読んでたんだなw
0062nobodyさん
2005/11/28(月) 06:31:41ID:???0063nobodyさん
2005/11/28(月) 06:38:05ID:???0064nobodyさん
2005/11/28(月) 07:47:10ID:???0066nobodyさん
2005/11/28(月) 11:36:21ID:ig9+vMm1function scan_directories($dir) {
$file_array = array();
if (is_dir($dir)) {
$dh = opendir($dir);
chdir($dir);
while (false !== ($filename = readdir($dh))) {
array_push($file_array, $filename);
}
closedir($dh);
foreach ($file_array as $file) {
if (is_dir($file) && !is_parent_or_current($file)) {
scan_directories($file);
} elseif (is_file($file)) {
//ファイルに関する処理
}
}
}
こういう関数を作ったんですが、ひとつのディレクトリを降りていくだけで、
ほかのディレクトリが無視されます。どうしたら全部のディレクトリとファイル
を見付けてくれるのでしょう?
006766
2005/11/28(月) 11:37:26ID:ig9+vMm10068nobodyさん
2005/11/28(月) 11:56:02ID:8B6mTUujまず、「is_parent_or_current」が何か教えてくれ(−−;
0069nobodyさん
2005/11/28(月) 12:06:34ID:y2JYG8tO$fileにディレクトリパスを含んでない
0070nobodyさん
2005/11/28(月) 12:18:27ID:???007266
2005/11/28(月) 13:42:01ID:ig9+vMm1ああ、すみません。指定ディレクトリが親ディレクトリか
カレントディレクトリの場合trueを返す関数です。
>>69
そのとおりでした。ありがとうございます。
とかいってまだ動いてないんですけどね。
回答くださってありがとうございました。
0075nobodyさん
2005/11/28(月) 14:39:51ID:???アホか。
・chdir一切せず、$fileには初期のカレントディレクトリから相対パス全体を保持
・chdirしながら$fileにはbasenameのみ保持、再帰呼び出し直後でchdir("..")
のどちらかだろ。
どーせ理解できてないんだろうがな。
0077nobodyさん
2005/11/28(月) 16:49:17ID:???Win2000Pro + Apache + (PostgreSQL or MySQL)
にて、LAN内のみにおいて、ブラウザベースでの簡易なデータベース操作(データ登録、削除、表示)を行いたいと思います。
当方、PHPはだいたい使え、SQLも問題ありません。(と思う)
ここで問題となるのが、ブラウザで表示した表の印刷に関してです。
通常テーブルタグにて適宜データを列挙するのがブラウザベースのやり方だと思いますが、
A3やA4縦などの所定の用紙に印刷するために、みなさんはどのような方法を取っていますか?
0078nobodyさん
2005/11/28(月) 17:08:50ID:???COMでね
0080nobodyさん
2005/11/28(月) 17:31:48ID:???まあPHPのPDF関数がどこまでできるのか知らんけど、PHP+SQLで普通のWebページ作るのに慣れてるんだったらCSSでなんとかするのも一つの方法ではないかと。
たしかCSSって元々は出版関係とかにも使えるような仕様だったと思うからそこそこ使える希ガス。
widthとかmarginとかはパーセントでもセンチでも指定できるし、page-break-*とか組み合わせればけっこういけると思う。
スレ違いだけど。
0081nobodyさん
2005/11/28(月) 17:36:42ID:???http://msugai.fc2web.com/web/CSS/media.html
0082nobodyさん
2005/11/28(月) 17:42:21ID:???その辺りのコスト考えるとCSSの方が手っ取り早いと思う。
無償のPDFライブラリがあるなら是非俺も知りたい。
■ このスレッドは過去ログ倉庫に格納されています