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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/09(土) 14:51:11ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0002nobodyさん2008/02/09(土) 14:52:07ID:???
【簡易FAQ】 (1/3)
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)、起動&再起動あたり
0003nobodyさん2008/02/09(土) 14:52:19ID:???
【簡易FAQ】 (2/3)
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.を参照
0004nobodyさん2008/02/09(土) 14:52:34ID:???
【簡易FAQ】 (3/3)
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0005nobodyさん2008/02/09(土) 14:52:52ID:???
関連リンク
■本家マニュアル   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/
0006nobodyさん2008/02/09(土) 14:53:56ID:???
■過去ログ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/
【PHP】下らねぇ質問はここに書き込みやがれ 62
http://pc11.2ch.net/test/read.cgi/php/1199956159/
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1198002831/
【PHP】下らねぇ質問はここに書き込みやがれ 60
http://pc11.2ch.net/test/read.cgi/php/1196511516/
【PHP】下らねぇ質問はここに書き込みやがれ 59
http://pc11.2ch.net/test/read.cgi/php/1195204145/
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
【PHP】下らねぇ質問はここに書き込みやがれ 56
http://pc11.2ch.net/test/read.cgi/php/1192092941/
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
0007nobodyさん2008/02/09(土) 23:19:21ID:???
                     ,   ─=、─-=ニL」_
                    /二ニ=‐-=ニ、\    ,>
                  ,ムイ/  .}、    ヽ. ヽ  ァ′  _人_人_人_人_人_人_
                 /   /    ノ,ト、 ,ィ ,ハ. ∨ト、   )
 (\ __           ∧  ;'  ,ノlノj,ィ込ァ`! ,), V \  ) 下らねぇ質問は
. ,f\孑=ァ),__          | ! i,ァ示. ノ'ノ ゞr'リ リ   ! |    \)
〈ヾ、ム,. 》 :|| \        |!、ト、ト弋リ 、      l  ,ノ※     )  ここに書き込みやがれ!
. `ー'─(,ムイ'   \    ,. -'‐ \\   ア`ヽ _ムイi   !      )
     \     `  7マ'7   | ヽ.≧ ゝ._ノ ,: ィ´|.※ |     )    ですぅ!
.        `  ,     i ,ハ}   |.※ | >x、. イ  ! i|.   !     )
          `7ぇxl/  ,    !  i  《 ,≫vヘ.)、i),  !     ⌒Y⌒Y⌒Y⌒Y⌒Y
          /  /    |_ i.※ i.  《|{,//iヘ.∨), ∨   ,r- 、
            /  /     ! )`i   !,  《!_/i |《ヘ.∨), ∨ ,Xヘ. }
        /  ム._.  !/ .|.※ |ヘ.  《  i | 《.ヘ.∨ヘ,.マ^ヽヽノ
        ‘ーx,     i  !  |.   | ',. 《.  ! i 《. | |  メ.}i;xr≦
           ∨  ヽ. |   |.※ |  ∨《  Li  《 L! :|. |    |
            \.  ∨   |.   |  〈 》〜〜〜''〜 | i    !
             \/   .!.※ ! ,/」Lニ=- |!>X<| :| i    !
             //     ¨¨¨’ >厂    K  >' :| |、 ,ノ
0008nobodyさん2008/02/09(土) 23:42:21ID:???
>>1 死ね。テンプレ変えるしろくでないやつ >>1 が立てちゃったんだな

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0009nobodyさん2008/02/09(土) 23:43:59ID:???
建て直すか?
0010nobodyさん2008/02/09(土) 23:56:56ID:???
2chのルール的にたてなおすのはマズイ。
とりあえずつかうべ。
トリップは嫌われるしそれだけで荒らしだすやついるから非推奨。
0011nobodyさん2008/02/10(日) 00:13:48ID:???
なんでそんなにIDのみに固執するんだ?
IDIDって煩い奴は煽りがしにくくなるからとしか見えないのだが

