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

【PHP】質問スレッドpart33【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/02/16(木) 03:19:52ID:xwXojaq/
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0652nobodyさん2006/03/09(木) 00:00:31ID:???
>>651
http://www.php.net/downloads.php
Complete Source Code
0653nobodyさん2006/03/09(木) 00:43:58ID:???
>>651
お兄さんのphpはphp本体がインタープリタかとw
0654nobodyさん2006/03/09(木) 00:48:32ID:???
モジュール版が使えるレンサバであえてCGIとしてPHPを使う意味ってどんなん?
0655nobodyさん2006/03/09(木) 00:59:38ID:???
>>654
ユーザ権限で実行、forkの動作が保障されてる etc
0656nobodyさん2006/03/09(木) 08:47:28ID:???
>>654
CGIのみセーフモードoffなんじゃないの
0657nobodyさん2006/03/09(木) 10:27:03ID:???
>>639
面白い面白くないじゃなくて、質問者の礼儀だろ。
オレは質問になってない文章にはそのように返すがな
0658nobodyさん2006/03/09(木) 11:44:36ID:???
質問スレで面白い回答を期待するほうが間違ってる
0659nobodyさん2006/03/09(木) 12:41:04ID:???
気持ちはわからんでも無いが
スルーせずにいちいちアゲアシ取っていくなんてメンドクサイことよくやるね
0660nobodyさん2006/03/09(木) 12:46:20ID:???
スルーして誰かが親切に答えるとまた同じことやるからね
0661nobodyさん2006/03/09(木) 14:20:49ID:???
>>629-634で止めときゃまだほほえましかったのに>>635みたいな余計なこといちいち書くから荒れるんだよな。
0662nobodyさん2006/03/09(木) 14:41:42ID:???
おまえらもそれをわかってるならスルーしたらいいだけなんだがな
0663nobodyさん2006/03/09(木) 15:12:50ID:???
それ言うと無限ループになりますね。

>>662
goto >>662
0664nobodyさん2006/03/09(木) 19:48:25ID:???
>>657
質問になってない質問ならわざわざ回答する必要ないじゃん
おまえ馬鹿か。
0665nobodyさん2006/03/09(木) 19:58:42ID:???
そして糞真面目に回答しちゃう馬鹿が出てムカつくわけだな
0666nobodyさん2006/03/09(木) 21:04:59ID:???
くだらねえ
0667nobodyさん2006/03/09(木) 21:23:30ID:???
m9(^Д^)プギャー
0668nobodyさん2006/03/09(木) 21:51:36ID:???
なにこれ
皮先ウザいんだけど
0669nobodyさん2006/03/09(木) 21:52:43ID:???
超回答者がここにも
0670nobodyさん2006/03/09(木) 21:54:09ID:???
>>668
スルー汁。ホントにそう思ってるならコテハン名なんか書いたら余計に
よろこばすだけ
0671nobodyさん2006/03/09(木) 23:13:16ID:SHZr9acF
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd --with-zlib
--enable-mbregex --enable-mbstring --enable-trans-sid --with-xsl
--with-pgsql=/usr/local/pgsql --with-gd --with-jpeg --with-jpeg-dir=/usr/local/lib

で、phpコンパイルしてるんですが、

[09- 3-2006 23:09:46] PHP Fatal error: Call to undefined function ImageCreateFromJPEG()
in /hogehoge/hoge.php on line 15

のようなエラーがでてしまいます。どうすれば解決できるでしょうか?
環境はRedHat9とphp5.1.2です
0672nobodyさん2006/03/10(金) 00:03:00ID:???
アバウトな質問で申し訳ありません。
C言語であれば以下のようなコードで変数の値を入れ替える関数が作れます。
void swap ( int *x , int *y )
{
int t = *y;
*y = *x;
*x = t;
}

ポインタがないPHPでは同じような関数は実現できないのでしょうか?
入れ替えた2つの変数を返すのに
戻り値を配列にするといった方法しかないのでしょうか?
0673nobodyさん2006/03/10(金) 00:09:18ID:???
Perl同様リファレンスというものがある
0674nobodyさん2006/03/10(金) 00:46:33ID:???
>>672
そんな関数を使わなくても
list($x, $y) = array($y, $x);
で普通に変数スワップできるけどね。

