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

【PHP】下らねぇ質問はここに書き込みやがれ 43

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/04/01(日) 04:21:50ID:VGqlLhlD
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、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
0002nobodyさん2007/04/01(日) 04:23:02ID:VGqlLhlD
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
【PHP】下らねぇ質問はここに書き込みやがれ 31
http://pc8.2ch.net/test/read.cgi/php/1161733546/
【PHP】下らねぇ質問はここに書き込みやがれ 32
http://pc8.2ch.net/test/read.cgi/php/1162818436/
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
【PHP】下らねぇ質問はここに書き込みやがれ 34
http://pc8.2ch.net/test/read.cgi/php/1165519374/
【PHP】下らねぇ質問はここに書き込みやがれ 35
http://pc10.2ch.net/test/read.cgi/php/1166676139/
【PHP】下らねぇ質問はここに書き込みやがれ 36
http://pc10.2ch.net/test/read.cgi/php/1168395610/
【PHP】下らねぇ質問はここに書き込みやがれ 37
http://pc10.2ch.net/test/read.cgi/php/1169644229/
【PHP】下らねぇ質問はここに書き込みやがれ 38
http://pc10.2ch.net/test/read.cgi/php/1170520777/
【PHP】下らねぇ質問はここに書き込みやがれ 39
http://pc10.2ch.net/test/read.cgi/php/1171280039/
【PHP】下らねぇ質問はここに書き込みやがれ 40
http://pc11.2ch.net/test/read.cgi/php/1172151461/
0003nobodyさん2007/04/01(日) 04:24:32ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 42
http://pc11.2ch.net/test/read.cgi/php/1174217841/
0004nobodyさん2007/04/01(日) 04:25:03ID:???
関連リンク
■本家マニュアル   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://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0005nobodyさん2007/04/01(日) 04:25:36ID:???
【簡易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プログラムとして実行された結果になる。
0006nobodyさん2007/04/01(日) 04:26:38ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
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に保存?
 → 好きにしてください
