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

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

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

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

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0253nobodyさん2007/11/07(水) 14:19:21ID:???
板違いの話題はご遠慮ください
0254nobodyさん2007/11/07(水) 15:04:17ID:8LwacSpR
さっき本を読んでて気づいたんですけど
PHPで
class hoge
{
public function foo(){
static $bar;
if(!isset($bar)) $bar = "初期化";
}
}
みたいにstaticを使ってメソッド内変数宣言すると、そのメソッド内でのみ有効な変数を宣言できるんですけど
これって非推奨だったりします?
マニュアルのstaticのところ見ても、ググっても見つけられませんでした。

ちなみに、上のコードで
static $bar;
を無くすと、このメソッドを、たとえばループ内で呼び出した時、毎回セットされてないとみなされ、初期化されてしまいます。

今まで、これを避けるために、クラス変数として宣言してたんですけど、このメソッドでしか使わないものをクラス変数にするのが
なんとなく、やな感じで、これのほうが気分がいいのですが、あんまりやらないほうがいいのでしょうか?
0255nobodyさん2007/11/07(水) 16:15:56ID:???
常駐アプリやフライウェイトで大量生成でもしないかぎり実害はないだろ
しかし写像たる関数にそんなもんあるのはおかしな話だし、他人に優しいコードではないな
0256nobodyさん2007/11/07(水) 16:27:48ID:???
俺はそっちのほうが気持ち悪いが、まぁ人それぞれなんじゃね
0257nobodyさん2007/11/07(水) 16:38:40ID:???
>なんとなく、やな感じで、これのほうが気分がいいのですが、
ゲロ吐きそう
0258nobodyさん2007/11/07(水) 17:16:39ID:???
ですね、ですね、という奴は自信がない証拠だろw

すぐに相手に同意を求めないと不安になるくらいなら、
もっと、自信が持てるくらい勉強しろよ。
0259nobodyさん2007/11/07(水) 17:18:25ID:???
>>258
スレタイ100回嫁
0260nobodyさん2007/11/07(水) 17:20:18ID:???
>>258
こちらは他で引き取れないようなくだらない質問を取り扱うスレでございます。
高等技術についての議論・討論は承っておりません。
0261nobodyさん2007/11/07(水) 17:23:42ID:???
>>258
出来る子は帰った帰ったw
0262nobodyさん2007/11/07(水) 18:28:23ID:???
pdoでのUpdateが空文字の所だけ更新されてないんですが、
これは仕様ですか。
0263nobodyさん2007/11/07(水) 18:36:35ID:ynZCcOoV
print_rをすれば、オブジェクトや配列の中身が出てきますが、
画面に表示せずに、それをそのままテキスト保存するにはどうすればいいですか?
ブラウザで確認できないスクリプトなので、中でどうなっているか知りたいのです
0264nobodyさん2007/11/07(水) 18:37:24ID:???
ob_start, ob_get_contents, file_put_contents, ob_cleanだ
0265nobodyさん2007/11/07(水) 18:38:41ID:ynZCcOoV
>>264
なるほど!その発想は思いつきませんでした
ありがとうございます。
0266nobodyさん2007/11/07(水) 18:42:31ID:???
>>262
kantigai desita
0267nobodyさん2007/11/07(水) 18:45:23ID:???
>>264 色々間違ったけど、まあそんな感じってことでヨロシク
0268nobodyさん2007/11/07(水) 18:49:49ID:ynZCcOoV
>>267
//バグ確認用
ob_start();
var_dump($HotObj);
$txt = ob_get_contents();
ob_end_clean();

$fp = fopen("error", "w");
fwrite($fp, $txt);
fclose($fp);

これでできましたー
サンクスです
0269nobodyさん2007/11/07(水) 18:52:16ID:ynZCcOoV
って、これってエラーが出て途中で止まってしまった場合って無効になりそうですね・・・

エラーが出てもエラー文を取得するのはどうすれば良いのでしょうか
0270nobodyさん2007/11/07(水) 19:03:28ID:QGyNJ9Px
ある値にシーザー暗号をかけたいのですがstr_replaceだと再帰的に置き換えてしまうので困ってます。

$hoge= '13690';
$rep = array(1,2,3,4,5,6,7,8,9,0);
$key = array(a,b,1,7,G,0,U,s,3,r);
$hogeTwo = str_replace($rep, $key, $hoge);
echo $hogeTwo; // 期待値a103rのところ a1r3rになってしまう