>>10
トリップ嫌われるっつーのは変なコテが沸く所にあるんだろ
一時的なトリップは識別として使えるんだから問題ないと思うが?

それに変なコテ沸けばNG設定で終わりだし
0012nobodyさん2008/02/10(日) 00:33:14ID:???
>>11だな。IDのが手間かからんし、ageるからメ欄を空けたIDでいいとは思うが
別にトリップ使って聞くのはなんら問題ない。
それより質問者がちゃんとわかるほうが大事。
0013nobodyさん2008/02/10(日) 01:04:04ID:???
11はバカだな。今までのスレの流れも解らんのか。
こういう奴には何を言っても無駄だな…。
0014nobodyさん2008/02/10(日) 01:11:13ID:???
IDに固執する人のレスってまともなレスが無いんだけど
もうちょっと何でトリップがダメなのか言ってくれ
0015nobodyさん2008/02/10(日) 01:29:37ID:???
別に前スレでトリップでもいいって言ってんじゃないか
もう少し煽り耐性をつけてください
0016nobodyさん2008/02/10(日) 03:29:25ID:V6SpMkY1
ある文字がカタカナかどうか調べる方法を教えて下さい
コードはUTF-8です
0017nobodyさん2008/02/10(日) 04:01:26ID:???
mb_convert_kana で変換されてたらカタカナってのは駄目か?
ttp://jp.php.net/manual/ja/function.mb-convert-kana.php
0018nobodyさん2008/02/10(日) 04:03:23ID:???
ごめん。変換されてなかったら…だなw
素直に mb_ereg 使った方がいいかも
0019nobodyさん2008/02/10(日) 04:04:03ID:???
それはグッドアイデアですね
正規表現でやるより速そう
ありがとうございました
0020nobodyさん2008/02/10(日) 04:08:40ID:???
>>18
確かによく考えたらシンプルなロジックでは出来なそうですね
むーん
0021nobodyさん2008/02/10(日) 04:22:55ID:???
文字のコード範囲調べた方が速い
0022nobodyさん2008/02/10(日) 04:43:35ID:???
php カタカナ判定
でググッて自分で検証しろ
これぐらいやってから質問したほうが自分のためだよ
0023nobodyさん2008/02/10(日) 12:40:04ID:???
UTF-8のカタカナ
(\xe3(\x82|\x83)[\x80-\xbf])*
0024nobodyさん2008/02/10(日) 19:37:02ID:XCnCYEX+
PEAR Mailがうまく動作せず、ログも吐いてくれないので困っています。助けてください。
OS:Red Hat系,SMTPサーバ:Postfix
PHPのソース
<?php
require_once("Mail.php");
$params = array(
"host" => "localhost",
"port" => 25,
"auth" => false,
);

$mailObject = Mail::factory("smtp", $params);
$recipients = "[email protected]";
$headers = array(
"To" => "to",
"From" => "from",
"Subject" => "Test Mail"
);
$body = "This is test mail";
$mailObject -> send($recipients, $headers, $body);
?>
require自体はうまくいきました。25番ポートが開放されていることも確認しました。
恐らく$paramsのhost名が間違っているかPostfixの設定がダメなのか、のどちらかだと思われます。
PHPファイルとpostfixが同一サーバ内だからhost=localhostでいけると思ったのですが、main.cfのhostnameパラメで指定したFQDN
に合わせる必要があるのでしょうか。それとも他の設定ミス・・・?
0025nobodyさん2008/02/10(日) 20:04:57ID:???
http://pc11.2ch.net/test/read.cgi/php/1201425479/
前スレ埋めようぜ
0026nobodyさん2008/02/10(日) 23:55:39ID:???
>>24
>PEAR Mailがうまく動作せず
っておい
>>1の質問する時の注意の3番目を1000回復唱してから前スレに書き込め
0027nobodyさん2008/02/11(月) 00:14:33ID:???
で、前スレでマルチ死ねって言われてスルーかなw
0028nobodyさん2008/02/11(月) 03:20:16ID:???
テンプレ見て思ったんだが、画像を保存する場合にファイルかDBか自由って書いてあったが、
プロとしてやるならソレはおかしい。

