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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
00011様2006/08/23(水) 00:54:52ID:uM5Jzzy0
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

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

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0883nobodyさん2006/09/02(土) 13:36:25ID:???
>>879
・"エラーメール"はバウンスメールと呼ばれる
・バウンスメールは送信元もしくはErrors-Toヘッダで指定されたアドレスに送られる
(ただしErrors-Toヘッダは規格になっていないので信頼性は低い)
・バウンスメールに関しての仕様はRFC1891-1894で定められている
 これら仕様はDSNと呼ばれるSMTPサービス拡張を定義している
・qmailは独自の仕様(QSBMF)で送信する。
0884プリンタ関数2006/09/02(土) 13:46:06ID:w59Qk5ot
[環境]
WINDOWS xp
IIS V5.1
PHP5.0.4


[内容]
プリンタ関数が使いたいが、導入の過程でエラーが起こり困っている。


[過程]
プリンタ関数(*1)によると

>この PECL 拡張モジュールは、 PHP にバンドルされていません。

とあるのでpecl-5.1.6-Win32.zipをダウンロード(*2)して解凍した。
php_printer.dllが目当てだが、とりあえず全てのファイルを
extensionフォルダ(自分の環境ではc:/php/ext)に移した後、
php.iniに

extension=php_printer.dll

の行を追加して保存し、コンピュータを再起動した。
その後、ブラウザからphpでつくったサイトを開くと
エラーボックスが何回か表示した後

Unable to load dynamic library - 指定されたプロシージャが見つかりません。

とブラウザ上に表示。
0885プリンタ関数 続き2006/09/02(土) 13:46:36ID:w59Qk5ot
エラーの表示に従うならばphp_printer.dllが指定したディレクトリに無い
と読めるのでphp.iniのディレクトリの指定を確認しても

extension_dir = "c:\php\ext\"

となっていて、問題なさそう。
他サイトで同じ状況の人がいないか探したところ、
[PHP-users 7023] printer関数が使えない
というML(*3)があったので読んでみるとどうやら同じ症状。
このサイトの[次の記事]に山本さんの自己レスがあり、
「php4winで配布しているパッケージで解決」とあったので
php4winのサイトを探してみたところ、どうやら閉鎖中(*4)。


*1 http://php.benscom.com/manual/ja/ref.printer.php
*2 http://php.benscom.com/get/pecl-5.1.6-Win32.zip/from/a/mirror
*3 http://ns1.php.gr.jp/pipermail/php-users/2002-April/007031.html
*4 http://www.php4win.com/


今でもプリンタ関数を使ってるという方いらっしゃいましたら
どうかアドバイスをお願いします。
08868792006/09/02(土) 13:57:58ID:???
>>883
SPAMがどうたらとかと言われるかと思いましたが、回答ありがとうございます。これらをヒントに勉強してみることにします。
なんとなく>>881も自分宛のような気もしますがよくわからず…すみません。自分宛でしたらありがとうございます。調べてみます。
0887nobodyさん2006/09/02(土) 13:59:34ID:???
>>886
メルマガとかメーリングリストを作ろうとしたら必要な知識だしな。
0888nobodyさん2006/09/02(土) 13:59:47ID:DHuAFzD0
下げてしまった。まぁいっか。
0889nobodyさん2006/09/02(土) 14:09:01ID:???
>>879
Return-Pathにメールが届くようにする。
そこにメールが届いたらプログラムが起動するようにする
(もしくは、デーモンを動かしてメールが届いたら処理をするようにする)。
起動したプログラム(or デーモン)で、エラーメールを解析。
08908792006/09/02(土) 14:19:36ID:DHuAFzD0
>>887
そうですね。一応処理できる事を知ったので、できることはしといた方が良いのかなと思ったので。

>>889
今のとこだいたいのイメージしか湧かないですが、流れはだいたいわかりました。ありがとうございます。
0891nobodyさん2006/09/02(土) 15:46:05ID:X9kYxdVI
echoでフォーム内でのaction=$_SERVER[PHP_SELF]>の正しい書き方がわかりません。