どうすれば1文字1回だけで且つ全ての文字を置き換えられますでしょうか?
0271nobodyさん2007/11/07(水) 19:06:06ID:???
どんなとこでも
var_dump($hoge);
exit;
でいいんじゃね?
0272nobodyさん2007/11/07(水) 19:07:07ID:ynZCcOoV
>>271
それまでにWarningのエラーが発生すると、そこで自動的にexitになりません?
0273nobodyさん2007/11/07(水) 19:08:20ID:???
>>269,272
マニュアル読めば多分分かるだろ

>>270
strtr()かね
0274nobodyさん2007/11/07(水) 19:09:25ID:???
>>263
print_rはデバッグだけにしろ
0275nobodyさん2007/11/07(水) 19:09:34ID:ynZCcOoV
出た、マニュアル厨
0276nobodyさん2007/11/07(水) 19:10:47ID:???
いや、お前なら読めば分かると思うよ
こんなスレで聞くよりためになる
0277nobodyさん2007/11/07(水) 19:11:23ID:ynZCcOoV
>>274
エラーをそのまま出力するようにします。
0278nobodyさん2007/11/07(水) 19:13:51ID:???
ちなみにvar_export()つーのもある
0279まとめると2007/11/07(水) 19:35:17ID:???
>>270
配列$repの並び順で$hogeを走査しているのだろうから再置換が行われそうな
文字を最後の方に持っていくしかないんじゃない?
$rep = array(1,2,3,5,7,8,9,0,4,6);
$key = array(a,b,1,G,U,s,3,r,7,0);

ま、試してみるしかないよ
0280nobodyさん2007/11/07(水) 19:38:16ID:???
>>273
お前がマニュアルだろw
0281nobodyさん2007/11/07(水) 20:15:29ID:???
orz_export()
0282nobodyさん2007/11/07(水) 20:49:36ID:xwpwBQ2z
phpからmysqlを使いたいのですが、先ほどphpinfo()をみたらConfigure の所に
'--without-mysql'とありました。
再インストール以外にConfigureOptionを変更する事が可能でしょうか?

PHP 4.4.4 (cli)
ソースから入れました(非RPM)
0283nobodyさん2007/11/07(水) 20:54:02ID:???
configureしなおしてmake makeinstall
0284nobodyさん2007/11/07(水) 20:54:56ID:???
つrebuild
0285nobodyさん2007/11/07(水) 20:58:28ID:???
>>270
echo strtr($hoge, array_combine($rep, $key));
02862822007/11/07(水) 21:01:47ID:xwpwBQ2z
>>283
即レスありがとうございます
>configureしなおしてmake makeinstall
これって既存のphpに影響しませんでしょうか?(php.iniだとか)
運用中の鯖だもんでドキドキです。
0287nobodyさん2007/11/07(水) 21:09:57ID:???
心配ならphp.iniコピーしてバックアップとっとけ
0288nobodyさん2007/11/07(水) 21:21:04ID:???
検証環境用意。
てかそんなレベルの運用なら止まってもいいでしょ
02892822007/11/07(水) 21:27:25ID:xwpwBQ2z
ポスケテ…。
php.iniバックアップとってから新しいoptionでconfigureしたら
+--------------------------------------------------------------------+
| *** NOTE *** |
| The default for register_globals is now OFF! |
| |
| If your application relies on register_globals being ON, you |
| should explicitly set it to on in your php.ini file. |
| Note that you are strongly encouraged to read |
| http://www.php.net/manual/en/security.globals.php |
| about the implications of having register_globals set to on, and |
| avoid using it if possible. |
+--------------------------------------------------------------------+

Thank you for using PHP.
で無事にmakeまでいったんですが、続けてmakeinstallとしたら
[root@www php-4.4.4]# makeinstall
bash: makeinstall: command not found
[root@www php-4.4.4]# ./makeinstall
bash: ./makeinstall: No such file or directory

となってmakeinstallができない…。
makeinstallってファイルとして存在するものなんでしょうか?
locate makeinstall | grep phpとしても何も見つかりません…。
0290nobodyさん2007/11/07(水) 21:35:22ID:???
今日はmakeを知らなくても鯖運営できることを学んだ
0291ちょっと待て2007/11/07(水) 21:37:47ID:???
>>289
釣りかもしれんけど
makeinstall → make install
だよ
02922822007/11/07(水) 23:38:13ID:xwpwBQ2z
>>291

恐ろしい事に釣りでないんです…。
make installで無事に通りました
orz

0293nobodyさん2007/11/07(水) 23:39:58ID:???
じゃあインスコが終わるまでモニタを見つめ続けるの刑
0294nobodyさん2007/11/07(水) 23:57:15ID:???
なんでlocateとかgrepとかパイプ知っててmake installしらねえんだよw
0295nobodyさん2007/11/07(水) 23:57:56ID:???
というかお前最初にどうやってソースからインスコしたんだよ
0296nobodyさん2007/11/08(木) 00:00:25ID:???
今まで一般ユーザーとして使ってて、前任者からroot引き継いだんじゃねえの
02972822007/11/08(木) 00:06:30ID:+xXhjxD6
>>293
マバタキもせずに全て見届けたので勘弁してくだしあ><
>>294>>295>>296
すいませんすいません
以前からroot持ってました…
apache、php、postgreSQLは普通にmake installってしたんですが(だいぶ昔に)
多少はシェル覚えたのですが、大概どれもうろ覚えで。
最初はPHP書くだけだったんですが鯖設定なんかもやりだすと色々勉強になって楽しいです。
0298nobodyさん2007/11/08(木) 03:02:22ID:T9hqxzEm
PHPで数時間ごとにある作業を繰り返す(HP巡回とか)ような動きをさせたいのですが,どうすればよいのでしょうか?
そういったプログラムを書いた場合サーバへの負担とかはどの程度のものなのでしょうか?
教えてください.
0299nobodyさん2007/11/08(木) 03:09:24ID:???
常駐させずにcronを使え
0300nobodyさん2007/11/08(木) 03:09:48ID:???
>>298
PHPで書いたスクリプトを
cronで数時間おきに実効じゃないかな。ふつうは。

その実行するPHPってたぶん重くても数秒でかえってくるものじゃない?
なら負荷は大したことないと思うけど・・・
0301nobodyさん2007/11/08(木) 03:12:21ID:???
どうせスレッド化したくなるんだからPHPを選択するのはどうかと思う
0302nobodyさん2007/11/08(木) 03:19:38ID:fiQYCCw7
SSLが使えない鯖で音楽ファイルを扱うのはまずいっすか?
0303nobodyさん2007/11/08(木) 03:33:42ID:???
いいんでない?
0304nobodyさん2007/11/08(木) 03:34:02ID:???
>>302
人の権利品は止めとけ
あなたのオリジナルならいくらでもどうぞ
03052982007/11/08(木) 03:37:05ID:???
>>299>>300
cronってのはレンタルサーバー(無料のものを使うつもり)で設定できるものなんですか?普通は
0306nobodyさん2007/11/08(木) 03:37:30ID:???
phpでmidiの結合ってできますか?
↓のようなやつ
http://homepage1.nifty.com/MADIA/cgi_perl/midi/index.html
できれば必要なライブラリとか教えてほしいです。
0307nobodyさん2007/11/08(木) 03:46:10ID:???
バイナリレベルでやるしかないとおも
0308nobodyさん2007/11/08(木) 03:47:15ID:???
>>305
使えるところもあるからまず調べてみろよ
レンサバでプロセス永続化しても管理者にKillされるだけ

>>306
それのmidsl.pl見る限り全部標準関数でできる
0309nobodyさん2007/11/08(木) 03:58:02ID:???
無料のレンサバだとプロセスの生存時間が制限されてることが多く、
crontabが使えないことが多く、socketが開けないことがよくある。
スレ違いだが参考までに。
0310nobodyさん2007/11/08(木) 04:27:48ID:???
あなたは質問をどこで拾ってきているの?
0311nobodyさん2007/11/08(木) 07:01:09ID:???
webcron使えばいい
登録しとけば定期的にphpにアクセスしてくれる
0312nobodyさん2007/11/08(木) 07:14:58ID:RKQxwdU8
おはようございます。
質問です。
あるデータを、五十音順に並べて表示しようとしたのですが、濁点の処理がうまくいきませんでした。

が → か
ぶ → ふ
ぱ → は

というふうに濁点の字もそれを除いた字のところに分類したいのですが、
どのようにすればいいのでしょうか。
一応ネットで調べて
$v = mb_convert_kana($v,"KV");
などと試してみましたがダメでした。