ま、ポインタの代わりにリファレンスを使うのももちろんアリだけど。
0675nobodyさん2006/03/10(金) 01:14:59ID:???
<?php
$userid = "abc";
$password = "def";
?>

このプログラムをサーバーにアップロードして、
HTTP(SSLなし)でアクセスすると abc と def は
平文でネットを流れることになるのでしょうか?
それともサーバー側でのみ処理されることになるのでしょうか?
0676nobodyさん2006/03/10(金) 01:40:21ID:???
>>675
まずスレを実行するとクライアント側で何が表示されるのか考えてみ
明らかにくだ質っぽいが
0677nobodyさん2006/03/10(金) 01:41:25ID:???
>>676
スレじゃない・・
"それ"ね・・
0678nobodyさん2006/03/10(金) 03:09:37ID:???
>>675
サーバ側でのみ処理される(ネットを流れない)ケースが多いと思われる。
ファイル名が.txtや.htmlだったらどうなるか考えてみ。
また.phpでもそのまま表示される可能性はある。
0679nobodyさん2006/03/10(金) 03:25:34ID:???
Webサーバで解釈してHTMLを返すんだから、そのスクリプトじゃ何も返ってこない
0680nobodyさん2006/03/10(金) 10:44:28ID:???
PHPはサーバーサイドスクリプトなんですか?クライアントサイドスクリプトなんですか?
って意味の質問じゃないのか、それ。
0681nobodyさん2006/03/10(金) 15:45:28ID:???
>>671
たぶんlibgd自体がjpegサポートしてないんだよ。
0682nobodyさん2006/03/10(金) 15:58:10ID:???
>>671
>>681の言うとおりじゃないかな。
libgdのconfig.log 調べてごらん。
jpegのライブラリは、make install-lib したかな
0683nobodyさん2006/03/10(金) 16:07:52ID:???
掲示板にトリップ機能を付け加えたいのですが
どうやればよいかご存知の方いますか?
0684nobodyさん2006/03/10(金) 17:04:23ID:???
トリップ計算して結果を表示する。
0685nobodyさん2006/03/10(金) 17:39:41ID:???
そりゃ居るでしょう
0686nobodyさん2006/03/10(金) 18:29:52ID:???
>>683
敢えて言おう、ぐぐれ
0687nobodyさん2006/03/10(金) 20:40:48ID:bPBa/0oN
教えてください
C言語の構造体のようなイメージで使いたくて

  $a->s1 = "aaa";
  $a->s2 = "bbb";
  $a->b->n1 = 123;
  $a->b->n2 = 456;

みたいな使い方をしてるのですが
この書き方って問題ないのでしょうか?
マニュアルを見てもこの書き方が正しいと
思える内容が見つからなくて気になってます。
別に正しい書き方とか使い方とかあるのでしょうか?

自分の認識としては、上の例でいうと
「a」と「b」がstdClassのオブジェクトとして自動的に作られて
そのメンバ変数として「s1」「s2」「n1」「n2」が追加される
と考えてますが、間違ってます?
0688nobodyさん2006/03/10(金) 21:05:57ID:???
>>687
E_STRICTを気にしないならいいけど、標準的には
$a = new stdClass;
と書くべき。
0689nobodyさん2006/03/10(金) 21:20:20ID:???
ってゆうか、横着しないでクラス定義しろよ。
0690nobodyさん2006/03/10(金) 21:22:21ID:???
こういうのは配列でやるのがPHP流。
0691nobodyさん2006/03/10(金) 21:27:13ID:???
>>687
>C言語の構造体のようなイメージで使いたくて
どこがCの構造体やねん
0692nobodyさん2006/03/10(金) 22:18:59ID:???
>>691
俺は何となくしたい事は分かったが。
06936712006/03/10(金) 22:48:17ID:8gj1xhR9
>>681-682
レスありがとうございました。
調べてみます!
06946872006/03/11(土) 08:33:19ID:???
>>688-692
みなさんありがとうございました
なんとなく安心しました

