トップページ⇒php
1001コメント314KB

【PHP】下らねぇ質問はID出して書き込みやがれ 130

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/09/19(木) 13:47:19.93ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 129
http://kohada.2ch.net/test/read.cgi/php/1375636484/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2013/09/19(木) 13:48:11.61ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0003nobodyさん2013/09/19(木) 13:49:03.75ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
0004nobodyさん2013/09/19(木) 13:49:37.90ID:???
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0005nobodyさん2013/09/19(木) 13:52:09.42ID:???
クソスレたててんじゃねえぞカス
0006nobodyさん2013/09/19(木) 14:01:07.22ID:???
張り付きご苦労
0007nobodyさん2013/09/19(木) 16:13:15.30ID:???
>>1乙
0008nobodyさん2013/09/19(木) 19:28:24.70ID:???
>>1-5テンプレ乙!
0009nobodyさん2013/09/21(土) 00:44:01.48ID:5RWdbWx6
PHPって標準でテンプレートが実装されてるような言語ってことでよろしいですか?
Smartyとかをあえて使うのはキャッシュ機能がついてるからですか?
0010nobodyさん2013/09/21(土) 13:49:08.29ID:???
まぁそんなところだ
で、Smartyの記述に慣れたらFWのビューもSmarty組み込んだ方がやりやすくなる
0011nobodyさん2013/09/22(日) 02:36:13.88ID:F9ba36Xj
まず外部サイトAの情報を取得して表示するというPHPスクリプト(a.php)を作りました。
その内容を自分のサイト上のページsite.phpで出力させるため、
include("a.php");

と記述をし、成功したのですが、外部サイトAが重いせいかa.phpの処理も重く、
出力先のsite.php全体の表示までもが遅くなってしまいました。
これを解消するために、a.phpの処理が終わっていなくてもsite.phpの全体の表示は行うということを
したいのですが可能でしょうか?
(a.phpの内容は処理が終わり次第表示)
方法がありましたら教えて頂けると助かります。
宜しくお願いします。
0012nobodyさん2013/09/22(日) 02:51:58.87ID:???
ソース取得にfile_get_contentsあたり使ってるんだろうけど、
サイトが重いっていうかDNS引くのに時間がかかってるだけじゃね?
キャッシュがきくcURL使えば早くなるんじゃね?

ところで外部サイトAとやらは自分のサイトなのか?
もしそうなら別にいいけれど、他人のサイトなら毎度アクセスする仕組みが迷惑かけてるから、
そのへん考えなさいよ。
0013nobodyさん2013/09/22(日) 03:23:08.45ID:???
世の中
重いサイトだらけさ
0014nobodyさん2013/09/22(日) 11:52:26.10ID:???
>>11
jsのwindow.loadでページ読込後にAjaxでa.phpを表示。
0015nobodyさん2013/09/23(月) 01:03:45.45ID:NHrSno6h
DBの管理クラスの構成で悩んでいます。
接続クラスはシングルトンみたいなクラスで接続オーバーヘッドを抑えます

何をするかによるかもしれませんが、基本的なDB管理クラスを用意したいのですが
どのようなクラス分けメソッドを用意したらよろしいでしょうか?

●接続クラス
−−DB接続切断+getInstance+クエリ発行+レコードカウントなど基本操作を含んだシングルトン
●基本テーブル操作クラス
−−テーブル毎にinsert,update,replace,delete,getbykeyをメソッドとして提供
●テーブル毎のレコードデータ保持クラス
●役割別別DBアクセスクラス
−−各役割・使用テーブルなどでのクラス分け、少し複雑なSQL・扱いやすい返り値を抱えたようなメソッド群

なんかとりあえず暫定的にこんな感じで考えてみたのですがいかがでしょ?なんだか抽象的な質問ですいません
0016nobodyさん2013/09/23(月) 03:24:06.77ID:???
四角い車輪の再発明
0017nobodyさん2013/09/23(月) 03:46:04.36ID:???
俺も昔は>>15のようなことしようと思ったな
作ってるうちにアレ?って思えてくるからとりあえず作ってみるといいよ
0018nobodyさん2013/09/23(月) 09:27:00.46ID:???
勉強になるしね
0019nobodyさん2013/09/23(月) 15:03:23.36ID:NHrSno6h
>>16-17 たしかに。
あれっとは思ってるのですがそれをどう解決したらいいやら分かってないです。