echo "<form action=$_SERVER[PHP_SELF]>\n";
echo "<form action=\"$_SERVER[PHP_SELF]\">\n";

一応、両方とも動くのですが正しい文法としては後者の記述でしょうか?
※メソッドとか抜けてますが、見やすくするために省略しました。
0892nobodyさん2006/09/02(土) 16:12:03ID:???
$_SERVER[PHP_SELF]
↑php4以降推奨されない書き方
0893nobodyさん2006/09/02(土) 16:25:31ID:???
変数部分を{}で括ってやるんじゃなかったっけ?
いずれにしても見難いから俺は結合演算子使ってる。
PHP的に正しい書き方って言ったら埋め込みなんだろーけど
0894nobodyさん2006/09/02(土) 16:31:19ID:???
>>891
$_SERVER[PHP_SELF]だとPHP_SELFが未定義の定数として認識される。
未定義の定数は文字列として扱われる。この場合は"PHP_SELF"という文字列。
ただし、これは推奨されておらずNoticeが吐かれる。

また、ダブルクォーテーション内で変数を扱うときは{}でくくる方がよい。

ちなみに俺なら
echo '<form action="', $_SERVER[PHP_SELF], '">', PHP_EOL;
とかく。
0895nobodyさん2006/09/02(土) 16:37:38ID:???
まずは変数の書き方を(ry
08968942006/09/02(土) 16:38:56ID:???
コピペしたらシクったorz
echo '<form action="', $_SERVER['PHP_SELF'], '">', PHP_EOL;
0897nobodyさん2006/09/02(土) 16:49:51ID:???
設計の問題なのですが 403 を適切に吐き
無駄な負荷を軽減しているのですが

当然なのですがカウンタが回りません

どの様な処理方法が考えられますでしょうか
0898nobodyさん2006/09/02(土) 16:52:57ID:???
釣り来たwww
0899nobodyさん2006/09/02(土) 16:54:00ID:???
>>897
403ってHTTPのステータスコードのこと?
だとしてどのようなアクセスに対して403を吐いていて
どのようなアクセスに対してカウンタを回したいの?
0900nobodyさん2006/09/02(土) 16:57:58ID:???
htmlとphpプログラムを記述したPHPファイル(hello.php)bェあります。
その中にhelloというユーザー関数を作成しました。
この関数を、フォームのsubmitボタンを押すと呼び出すようにしたいのですがうまくいきません。
どこをどのように改良したらよろしいのでしょうか?
ご教授お願いいたします。

<?php
function hello() {
print "Hello";
}
?>

<form method="post" action="hello.php">
<input type="submit">
</form>
0901nobodyさん2006/09/02(土) 16:59:51ID:???
>>900
関数は呼び出さなければ実行されない。
hello.phpに呼び出しを追加しろ。
0902nobodyさん2006/09/02(土) 17:01:48ID:???
>>900
読んでおいで
http://www.php.net/manual/ja/language.functions.php
0903nobodyさん2006/09/02(土) 17:02:11ID:???
ごめんなさい 304 Not Modified ね

書き間違えました

更新されていなければ 304 Not Modified
更新されていれば スクリプト実行

これをPHPの動的なページに適用しています。
カウンタはバックグランドではきちんと回っているのですが

304 Not Modified でページが再読み込みされない為
回らないように見えます。
0904nobodyさん2006/09/02(土) 17:20:54ID:???
>>903
釣りにしか見えないがブラウザのキャッシュを利用しているのだからサーバー側で
何も処理されない。当然、カウンタが増えるわけがない。
0905nobodyさん2006/09/02(土) 17:22:46ID:???
>>882
ID3v1タグって元々はどんなエンコードで入っているんですか?
いろいろやってみましたが、文字化けが直りませんでした。
0906nobodyさん2006/09/02(土) 17:29:26ID:???
>>903
単一スクリプトの出力を変化させつつ、304吐いて読み込ませないなんて矛盾したことは不可能

カウンタの部分が更新されることを望むなら
カウンタ表示部分を画像やAjaxで別途呼び出すようにするか
304を吐かないようにするか

負荷軽減と言ってるがそれがPHP実行によるCPU負荷を指してるなら、
304を吐かなくてもスクリプト側で重い処理だけキャッシュすればいい。

転送量の事なら圧縮転送させるだけでも効果が得られるかもしれない
0907nobodyさん2006/09/02(土) 17:30:11ID:???
自己解決しました。SJISでした。
0908nobodyさん2006/09/02(土) 17:38:41ID:???
>>906
>カウンタ表示部分を画像やAjaxで別途呼び出すようにするか

やはり別ファイルにして呼び出す方法しかないのでしょうかね
色々やって見ます。

スクリプト自体の処理負荷も回線負荷も
重い訳ではないので 304 はずしても問題ないんですがね。
09099002006/09/02(土) 17:40:02ID:???
自己解決しました。
制御文から関数呼び出しました。
0910nobodyさん2006/09/02(土) 17:44:17ID:???
パーミッションについて質問です。
htmlファイルは604
phpファイルは705
ログファイルは606
ですべて統一しても大丈夫でしょうか?
0911nobodyさん2006/09/02(土) 17:49:35ID:???
>>910
スレ違い。
実行状況にも因るしな
0912nobodyさん2006/09/02(土) 18:47:20ID:X9kYxdVI
exitの多数使用はあまり好ましくないでしょうか?
0913nobodyさん2006/09/02(土) 18:50:41ID:???
適切な場所で使う分には問題ないでしょ
0914nobodyさん2006/09/02(土) 19:01:50ID:???
なるほど、わかりました。
exitをうまく使ってみますね。
0915nobodyさん2006/09/02(土) 19:15:03ID:???
mb_send_mailが失敗した場合のコードの記述がわかりません。
dieを使うのでしょうか?
0916nobodyさん2006/09/02(土) 19:17:07ID:???

 PHPでPHPできますか?

0917↑ できます!2006/09/02(土) 19:47:46ID:???
>>916
0918nobodyさん2006/09/02(土) 20:01:33ID:18r2NV7f
arsortを使うと、同数の要素まで並び替えられてしまいます。
同数の時は元の配列の順番を維持したまま
ソートしたいのですが
どうすればいいですか?
0919nobodyさん2006/09/02(土) 20:24:44ID:???
>>918
同数の要素ってのは値が同じってこと?
0920nobodyさん2006/09/02(土) 20:28:30ID:???
>>919
そうです
比較対象になる値が同じということです
0921nobodyさん2006/09/02(土) 20:43:42ID:???
>>920
uasortでも4.1.0以降は値が等しいときの順番は未定義となっているから、
基本的にはソートアルゴリズムも含めて自作するしかなさげ。

探したら誰かが作ってるかもしれないが。
0922nobodyさん2006/09/02(土) 20:56:55ID:X9kYxdVI
正規表現でメールアドレスをチェックすることについて伺います。
if (preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/',$text)) {
echo "正しいメールアドレスです";
} else {
echo "正しくないメールアドレスです";
}

というコードでは一部の携帯アドレスは適応しないそうなのですが、
どんなアドレスなのでしょうか?
0923nobodyさん2006/09/02(土) 20:59:15ID:???
>>922
現存するメールアドレスすべてを受け取る正規表現はめちゃくちゃ長かった気がする。

>というコードでは一部の携帯アドレスは適応しないそうなのですが、
j-phone時代の/を許容したアドレスのことかな?
09249222006/09/02(土) 21:01:19ID:???
>>923
これね
http://www.din.or.jp/~ohzaki/perl.htm#Mail
09259222006/09/02(土) 21:05:37ID:X9kYxdVI
>>923さんありがとうございます。
j-phoneということはけっこう前ですね。
/を許容したアドレスについては飛ばすことにします。
0926nobodyさん2006/09/02(土) 21:07:50ID:???
変数にもうひとつ$がついたものをよくみるのですが、記述ミスでしょうか?

$$hoge

0927nobodyさん2006/09/02(土) 21:10:31ID:???
>>926
http://www.php.net/manual/ja/language.variables.variable.php
0928nobodyさん2006/09/02(土) 21:17:56ID:???
可変変数なんて使ったことないんだけど
どういう状況で使うの?
0929nobodyさん2006/09/02(土) 21:19:48ID:???
>>928
コールバックとか
0930nobodyさん2006/09/02(土) 21:21:34ID:???
そのページを見たならUser Contributed Notesも読めよ
0931nobodyさん2006/09/02(土) 21:22:23ID:???
$a = "2ch";

$$a = ".net";

print $a.$$a;

出力結果
2ch.net

可変変数の解釈はこれであってますか?
09329312006/09/02(土) 21:23:08ID:???
間違えた

$a = "2ch";

$$a = ".net";

print $a.$2ch;

出力結果
2ch.net
0933nobodyさん2006/09/02(土) 21:23:20ID:???
クラスのプロパティに配列のキー名で登録する時とか
foreach ($properties as $key => $val) {
 $this->$key = $val;
}
0934nobodyさん2006/09/02(土) 21:29:51ID:???
便乗させていただきます。どなたかご教授ねがいます。

foreach($_POST as $k => $v){
if(get_magic_quotes_gpc()){
$v = stripslashe($v);
}

$v = htmlspecialchars($v);
$$k = $v;←このぶぶんがよくわかりません。どんなことをしているのでしょうか?
}
0935nobodyさん2006/09/02(土) 21:33:35ID:???
>>934
それ全体で要素をhtml出力用に加工しながらextractしてる。
http://www.php.net/manual/ja/function.extract.php
0936nobodyさん2006/09/02(土) 21:36:25ID:???
>>926
記述ミスはよく見かけたりしないだろう、ふつー。
この辺。
ttp://www.php.net/manual/ja/language.variables.variable.php
0937名無し募集中。。。2006/09/02(土) 21:37:03ID:UdtOFEb9
>>934
$_POST['test']
があったら
$test
に内容が入るってこと
0938nobodyさん2006/09/02(土) 21:37:44ID:kbsAVdsr
$str = str_replace("TND","、",$str);
で、文字を置き換えたいのですが、
「、」にならずに、「≠」となってしまいます。
なぜ文字化けするのでしょうか?
0939nobodyさん2006/09/02(土) 21:39:34ID:???
いま・・・

      可 変 変 数 
               が あ つ い !!
0940nobodyさん2006/09/02(土) 21:53:01ID:???
>>938
文字コードがあってないから。php.iniの文字コード関連を見なおす。
0941nobodyさん2006/09/02(土) 22:22:02ID:???
$hogehoge = "AUEFEワ8";
となっているとして
$hogehogeからAとE以外を削除して、
$hogehoge = "AEE";としたいのですが、
どのようにすればよいのでしょうか?
0942nobodyさん2006/09/02(土) 22:35:37ID:???
>>941
preg_replace('/[^AE]/', '', $hoge);
0943nobodyさん2006/09/03(日) 00:03:46ID:???
よっしゃ今からタバコ買いに行って来る
お前ら何かいる?
0944nobodyさん2006/09/03(日) 00:13:40ID:???
cabinをたのむ
0945nobodyさん2006/09/03(日) 00:15:09ID:???
JPSをたのむ
0946nobodyさん2006/09/03(日) 00:35:17ID:???
わかば頼む
0947nobodyさん2006/09/03(日) 00:37:45ID:???
後のことはたのむ
0948nobodyさん2006/09/03(日) 00:39:05ID:???
>>947
早まるな。

>>943
ごめん未成年。
つか、タバコって金かかるし、体に悪いし、何か良いことあるの?
0949nobodyさん2006/09/03(日) 00:41:49ID:???
>>943-948
すれ違い。

そろそろ新スレの季節ですね。
0950nobodyさん2006/09/03(日) 00:42:34ID:???
>>948
お前は何でプログラミングなんかしてるんだ?
別にプログラミングしなくたって別の仕事で飯は食えるよな?
プログラマになって過労とストレスで寿命をすり減らさなくたって・・・

つまりはそういうことだ。
0951nobodyさん2006/09/03(日) 00:49:16ID:???
分かりやすく言うと「ヤニ中毒」って事だ
0952nobodyさん2006/09/03(日) 00:53:18ID:???
PEARのコーディング規約読んだのですが、ちょっと書いてなかったので質問します。

1. 関数名 (...)
2. 関数名( ... )

のどっちがいいのかなぁ?
0953nobodyさん2006/09/03(日) 01:02:15ID:???
たぶんこれ

function getManpo($tinpo)
{
????echo 'in';
}
0954nobodyさん2006/09/03(日) 01:13:00ID:???
>>952
俺は 関数名(...) だな。そこで空白をあけるイミってそんな感じない。
0955nobodyさん2006/09/03(日) 01:23:14ID:???
>>952
PEARスレ
http://pc8.2ch.net/test/read.cgi/php/1122899232/
0956nobodyさん2006/09/03(日) 01:49:16ID:???
見やすさの問題だろ?
どっちでもいいんじゃない?
0957nobodyさん2006/09/03(日) 05:29:55ID:???
設計について相談です。
▲▼を押すと選択しているデータの表示順番が変更出来る仕組みってありますよね?
例えば

▲▼ 0 あああ
▲▼ 1 いいい
▲▼ 2 ううう

という表示だとして、矢印を押して変更する場合、IFで上下の値を取得して
+-するという考え方で良いのでしょうか?
0958nobodyさん2006/09/03(日) 05:43:50ID:???
フォントにもよるしな
0959nobodyさん2006/09/03(日) 06:24:55ID:???
>>952
俺は一時期カッコの内側にスペース入れる主義で、エディタのマクロで入力しやすくしたりもしてた。
めちゃくちゃ見やすいし、ちょっと上級者っぽくて格好良いとすら思っていた。
けど、あまりに少数派なことと、スペースいれなくても別に見づらくないことに気づいてスペース入れない派に戻った。
0960nobodyさん2006/09/03(日) 08:28:07ID:???
インデントはタブ?スペース?
0961nobodyさん2006/09/03(日) 08:31:02ID:???
誰がなんと言おうとタブ
0962nobodyさん2006/09/03(日) 08:48:24ID:???
空白インデントはPEARみたいに配布前提の場合くらいじゃないの?
多人数開発でも自社内のみなら普通はタブだよね。
0963nobodyさん2006/09/03(日) 08:50:02ID:???
>>957
元々のデータの持ち方次第だと思うから
それだけだと何とも言えない。
何通りも手法はあると思うけど。
0964nobodyさん2006/09/03(日) 09:49:20ID:???
郷に入れば郷に従え
PEARの規約に準拠するよう書いている
スペース4つ
0965nobodyさん2006/09/03(日) 12:10:08ID:???
PEAR≠PHPの郷
0966nobodyさん2006/09/03(日) 13:14:22ID:???
>>957
すれ違いかもなー
09678842006/09/03(日) 13:55:28ID:mAZoIbaR
自己レスです。

PECLのバージョンをPHPとあわせないと
dllを読み込んでくれないようです。
新しいほうがいいに決まってるという先入観にやられました。

どうもおさわがせいたしましたー。
0968nobodyさん2006/09/03(日) 16:05:56ID:???
キー4回も押してらんないので、タブが圧勝。
0969nobodyさん2006/09/03(日) 16:17:20ID:???
>>968
お前はメモ帳でもつかってるのか?
0970nobodyさん2006/09/03(日) 16:37:11ID:???
>>965
PHPでのメジャーなコーディング規約ってPEARくらいしかないじゃん

>>968
釣りだと信じたいがスペースインデントでスペース分キー叩いてる人はいないぜ
0971nobodyさん2006/09/03(日) 16:52:23ID:???
Zend Frameworkにもあるよ
http://framework.zend.com/manual/ja/coding-standard.coding-style.html
0972nobodyさん2006/09/03(日) 17:55:23ID:???
>>969>>970
PHPエディタ使ってるけど、スペースインデントしようと思ったら
任意の幅だけキー叩く必要あるっしょ。
0973nobodyさん2006/09/03(日) 18:01:59ID:???
>>972
知らんがな。そういうエディタもあるってこった。
emacs だと TAB キーで指定幅のスペースインデントになるし。
09749522006/09/03(日) 18:08:23ID:???
みなさんありがとうございました。
ようは見やすさの問題なんですね……
0975nobodyさん2006/09/03(日) 18:09:10ID:???
>>971
ZFのもだいたいPEARベースの規約だしね
でどっちもスペース4だからまあこれでやっとけば問題ないかみたいな
0976nobodyさん2006/09/03(日) 18:12:52ID:???
>>974
見易さもあるだろうけど要はこれと決めて
チーム内で統一できてるかどうかじゃないかねえ
そのための規約だから
0977nobodyさん2006/09/03(日) 18:23:02ID:sakoO9rv
>>940
やっぱり何か変です

$str = "EFG";
$str = str_replace("EFG","、",$str);
echo $str;

こうすると「、」と出力されるのですが

$str = "EFG";
$str = str_replace("EFG","、",$str);
$str = str_replace("A","あ",$str);
echo $str;

とすると、「」と文字化けしてしまいます。

$str = str_replace("A","あ",$str);
これが、「B」のときや、「C」のときは文字化けせず
「A」のときのみ文字化けしてしまいます。
何がおかしいのでしょうか?
0978nobodyさん2006/09/03(日) 18:26:46ID:???
>>977

アホかおまえ。
0979nobodyさん2006/09/03(日) 18:42:24ID:???
>>977
str_replace は正式にはマルチバイト文字に対応してない
変換されたとしたらたまたま変換されただけ

mb_ereg_replace か preg_replace を使いましょう。
0980nobodyさん2006/09/03(日) 19:00:33ID:ddg00SBr
一度ブラウザからCGI(PHP)に起動が掛かったらセッションを保持して
3秒インターバルでブラウザに表示データを送る処理を作成しました。

2日間ほど連続で走らせたらブラウザの更新が止まってしまいます。
原因を推測できる方がおられましたら教えてください。
httpdのエラーログ、OSのsyslogに特に異常は見当たりませんでした。

------------------------
<?php
function main() {
while(1){
Display();
}
}

function Display() {
//JavaScriptで、location.reload を出力して再表示させています。
}
?>

------------------------
PHP4
apache2.0
Mozilla1.7.12
Linux 2.6.9
0981nobodyさん2006/09/03(日) 19:03:07ID:???
>>980
ソースが端折られ過ぎてて判断が出来ない
0982nobodyさん2006/09/03(日) 19:04:26ID:mAZoIbaR
Windowsサーバでの話なんですが、コマンドプロンプト開いて

C:\>notepad

なんて打つとメモ張が開きますよね?
PHPで

<?php
EXEC("notepad");
?>

っていうファイル(仮にhoge.php)を開こうとするとブラウザが読み込み中でとまってしまいます。
なんとなく仕様なのかなーとも思うんですが、ブラウザからメモ帳を開くようなことはできないでしょうか?

環境ですが、
(1) IIS + php5
(2) apache + php4
の両環境で試しても同じ結果でした。 よろしくお願いしますm(_ _)m
レス数が950を超えています。1000を超えると書き込みができなくなります。