動的な画像もファイルに保存するというのは、少し考えればまずいってことが分かるはずだが。
0029nobodyさん2008/02/11(月) 04:10:06ID:smM9I7ZN
pearが使えないのでphp5.2から再インストールしていたら、mbstringが使えなくなりました。

症状としてはphpinfoでmbstring関連のワードが出てきませんし、mb_language() でもFatal errorになってしまいます。
php.iniは;外したりなど行なってますし、以前使っていたphp5のphp.iniバックアップも試してみました。
また、以前は全く問題無く使えていました。ただ、php5だったのは確かですが、バージョンまでは分かりません。

使用OS:win98、Apeche2です。

WINDOWSフォルダ内のphp.iniは色んなサイトのを10種類くらい試してみました。現在は下記のようになっています。
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8 などなど。

mysqlもinfoにないです。extension=php_mysql.dllコメントアウト済み。

他にチェックすべき点はありますでしょうか?
0030nobodyさん2008/02/11(月) 04:13:00ID:???
違う場所のphp.ini読んでる
0031292008/02/11(月) 04:22:13ID:???
>>30
ありがとうございます。
バックアップ用php.iniなど検索して、windowsフォルダ以外全て消してみましたがダメでした。
0032nobodyさん2008/02/11(月) 05:35:45ID:???
それだけじゃ解らんな。
1. 他に指定してる extension との絡み
2. php -i | grep Load での php.ini の読まれる所
3. extension_dir

とか、色々考えられるな。その程度の環境晒しじゃ何とも言いようがない。
0033nobodyさん2008/02/11(月) 11:06:19ID:???
>3. extension_dir
パスを切るか、dllあるフォルダに移動するだけで正しく動いたらこれだろうな。
0034nobodyさん2008/02/11(月) 11:14:05ID:???
php.ini ファイルを読み込んでいないか疑っているのなら、まずはphpinfo の 
Configuration File (php.ini) Path を確認してみては?

あと apache経由と直に実行するのでは、使用される php.iniが違ったりするから注意。

具体的な情報もってるわけじゃないけど OSがwin98ってのは気になるなぁ。
0035nobodyさん2008/02/11(月) 12:19:01ID:???
以下のサイトにランダムな文字列を生成するサンプルが載っているのですが、rand(48,120);としているところが何故rand(48,122);じゃないのかが解りません。
これはサンプルが間違っているんでしょうか。
0036nobodyさん2008/02/11(月) 12:19:47ID:???
すいませんURL載せ忘れました。。
http://jonasjohn.de/snippets/php/rand-str.htm
0037nobodyさん2008/02/11(月) 12:19:55ID:???
質問です。
$abc = $_POST['abc'];
$edf = $_POST['edf'];

$stock = array ($abc,$edf);

$fp = fopen('data.csv','a');
fputcsv($fp, $stock);
fclose($fp);

フォームから投稿された変数abcとedfを配列stockに格納し、
csvファイルに書き出したいのですが、
変数には日本語が入るためその中身を" "で括って保存したい場合、
もっともシンプルに行うにはどのような処理を追加したらいいでしょうか?

正規表現などでそれぞれの変数の文字列を置換しても出来ると思うのですが、
よろしくお願いします。
0038nobodyさん2008/02/11(月) 12:33:18ID:mbEbK9iH
すみません、ID出し忘れです。
0039nobodyさん2008/02/11(月) 12:56:56ID:???
>>35
文字コードに対応するの出すんなら122のが正しいだろうな。
それに記号だったら再計算とかかなり無駄なことしてる>>36のは。
0-9A-Za-zだけのテーブル作ってそこから拾えばいいのに。
0040nobodyさん2008/02/11(月) 13:22:11ID:???
>>37
こういうやり方はダメなの?

$fp = fopen('data.csv','a');
$line = '"' . $abc . '","' . $def . '"' . "\n";
fwrite($fp,$line);
fclose($fp);
0041292008/02/11(月) 14:31:04ID:???
>>32-34
ありがとうございます。今の状態は
http.conf に PHPIniDir "C:/php"で、php.iniをc:\phpに移動(他は全部削除)
Configuration File (php.ini) Path no value←これは不味いですか?Loaded Configuration File C:\php\php.ini
C:\>php -i | grep Load
File STDIN:
Loaded Configuration File => C:\php\php.ini

php.iniは
default_charset = UTF-8
extension_dir = "c:/php/ext" (php/ext内に下記dllファイル確認しました)
extension=php_mbstring.dll
extension=php_mysql.dll

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
0042nobodyさん2008/02/11(月) 14:48:37ID:???
ひょっとしてその iniファイルってバージョンアップ前のを修正して使ってる?
自分は、5.0 -> 5.2でそれをやったときに動作しなかった記憶がある。(原因は知らない)
0043372008/02/11(月) 14:51:02ID:mbEbK9iH
>>40
ありがとうございます。
fputcsvを用いない場合はそれで希望通りの表示がされるようですね。
ただ配列の1変数として変換を行いたい場合の処理も教えて頂けると助かります。

その後色々試してみたのですが、
$abc = '"'.$_POST['abc'].'"';  //abcに「あ」を送信した場合

この時、$abcに"""あ"""が入ってしまうのですがこれは何故でしょうか。
'"'.で文字列を付加したことによって外側の""がつくようなのですが。
実際に文字列を付加しなくても、外側を""で括れる方法などありましたらお願いします。
0044nobodyさん2008/02/11(月) 14:53:05ID:???
>>43
foreachやらarray_mapやら使えばいくらでも好きなようにできるんじゃね
0045nobodyさん2008/02/11(月) 15:05:25ID:???
>>41
php.ini の記述はほんとに *それだけ* か?
php_mbstring.dll の前に違う extension の指定とかないのか?
0046nobodyさん2008/02/11(月) 15:13:44ID:???
>>43
fputcsv()はフィールド値が括る必要がある場合は勝手に括る
0047292008/02/11(月) 15:27:44ID:???
>>42
今は新しい方のiniファイルを使ってます。

>>45
extension=ほにゃららってところですよね?
extension=php_mbstring.dll
extension=php_mysql.dll
以外は全て「;」がついてます。

ところで、今mbstring使えるようになりました。
状況としては最初からやりなおそうと思って、Windows内php5ts.dllを削除しただけです。
phpのインストールサイトに、「php5ts.dll」をwindowsにコピペとありますが、まだしていません。でもphp infoは表示されます。
これって大丈夫なのでしょうか?いちおう今からコピペ&再起動しますが…
また、Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"
となっているのですが、gdがあるのは普通ですか?あと、本当にmbstringが使える場合、上記にmbstringって出てきませんか?
昨日ググってたら、Configure Commandには出るのに、mbstring項目がないって書いてあるサイトがあったような気がします。

0048292008/02/11(月) 15:45:56ID:???
色々と不安ですが、使えるっぽいです。phpinfoは相変わらずです。今からまたググってみます。
php自体はビクつきながら、このまま使ってみます。皆様、色々とありがとうございました。
0049372008/02/11(月) 17:17:08ID:mbEbK9iH
>>46
色々試したみたところ、変数内に"か半角スペースのある場合のみ自動的に"で括るようですね。
取り合えず全ての変数に$abc." "と半角スペースを付加して対応することにします。
ありがとうございました。
0050nobodyさん2008/02/11(月) 17:33:57ID:???
>>47
もういらんレスかもしれんが、dllって普通system32に入れるんじゃないの?
0051nobodyさん2008/02/11(月) 17:35:23ID:???
んなもん用途しだい。
特定のアプリからしか使わないなら、アプリのフォルダでいい。
0052nobodyさん2008/02/11(月) 17:55:09ID:???
DLL Hellって聞いたことあるよね
■ このスレッドは過去ログ倉庫に格納されています