0007nobodyさん2007/04/01(日) 04:27:09ID:???
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/
0008nobodyさん2007/04/01(日) 04:32:07ID:???
    ゝ f/:.:r|      .:.:|)
    {.|{/:.:.:{〈:.:...   .:.:.:.:.l)             , ‐ ' "´ ̄ ̄ ̄ 丶、
    z|j:.:.:.:.ヒ|       |)         ,  '´ _r─'´ ̄`ー-、_    ヽ
    仁\:.:(| . . :.:.:.:.. .  |}- 、    r‐ ''"  ノ´ ※    ※   ヽ   丶
       ヾ'´  ̄  ̄ ヾ)  `ヽ  | ..::::-┴´ ̄` ̄` ̄`ー、_   `ヽ  ヽ
        (ハ   ___  ヾ)  ヾヽY'´   : : : : : : : : ヽ ※ ヽ  '、
     /   (ハ/    `ヽ、」)   l∧ /   /    : : : : l : :ゝ、  l.   ',
       ヽ      '、   l    } }/: : /:   / :/ : l : : ヽ ※ヽ  ',
        丶      '、  l  l  ノノl: : /: : /: : /: /: ハ :  : :ヽ  {    '、
          丶、    ヽノ_ j/ {: l!: :⊥、/: : /.:/. /|: : .l   ヽソ    ハ
       ,..  -─‐`──-ヽヽ__ l: |l: :l :トリ_`ー':^/: {、  ヽ: : : | : : |_,..ィ'´ ̄
     "´            `} ̄〕人:弋 じぇ、"´   、 `丶、_ヽ.:l: /: : l|:. |
            ___   /辷 ム `ト `"'゙      '^ぅテォ-テ/./: /: /l.:..:.|
     二三 ̄ ̄___ >ン三7 ∧ 八     ,    ヾジ /.イ: :/. /: .l : |  下らねぇ質問は
     : . : .          ̄ノ≡=ァ こ}※ \__ トー‐、  __ ノ_ .イ//_:_:_l..|  ここに書き込みやがれですぅ
     ニニニニヽ、____/ ´フ  匸l/⌒ 、 )ヽ___ノ _ .. イ ̄※ ノ厂兀l.|
     \:. _:_:_:フ、_    //  て/  ´  ヽ`三/ ┴、 /    ノし  }: : l|
     : . : . : .    ト、\ /::/    (_{     }{"´  ヽ |〃_. イJ´   l: : : |
        : . : . : ..| ヽ Y::/    /(\ _ ノ)ヽ___、._丿「 /勹     l: : : :|
             ヽ| |{ /三\ /  ヽ几_厂|/し、__兀r '"  ヽ   | : . : |
0009nobodyさん2007/04/01(日) 04:56:25ID:???
>>1
echo "乙";
0010nobodyさん2007/04/01(日) 05:59:05ID:???
10get
0011nobodyさん2007/04/01(日) 06:21:07ID:???
てst
001212007/04/01(日) 06:22:21ID:VGqlLhlD
スレ立て終わって元スレに連絡しようと思ったら何故かアク禁に巻き込まれた

それはそうと41のURLを書き込めてないな・・・歯抜けテンプレ乙
0013nobodyさん2007/04/01(日) 08:47:53ID:???
sage
0014nobodyさん2007/04/01(日) 08:58:28ID:???
元々過去ログでどんどん長くなっていったから、
最新の5件ぐらいだけのせようって話だったはずなんだが、
やっぱ自然と伸びちゃうよなw
0015nobodyさん2007/04/01(日) 09:55:39ID:???
正規表現の書き方がいまいちわかりません
「(07/4/01 09:05:48)」という文字列があったとして
4/01にマッチさせるにはどうすればよいでしょ?
[0-9]+/[0-9]+とすると07/4が引っかかってしまいます
0016nobodyさん2007/04/01(日) 10:57:05ID:???
$str = '07/4/01 09:05:48';
if (preg_match('/([0-9]{1,})\/([0-9]{2})/', $str, $match)) {
print_r($match);
}
0017nobodyさん2007/04/01(日) 11:05:32ID:???
>>16
レスどうもです
詳しく書き忘れました形式は年/月/日なんですが月/日がほしいんです
月は10月とかの場合
07/10/01になっちゃうのでやっぱり07/10が引っかかっちゃいます
0018nobodyさん2007/04/01(日) 11:12:23ID:???
[0-9]+\/[0-9]+\/[0-9]+\/
3つスラッシュを書けばいいだけじゃないのか
0019nobodyさん2007/04/01(日) 11:14:34ID:???
ああすまん
[0-9]+\/[0-9]+\/[0-9]+
2つスラッシュのまちがいだw

[0-9]+\/[0-9]+\/[0-9]+ [0-9]+
でいいだろう
0020nobodyさん2007/04/01(日) 11:14:53ID:sjAh9xV+
朝起きたら何かApacheが強制終了してる・・・
0021nobodyさん2007/04/01(日) 11:26:12ID:???
>>18-19
レスどうもです
年/月/日から月/日だけを取り出したいので
3つともマッチさせちゃうとマズイんです
0022nobodyさん2007/04/01(日) 11:26:51ID:???
>>15

preg_match("/^\(\d{1,2}\/(\d{1,2}\/\d{1,2}).+$/", $date, $match);
echo $match[1];
0023nobodyさん2007/04/01(日) 11:29:58ID:???
いみがワカラン
3つマッチしてうしろの二つをpreg_replaceで$2$3で取り出せばいいだけでしょ。
preg_match使う必要も無い。
0024nobodyさん2007/04/01(日) 11:49:49ID:???
前スレで7についていろいろ書かれていたことを無視した>>1
0025nobodyさん2007/04/01(日) 12:04:35ID:???
>>22-23
うまくできました
ありがとうございます
$2$3とか使えるんですね知りませんでした
0026nobodyさん2007/04/01(日) 12:19:31ID:sjAh9xV+
ファイルアップロードして、データベースに保存できるってきいたんだけどマジ?
0027nobodyさん2007/04/01(日) 12:33:51ID:???
できるけど普通に重い
0028nobodyさん2007/04/01(日) 13:00:22ID:???
>>14
俺が立てるときはちゃんと古いの削ってるよ。
手抜きしなきゃいいだけ。
0029nobodyさん2007/04/01(日) 14:00:32ID:???
>>24
じゃあテンプレに反映できるようにお前が7を書き換えろよ。
文句だけなら幾らでも言える。
0030nobodyさん2007/04/01(日) 17:40:44ID:f8tvvBL3
PHPで携帯用のサイトを作っています。

PC用では各パーツ(ヘッダー・フッター・メインコンテンツなど)に分けて
includeしていましたが、携帯用だと容量の制限もあって、必要最小限の
ファイルしか読み込まないようにしなければいけないみたいです。

そこで質問ですが、プログラム処理もすべて1つのファイルに書く方法
にした方が良いのでしょうか?それとも共通するファイルはincludeして
読み込む方式にした方が良いのでしょうか?

PHPで携帯サイトを作られている方、アドバイスお願いします。
0031nobodyさん2007/04/01(日) 17:52:42ID:???
>いけないみたいです
×
0032nobodyさん2007/04/01(日) 17:52:48ID:PifCmp3g
ADODBをつかっています。
Connect もしくは PConnect でデータベースへの接続に失敗したとき、
失敗した理由を知るために何らかの方法は用意されているのでしょうか?
たとえばエラーメッセージとかエラーコードを得る方法はあるのでしょうか?
0033nobodyさん2007/04/01(日) 18:03:32ID:???
標準関数にADODB関数なんてないんだけど
0034nobodyさん2007/04/01(日) 18:11:40ID:???
>>30
100個ファイルをincludeしようが、
全部一つに詰め込んで1GBぐらいのファイルになろうが、
要は出力する容量が携帯で読み込める容量になればいいだけ
お好きなようにとか言いようがない

共通部分を切り出そうが、関数に切り分けようが、
クラスファイル化してオブジェクト指向しようが、
それもお好きなように
0035nobodyさん2007/04/01(日) 18:58:07ID:???
>>30
携帯用だろうがなんだろうが、全く関係ない
携帯用に小さくする必要があるのは
スクリプトではなく、出力する部分だけだ
0036nobodyさん2007/04/01(日) 19:01:08ID:???
>>32
http://phplens.com/lens/adodb/docs-adodb.htm#errormsg
0037nobodyさん2007/04/01(日) 19:09:16ID:PifCmp3g
>>36 THX
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (11)
か・・・・うむむ、結局 MySQL 側の max_connections に引っかかってるのかな。

PHP 側では自主規制(?)で接続数に上限設けてるとか無いですよね?
0038nobodyさん2007/04/01(日) 19:14:16ID:???
mysqldはちゃんと立ち上がってるのか?
0039nobodyさん2007/04/01(日) 19:23:54ID:???
pdoでSET NAMESを送る時ってexecとqueryのどちらを使っていますか?
0040302007/04/01(日) 19:25:53ID:f8tvvBL3
>>34-35
ありがとうございます。大変参考になりました。

それにしても携帯用ってややこしいですね・・。
これまで作ったクラスファイルはすべてEUCなのですが、
携帯ではShift-JISじゃないと駄目みたいなので、文字化けしまくりです・・。
0041nobodyさん2007/04/01(日) 19:42:24ID:???
出力時にSJISに変換すればいいだけだろ
0042nobodyさん2007/04/01(日) 20:37:16ID:???
ぐぐってもよくわからなかったのですが、セッションIDって
ランダムの文字列を生成するのですよね?
その文字列を保持してsession_start();で有効にするとか。
0043nobodyさん2007/04/01(日) 20:46:11ID:???
>>42
お前も「初めてPHP入門」みたいな本かって半年勉強しろ
0044nobodyさん2007/04/01(日) 20:48:46ID:???
>>前スレ996
PHP5からタイプヒンティングが導入されました
http://www.php.net/manual/ja/language.oop5.typehinting.php

>>30
【モバイル】携帯電話向け開発について語るスレ
http://pc11.2ch.net/test/read.cgi/php/1144504375/

>>42
【PHP】セッションについて語ろう!【PHP】
http://pc11.2ch.net/test/read.cgi/php/1064399467/
0045nobodyさん2007/04/01(日) 22:25:03ID:???
>>37
1.MySQLが立ち上がっているか
2.socket が /var/lib/mysql/mysql.sock に存在するか
3.MySQLへのアクセス許可がちゃんと行われているか

2は注意
パッケージ管理ソフトとかでインストールした場合は
普通起こらないが、ソースリビルドして自分でインストール
した場合は、PHPとMySQLのソケット設定が一致しない
ことがある
0046nobodyさん2007/04/01(日) 22:50:44ID:GJ1EFI8C
毎年恒例、年に一度のphpinfo()のPHPロゴがウサギやオサーンや犬の画像に変化する日が来ました
おまいら今日中にphpinfo()表示するサイト(自分のでも可)見てみれ

ちなみにphp.netの↓
ttp://jp.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
ttp://www.php.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
0047nobodyさん2007/04/01(日) 23:11:30ID:sjAh9xV+
携帯でキャリア別にページを飛ばしたいのですが、
やはりブラウザで判別したほうが良いのでしょうか?
それ以外にお勧めがあれば教えてください。
0048nobodyさん2007/04/01(日) 23:15:07ID:???
>>47
>>44
0049nobodyさん2007/04/02(月) 00:34:19ID:7Cj9Qr8c
数百数千というデータを一覧表示させる場合テーブルを作ってループさせるしか方法は無いでしょうか?
datagridみたいなものはPHPだとひょっとして無い?
0050nobodyさん2007/04/02(月) 00:37:32ID:616HGYvF
現在から一週間先までのスケジュールをMySQLから取得して表示するプログラムを書きたいと思っています.
で,年や月のつなぎ目でも単に7日間表示するので,大本の日付データは年月依存でなくするべきですよね.
そうするとUNIX時間を使うのが最も適当なのでしょうか?

また,月は初めの日だけ表示して,年・月が変わった日だけ再表示したいのですが,
毎回ifで判断するのはアレですよね.何かいい方法があればご教授くださいm(__)m
0051nobodyさん2007/04/02(月) 00:48:34ID:???
>>49
階層があるのかどうかハッキリしなさい!
なんにしろDataGridみないなのはPHPにはない。
というか.NET系言語にしかないだろ

>>50
言いたいことが今一俺には理解できない。
やりなおし!
0052492007/04/02(月) 01:00:20ID:???
無いならしょうがないですね・・・
SELECT文とGETを駆使してなんちゃってGridを作ってみます
0053nobodyさん2007/04/02(月) 01:27:49ID:???
>>52
階層掘るときにajaxで通信させたらそれっぽくなるんじゃない?
0054nobodyさん2007/04/02(月) 01:36:36ID:???
>>49
そもそもHTMLをターゲットにするなら、最終的にはhtmlか画像しか選択肢は無いだろう・・
受け渡しならXMLとかあるだろうけど

俺言ってること的外れ?
0055nobodyさん2007/04/02(月) 02:35:51ID:???
最高に行き詰りました。どなたかアドバイス願います。
ファイルを二つ用意します。一つは設定ファイルset.php、一つは表示用のファイルindex.phpです。
index.phpを以下のように記述します。

require 'set.php';
$test "あああ";
Set();

set.phpに以下の用に記述します。

function Set(){
global $test;
$test2 = "あああ";
if($test == "$test2"){print"同じ";}
else{print"違う";}
}

で「違う」になってしまいます。
print分で確認すると
print"$test$test2";
どっちも「あああ」「あああ」です。
ダンプで見ても同じです。文字コードとかもいろいろ弄りましたが、変わりませんでした。
見た目同じなのに判定は違うのでmysqlで検索にヒットしなくて困ってしまっています。
どなたかわかる方いますでしょうか?
php4.3.11 apache2 を使っています。

0056nobodyさん2007/04/02(月) 02:50:03ID:???
>>55
正確なコードと結果の転載ぐらいしろよ。
0057nobodyさん2007/04/02(月) 02:54:33ID:???
$test = "あああ";
0058nobodyさん2007/04/02(月) 03:25:04ID:???
>56
すんません。おおぼけかましてますた。
やっぱり文字コードでした。ftpでDLした時に全部sjisに変わってた模様です。
どもでした。
0059nobodyさん2007/04/02(月) 03:57:04ID:???
       ヽ(・ω・)/   ズコー
      \(.\ ノ
0060nobodyさん2007/04/02(月) 05:33:18ID:????2BP(396)
下記記述だとテキストログ末尾にログが追加されていくんですが
先頭に最新ログを記述する方法はないでしょうか?

$wlog=fopen("comment.txt","a");
flock($wlog, LOCK_EX);
fputs($wlog, $wdata);//$commentlogの最初の行に$dataを追加
flock ($wlog, LOCK_UN); //ファイルロック解除
fclose($wlog);//ファイルを閉じる
0061nobodyさん2007/04/02(月) 05:33:58ID:????2BP(396)
//$commentlogの最初の行に$dataを追加
このコメントはただのミスです。
0062nobodyさん2007/04/02(月) 05:42:27ID:???
>>60
ttp://www.php.net/manual/ja/function.fopen.php
0063nobodyさん2007/04/02(月) 06:39:09ID:????2BP(396)
>>62
無理なようですね・・・・・・ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています