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

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

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

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0798nobodyさん2008/12/01(月) 12:39:31ID:???
IPも変わればDNSも変わるんじゃないの?
07997982008/12/01(月) 12:40:28ID:???
DNSじゃなくてホスト名だ・・・
ネットワークプログラミングってむずかしいね
0800nobodyさん2008/12/01(月) 12:52:20ID:L8HEfjQ3
>>797
シグナルアラーム( ´・ω・)?
0801nobodyさん2008/12/01(月) 12:52:55ID:???
ネットワークプログラミングですらないし
0802 ̄ ̄ ̄ ̄ ̄)/ ̄ ̄ ̄ ̄ ̄ ̄ ̄2008/12/01(月) 12:58:29ID:???
     /⌒ヽ
    / ^ ω^j、
 _, ‐'´  \  / `ー、_
/ ' ̄`Y´ ̄`Y´ ̄`レ⌒ヽ
{ 、  ノ、    |  _,,ム,_ ノl
'い ヾ`ー〜'´ ̄__っ八 ノ
\ヽ、   ー / ー  〉
\ \`ヽ-‐'´ ̄`冖ー-く
|| \ \         \     ∧_∧
||   \ \         \  ( ´Д`) オイ、なんか変なのがいるぞ
||    \ \         \ /     ヽ
||      \ \         / |  | |
||       \ \∧_∧ (⌒\|__/ /
          ヽ(     )絶対目合わせるな  ∧_∧
           /   く          \  (    ) うわー、なんか言ってるよ
           |     \           \/    ヽ
0803nobodyさん2008/12/01(月) 13:22:43ID:???
kentwebではホスト名を記録してるから7年間ホスト名で記録してる俺が通りますよ
0804nobodyさん2008/12/01(月) 13:24:10ID:???
それはサーバ側で変換してくれてんだよ
0805nobodyさん2008/12/01(月) 15:04:18ID:YUzphIUV
http://x-row.cc/igwebcap/
これってphpでどうやってんですか?
0806nobodyさん2008/12/01(月) 15:37:34ID:L8HEfjQ3
>>797
> >>795シグナルアラーム使えば?

signal()
alarm()

に関してもう少しkwsk・・・
0807nobodyさん2008/12/01(月) 17:55:32ID:???
ふつうの設定では、クライアントが接続を切ったら(停止ボタンを押したら)
PHPの実行は停止されるよ。

ignore_user_abort() とか調べてね。
0808nobodyさん2008/12/01(月) 18:11:17ID:L8HEfjQ3
>>807
それだとwhile(ture)ループや、一度始めると時間がかかる処理を途中で停止させることはできないよね?
0809nobodyさん2008/12/01(月) 18:41:30ID:???
>>808
PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。
外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
そいつは生き残るはず。
0810nobodyさん2008/12/01(月) 18:47:06ID:L8HEfjQ3
>>809
> PHP内部の処理なら、ループの中だろうとなんだろうと接続断で死ぬ。

え?そういう仕様だったの?

> 外部コマンドをコンソールを切り離して(1>&2 > /dev/nullとかで)実行してたなら
> そいつは生き残るはず。

一度プログラムが呼び出されればユーザーがいなくても処理を続行させる方法と、
そうやって一度動か始めたプログラムを途中で好きなタイミングで停止させる方法を
解説してくれたサイトってない(´・ω・`)?
0811nobodyさん2008/12/01(月) 18:52:18ID:???
>>810
マニュアル
0812nobodyさん2008/12/01(月) 19:16:24ID:L8HEfjQ3
>>811
マニュアル無さす(´・ω・`)
0813nobodyさん2008/12/01(月) 19:19:38ID:???
あるよ
0814nobodyさん2008/12/01(月) 19:36:18ID:???
POSTで送信されたデータを全てに対してaddslashes等の処理を行うのが面倒なので
一括で処理する方法はありますか?
0815nobodyさん2008/12/01(月) 19:38:01ID:???
スレタイ
0816nobodyさん2008/12/01(月) 19:38:42ID:g9VSv8cf
すみません、上げ忘れました
0817nobodyさん2008/12/01(月) 19:39:35ID:???
>>1
08188142008/12/01(月) 19:39:43ID:???
自己解決しました
816は偽者です
0819nobodyさん2008/12/01(月) 19:41:16ID:???
なんかそういう関数あったよな
思い出せない・・・
0820nobodyさん2008/12/01(月) 19:45:49ID:???
>>814
magic_quotes_gpc
まぁ非推奨な上にPHP6で廃止されるけどな
0821nobodyさん2008/12/01(月) 19:49:07ID:???
array_mapあたりかなぁ
$_POST = array_map("addslashes", $_POST);
って感じかな
08228142008/12/01(月) 19:50:47ID:g9VSv8cf
皆さんありがとうございます。
>>821を試してみます
0823nobodyさん2008/12/01(月) 19:57:15ID:L8HEfjQ3
>>813
具体的にどのあたりでしょうか?
0824nobodyさん2008/12/02(火) 00:24:01ID:PVQb/nvw
「等しくない」の書き方が2つあるんですが、
PHP的にはどっちを使うの。違いあるのですか?

1 != 1
1 <> 1

あと、&&をandとか||をorとかも
どっちで書くこと多い?
0825nobodyさん2008/12/02(火) 00:25:51ID:???
>>824
マニュアルの演算子のとこ
0826nobodyさん2008/12/02(火) 00:47:56ID:PVQb/nvw
>>825
http://search.net-newbie.com/php/language.operators.comparison.html
ここですよね?

!=と<>の違いは結果の文章の最後に「。」があるか、無いかしかわかりませんでした
0827nobodyさん2008/12/02(火) 00:58:49ID:???
ワロタw
0828nobodyさん2008/12/02(火) 04:54:35ID:???
>>826
好きなの使えばいい
他言語に慣れてる人を考慮していくつか用意してるだけだから
!=なんかはほとんどの言語で一般的に使われる
<>はSQLなんかで使う
else ifなんかもelseifと半角スペースあけなくてもPHPの場合問題ない
0829nobodyさん2008/12/02(火) 09:14:45ID:???
>>826
別に違いは書き方が違うだけでコチラじゃないと駄目というものは
無かったと思う
自分ひとりがメンテし続けるなら好きにしても良いんじゃないの?
828じゃないがif():endif;なんて書き方もあったりする
0830nobodyさん2008/12/02(火) 09:32:14ID:???
結合順位がちがくね?
08318262008/12/02(火) 12:45:41ID:???
>>825 >>828 >>829
ありがとうございました。
好きなほうを使います。
>>830さんの書き込みが気になりますが・・・
0832nobodyさん2008/12/02(火) 12:49:24ID:???
気になるならなんで調べないの?
0833nobodyさん2008/12/02(火) 13:03:23ID:???
ゆとり世代にそんな高度なこと言っても・・・
0834nobodyさん2008/12/02(火) 19:42:23ID:???
>>831
優先順位のことならこっち
http://www.php.net/manual/ja/language.operators.php
0835nobodyさん2008/12/03(水) 14:18:09ID:769N0vO+
すいません質問です。
 Start
  >>1 >>3 こんにちわ
 End
上記の文章で2chのようなテキストの「>>1」をURLリンク付けて置き換えしたいと思ってます。
eregなどで >>[0-9]+ これで対象部分はマッチ可能なんですが
マッチされたものを取得する方法等はありますか?
ereg_replace等であれば 変換された後のテキスト取得となってしまいます。
置き換えできればいいじゃないと思われますが、>>の後の数値が必要でして。。
何か良い事例などあるでしょうか。


0836nobodyさん2008/12/03(水) 14:36:30ID:???
>>835
preg_match("/pattern/", $string, $matchs);
08378352008/12/03(水) 14:39:18ID:769N0vO+
半分自己解決です。
色々と繰り返す中eregの第三引数で取得できると判明しました。すません

$match=">>[0-9]+";
$text=">>1 >>2 おはよう";
ereg($match,$text,$getstr);
var_dump($getstr);

しかしながら、2つめを取得できません。どうしたものでしょう・・><
08388352008/12/03(水) 14:41:52ID:769N0vO+
>>836
ありがとう!そこまではなんとか辿りつきました。
0839nobodyさん2008/12/03(水) 14:45:40ID:???
preg_match_all("/>>[0-9]+/", ">>1 >>2 おはよう", $matchs);
print_r($matchs);
0840アッー2008/12/03(水) 14:46:26ID:???
×matchs
○matches
08418352008/12/03(水) 14:49:23ID:769N0vO+
>>839
アーーッ eregばかりみてましたよ!
preg・・ すばらし
本当、くだらないヤツで申し訳ありませんでした。
解決いたしました! ありがとうございました。
0842nobodyさん2008/12/03(水) 16:11:57ID:???
来年の新卒からゆとり世代が社会進出するから気をつけろ
0843nobodyさん2008/12/03(水) 16:29:46ID:???
うぁ、現場にゆとり世代参入か、やべぇ
お守り買ってこなきゃ
0844nobodyさん2008/12/03(水) 16:36:30ID:K11Uk0Wn
すいませんアクセス解析で得たIPがプロクシかPHPを通さないで調べたいのですが
そういうサービス提供しているURLご存知のかたいらっしゃいましたら教えてください。
0845nobodyさん2008/12/03(水) 16:39:11ID:???
>>844
BBQ
http://bbq.uso800.net/
0846nobodyさん2008/12/03(水) 17:35:06ID:sIznGeZK
勉強がてらにこういう処理を書いてみたいんだが

$test->foo->bar();

$test->bar(); なら書けるんだけど、これってどうすればいいの?
どこか分かりやすいサンプルか解説があれば教えて欲しい。
0847nobodyさん2008/12/03(水) 17:36:58ID:???
barの最後にインスタンス返してないんじゃ?
0848nobodyさん2008/12/03(水) 17:38:30ID:???
どうすればいいのって何が?
メンバ変数fooにオブジェクト入れとけばいいのでは?
つか本当にしたいのはメソッドチェーンでなく?
0849nobodyさん2008/12/03(水) 17:44:09ID:f7FsbaSI
メール送信フォームをつくっています。
ある環境では想定どおりにメールが届くんですが、
別の環境でテストすると、メールの件名が途切れて、
メールのボディの先頭に

 =?ISO-2022-JP?B?MUlVJDEkXiQ3JD8bKEI=?=
From: blahblah@example.com

のようなヘッダが露出してしまいます。
正常に送信できたりするのは、MTAによって自動で長さを調整したりしてくれるのかな、と予想してるのですが、
わざわざヘッダを全部チェックして何文字目で折り返すとかいう処理を書かなきゃいけないんでしょうか。。。
0850nobodyさん2008/12/03(水) 17:48:23ID:???
>>849
受信したメールのソースを見るべき
件名が切れている部分に注目
症例: Headerの内容がBodyに流れると言うことはその箇所に改行が2つある可能性

折り返しの処理をどうするか、とかはそもそもメールが意図したソースで送信されているか確認した後に考えた方がいい
あれもこれもじゃ混乱するから
0851nobodyさん2008/12/03(水) 17:59:53ID:f7FsbaSI
>>850
アドバイスどおりメールサーバに入ってメールのファイルをviで見たところ、
---------
Subject: =?ISO-2022-JP?B?GyRCIVokKkxkJCQ5ZyRvJDshWyQqTGQkJDlnJG8kOyVVJSkhPCVgJE5B?=
 =?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=
From: aaaa@example.com

以下のお問い合わせがありました

---------
こんな感じになっていました。

Thunderbirdで受け取ると、ボディに
 =?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=
というヘッダが表示されてしまいます。

Subject: =?ISO-2022-JP?B?GyRCIVokKkxkJCQ5ZyRvJDshWyQqTGQkJDlnJG8kOyVVJSkhPCVgJE5B?=
 =?ISO-2022-JP?B?dz8uJUYlOSVIGyhC?=

メールの仕様は確か、ヘッダの1行が長いと、改行したあと、スペースを付与する、
という仕様だったはずなので、↑を見る限り正しいように見えますが・・・
0852nobodyさん2008/12/03(水) 18:47:25ID:f7FsbaSI
subjectをbase64_encodeして、=?ISO-2022-JP?B? とかを自分でつけたして送信したらうまくいきました。

mb_encode_mimeheader()とMTAの相性が悪かったのか。。。
むやみに既存の関数に頼るのはよくないですね
0853nobodyさん2008/12/03(水) 19:02:44ID:???
>>851
メールの仕様は確か、ヘッダの1行が長いと、改行したあと、スペースを付与する、
という仕様だったはずなので、↑を見る限り正しいように見えますが・・・

ってそんなことRFC 2822の何処にも書いてなかったはず(記憶が定かじゃないが)
Subject:のケツの改行コードの問題な気がする
0854nobodyさん2008/12/03(水) 19:02:51ID:sIznGeZK
>>848
えっと、fooがいったい何でどう書けばいいのかが分からないんです。

メソッドチェーンではないです。
0855nobodyさん2008/12/03(水) 19:03:48ID:???
>>854
何言ってんのか分からない
もっと詳しく
0856nobodyさん2008/12/03(水) 19:11:45ID:???
>>854
$test->foo->bar();
これの意味が知りたいということ?
それなら、>>848が答え書いてると思うけど・・
$testというインスタンスのメンバー変数にあるインスタンスが格納されて
そのインスタンスのbarメソッドを呼び出してるわけだよね

class A {
function bar() { echo "hoge";}
}
class B {
function __construct() { $this->foo = new A(); }
}
$test = new B();
0857nobodyさん2008/12/03(水) 19:27:24ID:NrG8DUhG
PHPよりFirefoxの質問っぽいけど同じ問題にぶつかった人がいるかも と思ったので
こちらで質問させてください。

オンラインのPHPマニュアルを頻繁に使っていますが、
ブラウザがWindows+Firefox3だと、"search for"(alt+S)のショートカットが効きません(ブラウザメニューに食われる)
唯一これが障害でデフォルトブラウザをFirefoxにできません。
何か良い方法はないですか
0858nobodyさん2008/12/03(水) 19:30:36ID:???
>>857
IE Tab等のプラグインを入れて
php.netをIEエンジンで開くようにする

というか完全にスレ違いだ
0859nobodyさん2008/12/03(水) 19:54:30ID:sIznGeZK
>>856
サンプルコードありがとうございます。
勉強する取っ掛かりになりました。
0860nobodyさん2008/12/03(水) 21:29:34ID:???
ctrl+Fは?
0861nobodyさん2008/12/04(木) 10:26:46ID:???
インスタンス自身をそっくり入れ替えるメソッドを実装することは可能でしょうか?
メソッド中で$this = new hoge();とかで・・・
0862nobodyさん2008/12/04(木) 10:28:26ID:uRUEQ8oc
861です
ID忘れ
0863nobodyさん2008/12/04(木) 11:20:50ID:???
>>861
PHP4は出来たと思う
でも明らかにおかしな動作だからPHP5では修正されているはず
オブジェクト自身が再アサインとかアフォかと
0864nobodyさん2008/12/04(木) 12:42:52ID:???
おまえらてさ童貞の臭いがプンプンするんだよね(苦笑
0865nobodyさん2008/12/04(木) 12:46:18ID:???
下手すぎるからもっと煽りの修行してから来いよ
0866nobodyさん2008/12/04(木) 12:46:26ID:???
童貞の臭いをプンプンさせながらPHPの勉強をする毎日です

よろしくです
0867nobodyさん2008/12/04(木) 14:17:49ID:???
print_rの()を省略して出力する方法ない?
var_dumpでもいいけど
デバッグのためにデバッグ出力関数の後に()つけるのだるい

print_r $debug

みたいな感じで出力できれば、()でくくる時間が短縮できる
0868nobodyさん2008/12/04(木) 14:20:33ID:???
>>1
0869nobodyさん2008/12/04(木) 14:21:31ID:???
>>867
つスレタイ
0870nobodyさん2008/12/04(木) 14:22:38ID:???
>>867
関数は括弧で引数取る、これ基本
と言うわけでムリ
0871nobodyさん2008/12/04(木) 15:33:31ID:Yfb/CJck
秀丸マクロ作った。

setcompatiblemode 0x0F;
selectline
replaceall "^([\t ]*)(.*)$" , "\\1print_r($\\2);" , regular, nocasesense, inselect;
0872nobodyさん2008/12/04(木) 16:06:10ID:???
【OS名】Debian etch
【PHPのバージョン】php4.06
【連携ソフトウェア】XML-RPC
【質問内容】
掲示板の更新があったときにホームサーバーにpingを飛ばして更新をチェックしています。
しかし、このpingを飛ばす処理に時間がかかり、掲示板の書き込み完了となるまで遅いです。

そこで、pingを飛ばす関数の処理を待たずに次の処理を開始することは可能でしょうか?
(別プロセスにするのでしょうか??)
<?php
send_ping(); ←この処理が完了する前にnext_processに移りたい
next_process();
?>
function send_ping(){
}
宜しくお願いします
0873nobodyさん2008/12/04(木) 16:09:01ID:???
>>1
08748722008/12/04(木) 16:17:52ID:4vOGiir2
すみません、ID晒し忘れていました。
0875nobodyさん2008/12/04(木) 16:26:06ID:???
>>874
別プロセスにして、切り離す方法もありだろうね。
execとかでスクリプトファイルを使う手がありそう。

あとは、先に出力をフラッシュしちゃってignore_user_abortで処理を続行する方法

負荷が高いなら、キューに保存しといて、cronで定期的にping飛ばすとか。
0876nobodyさん2008/12/04(木) 16:27:30ID:???
>>872
pingの処理を別プロセスでするしかないな

投稿と同時にping送る必要がないなら、
ファイルなりDBなりにフラグ立てて、バックグラウンド(cronとか)で定期的にフラグを確認してping送信
短い期間で複数の投稿があった場合、それらをまとめて1回のpingで済ませられる
08778742008/12/04(木) 16:35:22ID:4vOGiir2
>>875
とてもていねいなレスありがとうございます。
せっかくphpで書いたのですが、cronの方が良さそうですね。
cronでシェルスクリプト回すことにします。
ありがとうございます。
0878nobodyさん2008/12/04(木) 17:29:45ID:???
蛇足だけど、cronでphp廻してもいい
0879nobodyさん2008/12/04(木) 17:40:42ID:???
>>878
cronでPHP動かすことってできるの?
PHPって確か実行するユーザーがいなくなると自動的に停止してクリアしてしまうはずだが
もし時間がかかるPHPプログラムをcronで回した場合、cronはそのプログラムが終了する
まで付き合ってくれるんだろうか?
0880nobodyさん2008/12/04(木) 17:54:13ID:3hZlaj6e
数十〜数百人程度にメール送るphpをcronでまわしているけど問題ないよ
0881nobodyさん2008/12/04(木) 17:54:53ID:???
おまえは何を言ってるんだ
0882nobodyさん2008/12/04(木) 17:56:39ID:???
ユーザーがいなくなるとっていうのは、cgiインターフェースのときに
ユーザーの接続断で停止って話のことだろうけど、
cronで起動するのはcliインターフェースだから、cronをセットした実行ユーザーで
制限時間まで実行できる。ちなみにWeb用の制限時間とは別だから普通は問題ない。
0883nobodyさん2008/12/04(木) 17:58:34ID:???
コマンドラインで動けばそのまま載せられるでしょう。
jspをcronでwgetで実行とかもやってるけど。
0884nobodyさん2008/12/04(木) 18:29:16ID:???
>>882
webサーバーがPHPをサポートしてると明言しているときは
CLIもCGIもどちらもサポートしていると思ってok?
0885nobodyさん2008/12/04(木) 18:33:22ID:???
html の中に php のブロックをいれるとき、

<?php
// ここのインデントどうしてます?
?>

<?php
echo 'hoge';
?>

か、

<?php
____echo 'hoge';
?>

か。

php の class の場合は

<?php
class hoge
?>

ってインデントとらないほうをよくみるんですが、<?php の次のインデントは
どうあるのが美しいのかな、と。
0886nobodyさん2008/12/04(木) 18:38:57ID:???
スレタイ読まない人ばっかで悲しいですね
0887nobodyさん2008/12/04(木) 18:42:15ID:???
>>884
cronいじれる環境ならcliサポートしてるのが普通だと思うが、
レンサバだとサーバー会社によるだろうね。
シェルスクリプトを許可しているところもあれば、そうじゃないところもある。
そりゃ、サーバー会社の運用にそんな細かいガイドラインがあるわけないから・・・
0888nobodyさん2008/12/04(木) 21:27:00ID:LmXIHk8w
同じページにCSVを2枚読み込みたいんですが、可能でしょうか?
0889nobodyさん2008/12/04(木) 21:41:05ID:0wd2VBCD
可能だよ。
読み込んでどうするの?
0890nobodyさん2008/12/04(木) 22:46:15ID:???
コピペでやって上書きされてるに3echo
0891nobodyさん2008/12/04(木) 23:31:54ID:???
>>889
CD.csv と book.csvに別けてるんですけど
このデータを全部表示させたいんですよね
どうやるか教えてくれません?
0892nobodyさん2008/12/04(木) 23:32:43ID:LmXIHk8w
ID表示忘れました OTZ
0893nobodyさん2008/12/05(金) 00:11:00ID:???
>>891

1.CD.csvを読み込む
2.book.csvを読み込む
3.出力
0894nobodyさん2008/12/05(金) 00:15:34ID:???
どういう風に表示したいわけ?
ファイルそのままを出力したいの?
0895nobodyさん2008/12/05(金) 09:04:09ID:???
>>891
内容をすべて一番手っ取り早く表示するならこんな感じ
echo nl2br(file_get_contents("CD.csv"));
echo nl2br(file_get_contents("book.csv"));

カラム単位でも分けたいならfgetcsvを使えばいい
ただしfgetcsvはロケールに注意すること
0896nobodyさん2008/12/05(金) 09:07:35ID:???
>>891
echo file_get_contents("CD.csv");
echo file_get_contents("book.csv");
0897nobodyさん2008/12/05(金) 09:19:32ID:???
>>896
m9(^Д^)プギャー
■ このスレッドは過去ログ倉庫に格納されています