他の方は配列でやってるのでしょうか?
それともクラス定義?
最初はクラスで定義してたのですが
変数の宣言を忘れても間違ってても
エラーにならないのでやめてしまいました。
(もしかしてエラーのレベルのせい?)
もう1度いろいろ試してみます。

>>691
配列でやると構造をあらわしにくいと思います
0695nobodyさん2006/03/11(土) 08:46:23ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0696nobodyさん2006/03/11(土) 08:47:02ID:???
漏れはもっぱら配列
気がつくと5次元6次元配列とかできてたりして

この辺は個人の作り易さとかあるだろうな
0697nobodyさん2006/03/11(土) 08:50:36ID:???
>>694
いちおうPHPの配列はリスト、スタック、キュー、マップ(ハッシュ)、木構造などだいたい表現できるけど。
stdClassは使い捨てスクリプトとかテストスクリプトみたいな一時的なものに使う以外にはあんまり使い道ないよ。
全部配列で代替できるから。
構造の「定義」をしたいならクラスを使うべき。
06989722006/03/11(土) 11:53:34ID:???
>>974
できました。
亀レスですがありがとうございました。

>>973
リファレンスで検索しても基本的な関数の一覧しかヒットしませんでした。
その様な関数はあるのでしょうか?

更に質問なのですが、
関数内で引数として渡された値実体を
直接変えることはできますか?
伝わりにくいかもしれませんが、
やはりCでのポインタを用いたswapのイメージでお願いします。
0699nobodyさん2006/03/11(土) 11:56:35ID:???
>>698
未来からやってきた
0700nobodyさん2006/03/11(土) 12:00:18ID:???
>>698
お前が>>672なら
function hoge(&$var) {
$var++;
}
$val = 1;
hoge($val);
echo $val;
07016982006/03/11(土) 12:01:00ID:???
>>699
アンカー全て600番台に
脳内置換お願いしますorz
0702nobodyさん2006/03/11(土) 12:10:19ID:???
>>698
function swap(& $a, & $b) {
 $t = $a; $a = $b; $b = $t;
}
この&をつけて変数を渡すことをPHPではリファレンスっていうのです。C++の参照の構文に似せてあるね。
http://php.net/references
07036722006/03/11(土) 12:27:06ID:???
>>700
調べてみました。
参照変数なんてあったんですね。

ポインタと比べて変数のアドレスは操作できないが、
アドレスの指す変数を操作していると解釈していいのでしょうか?
0704nobodyさん2006/03/11(土) 12:34:58ID:???
お願いだから、マニュアル熟読してよ
0705nobodyさん2006/03/11(土) 13:20:09ID:???
>>695
お前最悪だな
糞なおまえの糞スパゲティコードなんかメンテしたくねえや。

クラスくらい作って『集約(Aggregation)』くらいしやがれや
0706nobodyさん2006/03/11(土) 13:22:48ID:???
>>703
>調べてみました
何を調べたんだ
0707nobodyさん2006/03/11(土) 15:43:24ID:???
>>697
配列で代替できるけどわかりにくくね?

687みたいなのを配列にしようとすると
変数わけるしかなくない?
0708nobodyさん2006/03/11(土) 15:53:32ID:???
5次元とかの方が書いてるときはさくさくかける。


おかげでアホな外注が作ったワケ分からんスパゲッティーコードを
元請様がデバッグする羽目になる。
0709nobodyさん2006/03/11(土) 17:03:22ID:???
>>707
っ[連想配列]

クラスも連想配列に似た実装になってるわけだが>phpのばあい
0710nobodyさん2006/03/11(土) 17:08:56ID:???
>>709
$a['s1'] = "aaa";
$a['s2'] = "bbb";
$a['b']['n1'] = 123;
$a['b']['n2'] = 456;

こんな感じ?
なんか気持ち悪いのはおれだけ?
0711nobodyさん2006/03/11(土) 17:22:05ID:???
>>710
慣れ慣れw
0712nobodyさん2006/03/11(土) 17:37:45ID:???
>>710
気持ち悪いというか、おれはそういうのは訳解らなくなる。
0713nobodyさん2006/03/11(土) 17:44:10ID:???
>>712
まークラスにしても
PHPには型宣言もないし
宣言してない変数でも使えてしまうし
いっしょな気もする・・・

変数名で型とかがわかるようにするとしても
連想配列もクラス変数も一緒だしね
0714nobodyさん2006/03/11(土) 17:48:15ID:???
perlでよく使うけど引数を連想配列で渡すのは順番気にしなくていいかもね
PHPもプロトタイプレスだし
0715nobodyさん2006/03/11(土) 18:53:19ID:???
クラスの代入で質問です

$hoge1 = new Hoge();
$hoge1->num = 100;
$hoge2 = $hoge1;
$hoge2->num = 200;
echo $hoge1->num;

とした場合、
PHP4.3.10では 100 が
PHP5.1.2 では 200 が返されました。

PHP5で仕様が変わったのでしょうか?
マニュアルのどこかに記載がありましたら教えてください。
0716nobodyさん2006/03/11(土) 18:56:25ID:???
糞にくそみそに言われたorz
0717nobodyさん2006/03/11(土) 19:07:03ID:???
>>715
PHP5ではオブジェクトはデフォルトで参照渡し、
PHP4では値渡し(コピー)。
0718nobodyさん2006/03/11(土) 19:07:44ID:???
>>715
代入演算子の扱いが変わってる
cloneで調べろ
0719nobodyさん2006/03/11(土) 19:53:28ID:???
>>708
他人のスパゲッティーコードは困るな。
まあ、ロジック読むとこまでは訓練でなんとかなる。がんばれ
0720nobodyさん2006/03/11(土) 20:39:49ID:???
>>710
それくらいならまだまし
Javaでも二次元キーのハッシュはよく作るから。
List key = new ArrayList<String>();
key.add("book");
key.add("sound");
Map map = new HashMap<List, Integer>();
map.put(key,123);

key = new ArrayList<String>();
key.add("paper");
key.add("light");
map.put(key,456);

こんな感じで。


これで5次元のキーでもまあ、どうにかなるだろう。

しかしこれが5次元の配列となるとまた別。
最悪。5次元のキーを持つハッシュではなく配列ってのは読みにくくて超ウザイ。
そんなコードを書いて渡した奴に鉄拳制裁したくなる(できれば経済制裁したい)。
0721nobodyさん2006/03/11(土) 21:01:41ID:???
2次元で十分だなぁ
3次元画像はいらん
0722nobodyさん2006/03/11(土) 21:17:29ID:???
4次元ポケットがほしい
0723nobodyさん2006/03/11(土) 21:35:40ID:???
そこで次元大介ですよ
0724nobodyさん2006/03/11(土) 21:43:45ID:???
高次元理論を証明する公式はPHPで書けますか?
0725nobodyさん2006/03/11(土) 21:48:49ID:???
>>724
( ゚Д゚)ポカーン
07267152006/03/11(土) 23:46:02ID:???
>>717-718
ありゃー
デフォルトの動作が変わってたんですね
ありがとうございました
0727nobodyさん2006/03/12(日) 00:09:02ID:yHHsI6Ak
echo '高次元原理を証明する公式';
0728nobodyさん2006/03/12(日) 00:24:10ID:d4WSeAj/
strip_tagsで、複数のタグを取り除きたい場合、どのように指定すればいいですか?
例(1つ)->strip_tags($str,'<Font>');
例(2つ)->strip_tags($str,'<Font><b>');?
0729nobodyさん2006/03/12(日) 00:26:02ID:???
strip_tagsはあまり使わないほうがええよ
0730nobodyさん2006/03/12(日) 00:36:59ID:???
>>728
自分で回答してんじゃん。何故、1度でも試してから質問しない?
>>729
なんで?
0731nobodyさん2006/03/12(日) 01:04:24ID:???
>>729
への?
0732nobodyさん2006/03/12(日) 11:19:33ID:???
error_reportingのE_STRICTって
error_reporting関数では設定できないの?
E_ALLまでは指定できるけどE_STRICTだけ有効にならない
0733nobodyさん2006/03/12(日) 11:43:11ID:???
>>732
環境くらい書けと。
error_reporting(E_ALL | E_STRICT);
ちなみにE_STRICTはPHP5.0から
0734nobodyさん2006/03/12(日) 11:54:05ID:???
>>733
すんません、できるはずなんですね。
PHP5.1.2なんですが、
error_reporting(E_ALL | E_STRICT);
としても
error_reporting(4095);
としても有効にならないっす
httpd.confかphp.iniならできるんだけど・・・
0735nobodyさん2006/03/12(日) 13:20:13ID:???
>>734
一応確認するが、どうやって有効になったかしらべてるの?
07367322006/03/12(日) 17:42:38ID:???
>>735
class Hoge {
var aaa;
}

って書いてるけど・・・
0737nobodyさん2006/03/12(日) 22:33:58ID:???
メンテ前提なら、phpとかperlの仕様で発注しちゃ駄目だよ。
CとかJavaで発注かけないと。

phpとかperlは仕様書見て作り直しが基本。
07387322006/03/13(月) 00:30:59ID:???
E_STRICTは実行前のコンパイルのときに報告されるので
コンパイル後に
error_reporting(xx)
でE_STRICTを有効にしても
時すでに遅しってことのようですね。
失礼しました
0739nobodyさん2006/03/13(月) 06:00:06ID:???
$moji = "おはようございます。さいきん暖かくなりましたね";

↑
変数の最初の10文字だけ取得したいのですが
適切な関数はないでしょうか?
0740nobodyさん2006/03/13(月) 06:16:49ID:???
>>739
くだ質行き。

mb_strcutかmb_substr、場合によってはmb_strimwidthも便利。
0741nobodyさん2006/03/13(月) 07:29:03ID:???
マニュアルも読まない野郎が多すぎ
0742nobodyさん2006/03/13(月) 07:58:53ID:???
●マルチバイト文字列関数
 http://www.php.net/manual/ja/ref.mbstring.php

●日付・時刻関数
 http://www.php.net/manual/ja/ref.datetime.php

●配列関数
 http://www.php.net/manual/ja/ref.array.php

●正規表現関数
 http://www.php.net/manual/ja/ref.pcre.php

これくらいは読めヽ(`Д´)ノ ウワァァァン
0743nobodyさん2006/03/13(月) 13:10:52ID:???
比較的使用頻度の低いカテゴリの関数はまぁしょーがないかなと思うけど、
どう考えても1度は目を通しとかないとPHPプログラマとしてまずかろう、って
レベルの基本の内容すら目を通してない連中がごろごろいるってのがなぁ…
0744nobodyさん2006/03/13(月) 13:43:15ID:???
> どう考えても1度は目を通しとかないとPHPプログラマとしてまずかろう

って誰が判断するんだろう。
0745nobodyさん2006/03/13(月) 13:50:28ID:???
いきなり書き始めても、困ったらそこを読む代わりに
このスレに書く、ということですな。
0746nobodyさん2006/03/13(月) 14:47:15ID:???
>>744
そんなん自分だろ。
その自分が目を通すか通さないかの敷居を低くしていくと、
全体的なレベルが下がるから困るとも言いたいんじゃないか?
0747nobodyさん2006/03/13(月) 19:00:58ID:???
fopen()などでURLを引数に使うためにはallow_url_fopenを使いますが、こういったアクセスで
タイムアウトを設定することはできますか?

いつまでもページ全体が表示しないのはまずいので、つながらないときはエラーでもいいから
早めに諦めてほしいのです。
0748nobodyさん2006/03/13(月) 19:02:04ID:???
あ、しまった。マニュアル読んだつもりだったけど見落としてた
「ファイルシステム関数」にモロに書いてました・・・
0749nobodyさん2006/03/13(月) 19:44:33ID:???
php検定試験ぐらい有志が行って、スキルを保証すべきじゃねえの?
なんか
php出来ます=低スキル、低単価、案件失敗確実
って風評が広まってる悪寒。
0750nobodyさん2006/03/13(月) 19:46:15ID:???
PHPできるよりCやC++、Javaができる方が重宝されるっしょ。
仕方ない事だと思うよ。
0751nobodyさん2006/03/13(月) 20:04:43ID:???
>>749
ま、あまり間違って無いしな、それ
■ このスレッドは過去ログ倉庫に格納されています