役割別クラスでは、DBインスタンス受け渡せばいいの?シングルトンだしgetInstanceでその場で読み込めばいいけどグローバル的だなとか
シングルトンの継承していろいろくっつけていけばいいのか?とか
テーブル基本操作クラスと役割的クラスが一緒な部分で使われていたり
DB接続なんてさほどのオーバーヘッドでもないとか
別テーブルでもキャッシュ書き込みなんかは使うタイミング一緒だしまとめちゃったほうがいいよなぁ、テーブル毎にまとめちゃうといらん読み込み部分までくっついちゃうしなぁ

とかいろいろ
DB管理クラスの構成次第で書くプログラム変わりそうだし一般的なこういうDBアクセス管理クラスの構成のノウハウないときついなぁとか思いつつテストプログラム書きます。
ありがとうです
0020nobodyさん2013/09/23(月) 16:09:46.66ID:DrMJ5+oU
PHPとMySQLでSNSを作りたいんだけど、どんな感じで作ればいいの?
一応PHPとMySQLの文法はある程度分かるんだけど、ググってもよく分からないし・・・
0021nobodyさん2013/09/23(月) 16:12:28.78ID:dZodeQtn
Mantis の mantis_logo.gif (Webから丸見えのロゴ?) と
mantis_logo_button.gif (ログイン後のロゴ?) って統合されちゃったんでしょうか?

Webから丸見えのロゴはデフォルト、
ログイン後は好きなものと使い分けたいです。
できれば、プロジェクトごとに変えられると最高です。

自力で Mantis を突っ込んだり、コピペレベルならスクリプトも弄れますので、
一番簡単な方法を教えてください。
0022nobodyさん2013/09/23(月) 16:12:53.03ID:???
一体どういう答えを期待してるんだ?
君は一度自分の質問を客観的に見た方がいい
0023nobodyさん2013/09/23(月) 16:14:21.95ID:???
まずどういうSNSを作りたいかを明確にすること
それ抜きには始まらない
0024nobodyさん2013/09/23(月) 17:52:03.37ID:nnsfkO3J
a.phpで作成したファイルAに対して、b.phpでファイルAの内容を読み込んで〜
というような処理をしているのですが、ファイルAは10秒置きに変化するため、
ファイルIOが気になるので、ファイルAを作成するのではなく、
ファイルAの中身をメモリに置こうと思いました。
a.phpでfopenしたphp://memoryにfwriteでファイルAの内容を置いたのですが、
b.phpでphp://memoryをfopenしてfreadしても何も出力されません。
おそらくa.phpでfopenしたphp://memoryと、b.phpでfopenしたphp://memoryは、
別のアドレスということだと思うのですが、このへんをうまく解決することはできないでしょうか?

共有メモリのshmop関数も有効にして試してみたのですが、こちらはちゃんとa.phpで書き込んだ内容を、
b.phpで読み込むことはできたのですが、ファイルAのサイズが可変で、
共有メモリの確保したサイズを取得する関数chmop_sizeはあるのですが、
置いた内容のサイズまでは取得できないため、
十分に大きくとって読み込んでいるのですが、ゴミのような物がついてきて思った通りにいきませんでした。

動作想定環境はWindowsXP以降です。
よろしくお願いします。
0025nobodyさん2013/09/23(月) 18:23:51.98ID:???
>>24
a.phpの実行者と実行頻度、b.phpの実行者と実行頻度は?
0026nobodyさん2013/09/23(月) 18:29:14.65ID:???
>>24
サイズが分からなければサイズを記録する共有メモリを用意したらいいじゃない
それよりAPCとかMemcachedみたいなKVSを使った方がいいと思うが
0027242013/09/23(月) 19:07:55.10ID:nnsfkO3J
>>25
a.phpはバックグラウンドで常に動作しています。
b.phpはweb経由で外からアクセスするために使います。
公開するわけじゃない自分専用で使う予定です。
アクセス頻度は結構高いと思います。

>>26
>サイズが分からなければサイズを記録する共有メモリを用意したらいいじゃない
なるほど!思いつきもしませんでした。
memcachedやapcも存在を忘れていました。
ズバリな回答ありがとうございます。
0028nobodyさん2013/09/23(月) 19:13:29.21ID:???
プロセス間でデータ(ファイル)を共有する場合、個人的にDBにつっこんじゃう場合が多い。
0029nobodyさん2013/09/23(月) 23:10:41.91ID:???
marry_me() or die()
0030nobodyさん2013/09/23(月) 23:40:00.10ID:NHrSno6h
require_once("insert.tnp")
0031nobodyさん2013/09/24(火) 00:05:22.25ID:???
ぬるぽ
0032112013/09/24(火) 01:22:48.25ID:???
>>12
cURL…初めて聞く言葉です。そんなものがあるのですね。
ご提案ありがとうございます。
外部サイトAは自分のサイトですので問題はありません。

>>14
ありがとうございます!
Ajaxとはなんぞや…な知識不足の状態なので、調べるところから頑張ります。
0033212013/09/24(火) 12:32:25.47ID:Idd24tnm
>>22
説明下手で申し訳ないです。

Mantis という PHP で動く BTS をレンタルサーバにインスコしたんですが、
ちょっとロゴをカスタマイズしたいと思ったんです。
具体的には、ログイン前に見えるロゴは Mantis デフォのもの、
ログイン後に見えるロゴは自分らで用意した画像にしたく。
(出来れば、プロジェクトごとに変えたい)

ロゴの画像は mantis_logo.gif なのですが、
mantis_logo.gif をそのまま別の画像に差し替えると、
ログインしてない時に表示するロゴまで変わってしまうので
(同じ画像を読みに行っている)処理を分岐するなりして、
簡単に表示を分けることはできないかと。
でも、どこを弄ればいいのか、どう弄ればいいのか解らず。


…あー、やっぱ説明しきれない。
だめか。
俺はだめなのか。
お兄様方の中にエスパーは居ませんか。くぅー。
0034nobodyさん2013/09/24(火) 13:00:57.16ID:???
ビューでユーザー別のセッションidで切り替える
セッションの知識があればできるけど、コピペでは対応出来ないと思われる
0035212013/09/24(火) 20:58:09.35ID:???
>>34
コピペじゃダメでしたか、、、
それなら諦めまする、、、

(´・ω・`) ありがとうございました
0036nobodyさん2013/09/24(火) 21:15:41.29ID:???
PHPから少し脱線しますがお許し下さい
webアプリケーションを作る際ディレクトリは細かく分けたほうがいいのでしょうか?
例えばgithubを例に上げると、トップページはhttps://github.com/
設定ページはhttps://github.com/settings/profile のような感じです。
また、これらのディレクトリ分けは実際にフォルダを作って分けているのでしょうか?
それともフレームワークを使ったらこういうことができるのでしょうか?
0037nobodyさん2013/09/24(火) 23:25:36.46ID:???
>>1
0038nobodyさん2013/09/25(水) 00:15:31.54ID:???
>>36
フォルダごとなんてやりませんよ
githubはフレームワークで作られてる
基本的にWebサービスはフレームワークで作るものだと思ったほうが良いよ
0039nobodyさん2013/09/25(水) 01:28:41.82ID:???
>>38
やはりそうでしたか。
ありがとうございます
0040nobodyさん2013/09/25(水) 04:09:39.18ID:???
>>38
>>1
0041nobodyさん2013/09/25(水) 09:51:50.25ID:iPFtUNqa
dataの中身は↓のような感じになってます。
都道府県「埼玉」×▼×●市町村「川越」
都道府県「東京」▼×☆★市町村「立川」
都道府県「大阪」※□▼×市町村「高槻」
都道府県「福岡」□▼×※市町村「福岡」

最終的には
埼玉=川越
東京=立川
大阪=高槻
福岡=福岡

のようにしたいのですが、どのようにしたらよいでしょうか?

preg_match_all("/都道府県「(.*?)」/",$data,$match);
preg_match_all("/市町村「(.*?)」/",$data,$match2);

とやり、中身は取れるようになったのですが、ここから先をどうやったらよいのか分かりません
0042nobodyさん2013/09/25(水) 09:56:56.81ID:???
ループ文でも覚えてきてください
0043nobodyさん2013/09/25(水) 10:15:12.13ID:???
連想配列使え
0044nobodyさん2013/09/25(水) 10:17:50.44ID:???
ヒント
正規表現は「(.*?)」に対して1回だけでいい
データ通りなら都道府県は偶数(配列のindexが0からなので)で市町村は奇数になる
ループは2個飛ばし$i+=2で回してechoで$iと$i+1を出力する
0045nobodyさん2013/09/25(水) 10:19:27.47ID:???
案外
echo preg_replace("/都道府県「(.*?)」.*市町村「(.*?)」/" ,"$1=$2",$data);
で済んじゃったりして
0046nobodyさん2013/09/25(水) 10:31:27.59ID:???
>>44
どこに偶数奇数のデータがあんだよ
文盲は答えるな
0047nobodyさん2013/09/25(水) 10:54:53.76ID:???
>>46
質問した本人か?このスレにいるやつならわかる話だと思うが?
0048nobodyさん2013/09/25(水) 10:57:59.11ID:???
都道府県「埼玉」×▼×●市町村「川越」
都道府県「東京」▼×☆★市町村「立川」
都道府県「大阪」※□▼×市町村「高槻」
都道府県「福岡」□▼×※市町村「福岡」

はいどこに改行が含まれているか
0049nobodyさん2013/09/25(水) 10:58:52.78ID:???
>このスレにいるやつならわかる話だと思うが?

俺の考えは皆も思ってるような書き方乙
0050nobodyさん2013/09/25(水) 11:01:54.58ID:???
いや俺は>>44じゃないんだけど

$data = <<<EOF
都道府県「埼玉」×▼×●市町村「川越」
都道府県「東京」▼×☆★市町村「立川」
都道府県「大阪」※□▼×市町村「高槻」
都道府県「福岡」□▼×※市町村「福岡」
EOF;
preg_match_all('/「(.*?)」/', $data, $match);
print_r($match[1]);

こういうことでしょ
0051nobodyさん2013/09/25(水) 11:06:25.98ID:???
パターンに全角を直接含ませるのはやめてほしい
0052nobodyさん2013/09/25(水) 11:10:47.79ID:???
煽って答えを聞き出そうとする質問者wwwww
0053nobodyさん2013/09/25(水) 11:23:52.91ID:???
>>51
っ[パターン修飾子]
0054nobodyさん2013/09/25(水) 11:54:16.97ID:???
パターン修飾子の話してない
0055nobodyさん2013/09/25(水) 12:01:03.34ID:???
つまり日本語のマッチはするなということか
0056nobodyさん2013/09/25(水) 12:06:35.97ID:RWLVwNAE
$s = "uge[100]fjd[200]
deg[300]egh[400]";
preg_match_all("/\[(\d+?)\].+?\[(\d+?)\]/", $s, $m);
var_dump($m);

このコードは全体にマッチしたのも含まれるので
以下の配列になるようにpreg_match_allを修正してください
array(2) {
[0] =>
array(2) {
[0] =>
string(3) "100"
[1] =>
string(3) "200"
}
[1] =>
array(2) {
[0] =>
string(3) "300"
[1] =>
string(3) "400"
}
}
0057nobodyさん2013/09/25(水) 12:09:38.33ID:???
質問スレであって問題スレではございません
0058nobodyさん2013/09/25(水) 12:11:37.79ID:???
>全体にマッチしたのも含まれる
そういう仕様だし
0059nobodyさん2013/09/25(水) 12:39:36.89ID:RWLVwNAE
たしかできたはずなんですよ
0060nobodyさん2013/09/25(水) 13:10:20.56ID:iPFtUNqa
結局>>50の方法にすることにしました
ありがとうございました
0061nobodyさん2013/09/25(水) 15:47:50.99ID:UuXeqm+U
>>23
とりあえず、Facebookの会員登録とつぶやき機能だけを作るって感じかな
作らなきゃいけないphpファイルと、何を書けばいいのかだけでも教えてもらえると助かる
0062nobodyさん2013/09/25(水) 15:53:03.06ID:???
>>61
君には無理
0063nobodyさん2013/09/25(水) 15:56:17.04ID:???
オープンソースのSNSもあるし見てみたら
基本的にはRDBMS使いこなせないと設計から躓くと思うよ。
0064nobodyさん2013/09/25(水) 16:31:49.87ID:???
>>63
それ見てわかるレベルだと思うか?
0065nobodyさん2013/09/25(水) 16:56:02.15ID:???
それは別に聞いてない
0066nobodyさん2013/09/25(水) 17:32:33.19ID:???
>>61
当該の機能を模倣したそれぞれのモデル、ビュー、コントローラだよ。
これでわからなければ、諦めて1から勉強すれ。
■ このスレッドは過去ログ倉庫に格納されています