よろしければ単純な解決方法をお教えください。
よろしくお願いします。
0313nobodyさん2007/11/08(木) 07:17:31ID:???
もう少し詳細に頼む
分類がどういうことを示してるのかがわからない
がをかに置き換えしたいわけじゃないんだろう?
0314nobodyさん2007/11/08(木) 07:20:45ID:???
usortでstrcmpの直前に濁点をとる処理を書くしかないんじゃないかなあ
漢字はKakasiでも使わないと無理だね
0315nobodyさん2007/11/08(木) 07:23:45ID:RKQxwdU8
>>313
五十音順に分類したいので、先頭文字の゛や゜を取り除いた字を取り出したいのです。

端的にいうと
「がくらん」 は 「”か”の分類」
「ぱとかー」 は 「”は”の分類」

という感じに分類しようと考えています。
0316nobodyさん2007/11/08(木) 07:29:23ID:???
かな文字をキー、文字の順番を値にした配列を作って
usortするのがいいかも知れない。
0317nobodyさん2007/11/08(木) 07:32:41ID:???
>>315
だかその分類ってのはどうやってるのよ
0318nobodyさん2007/11/08(木) 07:42:10ID:RKQxwdU8
>>316,317

返答ありがとうございます。

どうも説明が舌足らずでした。
五十音順の分類は目的であって、

問題は 
「が → か」、「ぱ → は」、「ぶ → ふ」
のような濁点や半濁点を含む文字の、その濁点や半濁点の取り除き方法をどうすればいいのかという質問でした。 

たとえば
「がくらん」という文字列を「かくらん」というふうに変換したいのです。

とりあえずネットを漁ったら当面の解決方法は見つかりました。
ただあまりスマートな方法ではないみたいです。
0319nobodyさん2007/11/08(木) 07:47:36ID:???
strtr($string, "がぎぐげご", "かきくけこ");
0320nobodyさん2007/11/08(木) 07:51:11ID:???
分類するなら「か」の項をピックアップするときに「が」も拾ってくればいい
濁点を取るという発想が理解しがたい
0321nobodyさん2007/11/08(木) 07:51:22ID:???
>>318
その方法を書かないと重複するかもしれんんだろ・・
0322nobodyさん2007/11/08(木) 07:56:24ID:???
分類と濁点消去のつながりが謎すぎる。
最初に聞かれたとおり分類のロジックを説明すれば妙なことにならないのに。
03233122007/11/08(木) 08:02:36ID:RKQxwdU8
>>321

$v = mb_convert_kana($v,"kh");
$v = mb_convert_kana($v,"H");

これでいけました。
0324nobodyさん2007/11/08(木) 08:03:21ID:???
PHPと関係ないけど平仮名カタカナ促音拗音ーのソートって規格あるのかな
みんな俺ルールでやってるのか
0325nobodyさん2007/11/08(木) 08:08:45ID:???
>>324
文字コードが規格といえば規格じゃないのかな
辞書なんかだと、表記文字ではなく音でソートするために読みフィールドがある
0326nobodyさん2007/11/08(木) 08:23:22ID:???
うんこ < ウイスキー < ウホッ < ウヰスキー

リテラルでソートされてても特に問題を感じないが
0327nobodyさん2007/11/08(木) 10:14:14ID:XgLbf7lh
質問です。

imagecreatefrompng()でpng画像を開いて、
imagecolorat()で画像の中の任意の点のインデックスを取得、
imagecolorset()でそのインデックスの色を置き換えたいのですがうまくいきません。

imagecolorsforindex()で処理の要所要所のRGB値を書き出してみたところ、
imagecolorset()の後でもインデックスの色が変化していないようです。

phpで画像処理を行うのは初めてなのでインデックスなどよくわかっていない点が多いのですが、
上に書いたような処理では何か問題があるのでしょうか?
0328nobodyさん2007/11/08(木) 10:16:32ID:???
>>268

//バグ確認用
ob_start();
var_dump($HotObj);
$txt = ob_get_contents();
ob_end_clean();

$fp = fopen("error", "w");
fwrite($fp, $txt);
fclose($fp);


は

file_put_contents("error",print_r($HotObj,true));

だけでいけるんじゃまいか?試してないけど。
0329nobodyさん2007/11/08(木) 10:22:56ID:???
>>327
インデックスが何かから調べたらいいんじゃね
0330nobodyさん2007/11/08(木) 10:35:18ID:???
>>329
検索してみてもそれらしい情報が出てこなかったので、
マニュアルの記述からPhotohopのインデックスカラーモードにおけるカラーパレットのようなものかと考えていました。

ただ、Truecolorの場合imagecolorat()ではRGB値が返ってくるというような記述も見つけたので、
もうちょっと調べてみることにします。
0331nobodyさん2007/11/08(木) 10:50:13ID:???
マニュアル読んでないの?
下の方に書いてあるソースとか参考にすれば分かるでしょ。
03323272007/11/08(木) 11:15:53ID:XgLbf7lh
imagetruecolortopalette()でTrueColorイメージをパレットイメージに変換することで、
imagecolorset()が実行できるようになりました。

ただ、変換する際に微妙に色が変わってしまうようです。
今回は元の画像のRGB値が重要なので、別のやり方を考えてみます。
0333nobodyさん2007/11/08(木) 11:34:55ID:fiQYCCw7
PHPでファイルのヘッダーを読み取る関数はありませんか?
ヘッダーで画像のタイプ(png/bmp/pjpeg)を取得して、それにあったimagecreate関数を使いたいのですが、
どのような方法ですれば良いのでしょうか
03343332007/11/08(木) 11:39:45ID:fiQYCCw7
getimagesizeで解決しました。
mimeも返ってくることを忘れていました・・・汗
0335nobodyさん2007/11/08(木) 13:05:38ID:???
Perlのregexp::assembleみたいに与えられたデータから正規表現を生成するようなものってPHPには無いでしょうか?
03362982007/11/08(木) 14:20:49ID:???
>>308>>309>>311
ありがとうございました.がんばってみます.
0337nobodyさん2007/11/08(木) 15:27:30ID:wKfRuyj8
$var = "echo";
これで$varの中身の関数を実行させるにはどうすればいいですか?

$$var("テスト");
→Fatal error: Function name must be a string

eval("{$var}(\"テスト\")");
→syntax error, unexpected $end
0338nobodyさん2007/11/08(木) 15:33:56ID:???
>>337
変数の中に関数を入れて実行する意味がわからない
その前に変数と関数の違いがわかっていないのでは?
0339nobodyさん2007/11/08(木) 15:37:46ID:???
>>337
eval
0340nobodyさん2007/11/08(木) 15:38:21ID:???
きっとリスパーなんだよ。
エヴァればいいと思うよ。
あるかどうかは知らん。
0341nobodyさん2007/11/08(木) 15:40:19ID:???
evalをつかうとこまではいいんだが、それじゃエラーになってあたりまえ
0342nobodyさん2007/11/08(木) 15:42:56ID:???
もうすこしヒントをあたえてやろう

<?php
echo "てst"
echo "test";
?>

これを百回ぐらいまわせ。エラーの意味を勉強してこいクズ
0343nobodyさん2007/11/08(木) 15:43:09ID:???
こうしろってことか
eval($var." (\"テスト\")");
0344nobodyさん2007/11/08(木) 15:44:12ID:???
>>342
セミコロンが抜けてるのか
0345nobodyさん2007/11/08(木) 15:44:31ID:wKfRuyj8
ごめ、普通に記述ミスってた
0346nobodyさん2007/11/08(木) 15:48:58ID:???
$var = 'echo';
$str = 'test';
eval("$var\"$str\";");
0347nobodyさん2007/11/08(木) 16:30:21ID:wKfRuyj8
既にimagecreateで作られた画像のサイズを取得する方法はありませんか?
0348nobodyさん2007/11/08(木) 17:18:07ID:???
なんでクラス定数で配列は使えないんすか?
代用品はある?

しゃーねーからとりあえず

public static getConstArray() {
 return array("hage","hoge","huge");
}

とかしてるけど。
0349nobodyさん2007/11/08(木) 17:18:33ID:???
>>348
0350nobodyさん2007/11/08(木) 17:21:50ID:???
>>348
定数でないから
0351nobodyさん2007/11/08(木) 17:26:06ID:???
本当に定数なら1個ずつ定義しろ
配列使うなんておかしいだろ常識的に考えて
0352nobodyさん2007/11/08(木) 17:28:19ID:???
なんでやねん

十二支 = array("子","丑","寅",・・・);

こんな定数があってもええやないか
■ このスレッドは過去ログ倉庫に格納されています