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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/05/17 17:14ID:AT+bUkag
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。


■本家
 http://www.php.net/

■日本 PHP ユーザ会
 http://www.php.gr.jp/

■PHP マニュアル
 http://www.php.net/manual/ja/

■PEAR マニュアル
 http://pear.php.net/manual/ja/

過去スレ, 関連スレ等>>2-4


抜けているものがあったら補足願います
0313nobodyさん04/05/25 21:52ID:???
>>312
本買えば?
0314nobodyさん04/05/25 21:53ID:???
count()にリファレンスを渡す話を初めて聞いたのでちょっと調べてみたんだけど、
マニュアルにもUserContributedNotesにも載ってなくて、ほんとの所はどうなんだろう?
試せばすぐ分かるんだろうけどマンドくせ。

ソースだと関係する所はこれくらいかな。
ext/standart/array.c
 PHP_FUNCTION(count) -> php_count_recursive(zval *array, long mode TSRMLS_DC)
中ではポインタで渡してるだけの気がするんだが。
0315nobodyさん04/05/25 21:54ID:GONN/rJf
ぐぐってみたんですが、わからなかったので....
mb_encode_mimeheader
ですが、日本語が10文字くらいになると末尾が文字化けしてしまいます。
「こんにちはこんにち(B」
みたいな感じです。
それよりも短い文字列だと文字化けしません。

phpのバージョンは4.3.6です。

よろしくおながいします
0316nobodyさん04/05/25 21:58ID:???
echo <<< EOM
TEST←定数
EOM;

EOM内で定数を使うことはできるのでしょうか?
0317nobodyさん04/05/25 22:06ID:???
>>316
できません。
0318nobodyさん04/05/25 22:22ID:???
>>315
mb_internal_encodingは?
0319nobodyさん04/05/25 22:29ID:GONN/rJf
>>318
315です。
デフォルトのままです。

コードはSJISで書いているんですが、mb_encode_mimeheaderするまえに
mb_convert_encodingでJISに変換しています。
0320カポコン04/05/25 22:48ID:???
なかなか面白かったよ。
つーかwin2000でphp語るなよw。
0321nobodyさん04/05/25 23:05ID:???
>>320
「C言語」なんていってる素人が何言ってるんだか
0322nobodyさん04/05/25 23:13ID:???
>>321
「D言語」なんて言ってる素人が何言ってるんだか
0323カポコン04/05/25 23:15ID:???
C語って言えってか?俺はそういうのは嫌なんだよ。
いくら2chでも貴様の数倍偉い人が決めた言葉よ?
好みでいいだろ。それとオツムの良さはまた別物。
あとベンチマークすんのはいいけど、
>>237-239みたいにちゃんとした結果出せないと説得力ねーよ。
なんだよ%,%ってTimerクラス使ってるのにそりゃーねーだろ。
所詮2chのウンコ厨だな、そんなんだからいつまで経っても
3流の領域抜け出せねんだよ。あと試すんならunix系入れて試せ。
 素 人 は お ま え 。
0324nobodyさん04/05/25 23:26ID:???
>>319
mb_encode_mimeheader使うのにmb_convert_encodingで変換なんかするからだろ。
0325nobodyさん04/05/25 23:37ID:???
カポコン神襲来
0326nobodyさん04/05/26 00:19ID:???
カポコンって誰?
0327nobodyさん04/05/26 00:21ID:VdU4NQov
皆さんにお聞きしたいのですが、PHPの書籍のなかで
GDを詳しく扱った本はありませんでしょうか?
本の中の1つのコンテンツとして扱っていても結構ですので教えて下さい。
あと、GDを説明しているサイトもできればお願いします…。
0328nobodyさん04/05/26 00:28ID:???
>>326
誰もかまってくれないものだからジサクジエーンで自分を誉め称えるイタいやつ
0329nobodyさん04/05/26 02:01ID:???
>>328
それはお前の見方だろーが。
0330nobodyさん04/05/26 02:12ID:???
結局、神叩きして終わりかよ。
0331nobodyさん04/05/26 02:30ID:???
>>329-330
やあ、カポコン。今夜も来たの? ( ̄ー ̄ )ノ
0332nobodyさん04/05/26 03:31ID:???
>>327
PHPの書籍でGDの詳しいのねぇ。心当たりはないね。
GDは、今は独自パッチがあたったのがPHPに添付されてるけど
ImageMagickと同様、元々外部のグラフィックライブラリだから
PHP以外での使用方法にも探す範囲を広げた方が良いよ。
0333nobodyさん04/05/26 03:33ID:???
カポコンって頭叩いた時の音?
0334nobodyさん04/05/26 03:48ID:???
空っぽだからいい音出すのね。
0335nobodyさん04/05/26 04:08ID:???
>>334
(σ^Д^)σ うまい!座布団2枚!
0336nobodyさん04/05/26 04:16ID:???
>>323
プログラミング言語C 或いは C が妥当か。
あとbenchmarkだが他人様のはアテにせず自分でとろうな。

>>326
アホ共がこぞって使う共用のコテハンってところじゃないの?

>>327
無い。
0337nobodyさん04/05/26 08:15ID:5W/UUmVu
>>324
調べたらphp.iniのほうでデフォルトのエンコーディングがISO-8859-1になってました。
これをEUC-JPに変えて、mb_encode_mimeheaderするまえに文字コードをEUCに変換
させたら、うまくいきましたm(_ _)m
0338nobodyさん04/05/26 09:18ID:s4ZFO6Pq
evalのなかで関数やメソッドの定義をしたいんだけど、PHPでは無理ですか?
0339nobodyさん04/05/26 09:28ID:???
できるよ。テストスクリプト書く手間すら惜しいのか?
0340nobodyさん04/05/26 10:16ID:???
>>336
カポコンは神。
>>337-338
あげるなよ。
0341nobodyさん04/05/26 10:22ID:???
>>1 age進行でお願いします。
034233704/05/26 12:24ID:???
>>338
えっほんとに?

たとえばこういうことがしたいんですが。

class Foo
{
var $_row;
function Foo(&$row) {
$this->row =& $_row;
foreach (array_keys($row) as $key) {
eval("function $key() { return \$this->_row['$key']; }");
}
}
}
$data = array('a' => 1, 'b' => 2);
$foo = new Foo($data);
echo $foo->a();

結果
Fatal error: Call to undefined function: a()

evalにコンテキスト(バインディング)が指定できないから、こういう
のは無理じゃないんですか?
0343nobodyさん04/05/26 12:29ID:???
なんで最初から詳しく書かないんだろうね
0344nobodyさん04/05/26 12:38ID:???
正しい質問の仕方
情報は小出しにして分かりにくく、そして肝心なことは書かない。
0345nobodyさん04/05/26 12:50ID:???
>>344
どっかでそれの長文ver見かけたな。結構おもしろかった覚えがある。
0346nobodyさん04/05/26 12:55ID:???
function $key()
0347nobodyさん04/05/26 13:11ID:???
>>346
なぜこれが動くとか思ってしまったんだろうね彼は
0348nobodyさん04/05/26 13:18ID:???
$var = "a";
eval("
function ".$var."()
{
echo 'hello!';
}
a();
");
a();
034933804/05/26 13:33ID:???
>>346,347
二重引用符が見えませんか。

>>348
グローバルなコンテキストの関数ならできるんですね。
知りませんでした。
035033804/05/26 13:35ID:???
クラス定義をまるごとevalの中に入れればできるような気がして
きました。でもコードが読みにくいですね。ありがとうございました。
0351nobodyさん04/05/26 15:46ID:???
>>337
だからmb_encode_mimeheaderそのものが変換を行えるのだから
前もって変換なんていらんって
0352nobodyさん04/05/26 16:59ID:???
>>323
>C語って言えってか?
C語って何か新しいものか?
普通に考えてC。
まぁ、エンエヌと言うような素人なんだろうなぁ
0353nobodyさん04/05/26 17:05ID:???
カポコンって、googleで仕入れた情報(大半は間違ってる)を自慢気に語って
さらに自演で自分を持ち上げる糞コテでFA?
0354nobodyさん04/05/26 17:05ID:???
現在のディレクトリを取得できないですか。

pwdみたいな。
0355nobodyさん04/05/26 17:13ID:???
自己レス

getcwd()

でできた・・・ゴメンナサイ。ほんとにわかんなかったんだよぉ・・・
0356nobodyさん04/05/26 17:13ID:fjwOYoWg
>>354
http://jp2.php.net/manual/ja/ref.dir.php
0357nobodyさん04/05/26 18:48ID:???
釣りするときってカポコンを名乗ればいいの?
0358nobodyさん04/05/26 18:52ID:???
そうだよ
0359nobodyさん04/05/26 19:00ID:???
カポコンが現れるとカポコンを賞賛するやつも現れる。
カポコンがいないときにはそんなやつはいないのに。
そのこころは?
0360nobodyさん04/05/26 19:08ID:???
自作自演といいたいのだろうが、
いないときにわざわざ話題を振って賞賛するスレじゃねえだろ。
0361nobodyさん04/05/26 19:28ID:???
>>237-239
count(&$arr2) にしたら for が一番速くなった。
ついでにこんなの

$arr4 = array_map(create_function('&$item', 'static $str4 = \'\'; $str4 .= \'>\'; return $str4.$item;'), $arr4);

もやってみたが、これがforに次いで速かった。

しかし、

$arr4 = array_map(create_function('&$item', 'global $leftarrow; static $str4 = \'\'; $str4 .= $leftarrow; return $str4.$item;'), $arr4);

にしたら一番遅くなった。うーん、微妙。
0362nobodyさん04/05/26 20:11ID:???
いいかげんベンチはやめてくれないか
0363nobodyさん04/05/26 20:24ID:???
俺はベンチネタも参考になるし別に構わんと思うが。

>362
やめろというだけじゃなく、かわりのネタを提供汁
0364nobodyさん04/05/26 20:27ID:???
>>363
バカか?お前
ここは雑談スレじゃなくて、質問スレ。
常時ネタが必要なスレではない。
スレ違いをわきまえてほしい
0365nobodyさん04/05/26 20:31ID:???
禿同。なんかラウンジと勘違いしてる香ばしいのが居るな
0366カポコン04/05/26 20:40ID:???
僕に何か質問はあるかな?
0367nobodyさん04/05/26 20:44ID:???
('A` )
0368カポコン04/05/26 21:04ID:???
>>366
0369nobodyさん04/05/26 22:05ID:???
mkdir($dir,0777)

と作っているのに 755 でできてしまいます。
なんででしょうか・・・非常に困っています。
またオーナーも変えたいのですが変えられません。
0370nobodyさん04/05/26 22:18ID:???
>>369
umask()
0371nobodyさん04/05/26 22:23ID:???
>364
このfor/while/foreach云々って、
元は質問から始まった話じゃねえのか?
それだったら、あながちスレ違いとは言えねえと思うがな
なんで狭量なやつばっかなんだろね
0372nobodyさん04/05/26 23:00ID:???
>>370

umask(0);
をしてから実行したらできました!
心より御礼申し上げます。
0373nobodyさん04/05/26 23:07ID:???
連続誠に申し訳ありません。

chownについてなのですが、当方Apacheの実行ユーザとグループを
apache/apache にしています。
これでapacheユーザが作成したファイルのオーナーをrootにしたいの
ですが、これは不可能でしょうか。



0374nobodyさん04/05/27 00:06ID:???
>>371
気に入らないなら出て行けや
0375nobodyさん04/05/27 00:07ID:???
あるディレクトリにphpソース群を配置し、様々なディレクトリにそれらphpのシンボリックリンクを
はって、あたかもそのディレクトリにあるphpソースのように使いたいと思っています。

で、シンボリックリンクを作成するsymlink関数で無事作れたのですが、そのシンボリックリンクに
ブラウザからアクセスしても実行できません。
パーミションは777になっているのにです。

それでsshでサーバに入り、ln -s /templ/hoge.php /aaa/hoge.php とリンクを張ると
ブラウザからも実行できます。
なんででしょう・・・

ちなみに(環境により違うのでしょうが)sshで ls -la すると symlinkで作成したリンクは赤色
ln -s で作成したリンクは青色です。

お願いします。ヒントをください
0376カポコン04/05/27 00:14ID:???
イエーイ!!僕、カポコンどぇ〜〜〜〜〜す!!!
mp(・∀・)qmチェキッラー!!。
0377nobodyさん04/05/27 00:31ID:???
>374
自治厨キモッ
0378nobodyさん04/05/27 07:23ID:XDC/x9QB
使用してるCPUやメモリで変動するってことでいいじゃん。
マターリ憩うぜ
0379nobodyさん04/05/27 08:42ID:???
まぁ PHP の雑談スレなんて存在しないワケだが。
0380nobodyさん04/05/27 09:54ID:???
>>373

`chown root.root file.file`;

とかじゃダメなの?
0381nobodyさん04/05/27 15:58ID:???
>>375
ls -la の結果を自分でよーく見てみるか、
as is で書いてくれると解決しそうなのだが。
0382nobodyさん04/05/27 17:10ID:???
>>377
誤爆か
0383nobodyさん04/05/27 17:28ID:fevNX4WH
PHP4.3.4+MySQL4.0.14でサイトを作っているのですが、
ソースコードをSJISで書いていて、DBもSJIS設定で、

SQLを実行するときに
カタカナの「ソ」などの文字が勝手にエスケープされてしまいます。
(エスケープというか「ソ」の後に「ソ\」バックスラッシュが付く)
これが原因で文末に「ソ」が来たりするとSQLが失敗します。
stripslashesは本来エスケープすべき文字も消してしまうので使えません。

Webで調べてみたところphp.iniのmagic_quotes_gqc=OFFに
すると解決するらしいのですが、実際OFFにしてもまだ解決しません。
(phpinfoでOFFになっていることは確認済み)

他に勝手にエスケープされる要因は考えられるでしょうか
よろしくお願いします。

0384nobodyさん04/05/27 17:32ID:???
だーからSJIS使うなってばよ……
0385nobodyさん04/05/27 18:05ID:???
どんなSQL回転だ
0386nobodyさん04/05/27 18:15ID:???
>>382
0387nobodyさん04/05/27 18:41ID:???
>>377=>>386
自演乙
0388nobodyさん04/05/27 18:42ID:3qJOManL
今からPHPを勉強して覚えたいと思うのですが、何からはじめたらいいかサッパリわかりません。
何を用意して何を最初に学べばいいのでしょうか。
おすすめのサイトや参考書を教えていただけると助かります。
0389nobodyさん04/05/27 18:46ID:???
>>388
赤マンモス本でも読め
今ならPDFで公開されているから無料で読める
URLは自分で探せ すぐわかる
0390nobodyさん04/05/27 18:48ID:3qJOManL
>>389
早速検索かけてPDFファイルを見ております。
分かりやすくまとめられており、私でも勉強できそうです。
情報、ありがとうございます。
0391nobodyさん04/05/27 19:53ID:???
マジだーーー
PHP徹底攻略だよな?
マンモス本ってかなり詳しく書いている上級者向けのじゃん!!(違った?ラクダとはレベル違う?)
それが無料って、すげーな
039238304/05/27 20:07ID:???
>>383 自己解決しました。
addslashesを使ってる代わりにmysql_escape_stringを使うと
上手くエスケープしてくれるようです。
やはり仰せの通りSJISで処理させるのは止めたほうがいいですね^ ^;
まあ仕方のないときのケースということで。
0393nobodyさん04/05/27 20:11ID:???
そもそもSJISで書かなきゃならん事情でもあるの?
PHPを使うなら、出力段階でSJISに変換するのが一番楽だと思うけど
0394nobodyさん04/05/27 20:48ID:???
>>393
エディタがメモ帳しかないとき(プ
0395nobodyさん04/05/27 22:13ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
0396nobodyさん04/05/27 22:22ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
0397nobodyさん04/05/27 22:15ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
0398nobodyさん04/05/27 22:17ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
0399nobodyさん04/05/27 22:28ID:???
http://www.google.com/search?q=javascript%20php%20escape%20urlencode
で検索して、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008315.html
や
http://www.broadband-xp.com/hidesource/escape.html
が見つかったのですが、
> urlencode に相当する JavaScriptの escape を使うと、IE 5.5 などでは、
> % で始まる UNICODEに変換してくれるので、PHP の urldecode で処理できない
とありますが、この逆、つまり、
php内部でurlencode()又はrawurlencode()して、その出力結果をWindowsのIEのJavaScript上で
デコードして表示したいのですが、decodeURI()やunescape()を使用しても英字以外は文字化けしてしまいます。
UTF-8にしてphpでurlencode()した後に、JavaScriptへ渡しても、依然、おもったようにいきません。
エンコード後の文字列が%uとuから始まるようにできないのです。
どのようにすればPHP内部でURL EncodeしたものをJavaScriptでデコードすることが可能でしょうか?
0400nobodyさん04/05/28 00:04ID:???
質問です。
自作関数内で獲得した
pg_numrows(resource result)や
pg_フェチ_array(resource result , int row)
はグローバルスコープですか?
0401nobodyさん04/05/28 00:35ID:???
質問する前にやってみれば分かりそうなモンだが。
というか、やらなくても分かりそうなモンだが。
0402nobodyさん04/05/28 04:29ID:???
質問です。
wikiを利用しているのですが、ページにアクセスすると、

/?PHPSESSID314df6cb256897323032443

みたいのがつっついて思ったページにいけない時があります。
これをはずす設定をgoogle調べたのですが、

session.use_trans_sid を 0 にすればよいのでしょうか?
global_register をoffにするのでしょうか?

ページを読んでもよく理解できませんでした。
どうすればいいのでしょうか?

サーバは、レンタルサーバです。
0403nobodyさん04/05/28 09:15ID:???
>>402
トライ&エラーの精神で頑張りましょう。
0404nobodyさん04/05/28 09:21ID:???
'x'=>'80'

PHP触り始めたばかりなんですが、上のようなものをPHPスクリプトでよく見かけます。
「=>」って矢印の意で使ってるんでしょうか??
0405nobodyさん04/05/28 09:31ID:???
>>404
配列でね。たぶんそうだね。
0406nobodyさん04/05/28 09:32ID:???
>>404
http://www.php.net/manual/ja/language.types.array.php

代わりにマニュアル引いてやったからお駄賃に100円くれ
0407nobodyさん04/05/28 15:57ID:???
phpで、数字を3桁区切りにするにはどうすればよいのでしょうか?
0408nobodyさん04/05/28 16:00ID:???
>>407
>>56-58

040940704/05/28 16:56ID:???
>>408
すまそ。phpってそんな便利だったのか・・・
ありがとうございます。
0410nobodyさん04/05/28 17:13ID:???
>>407
現行スレを検索するくらい、最低限やってくれ
0411nobodyさん04/05/28 17:17ID:???
一応Google検索とスレ内検索はしたつもりなのですが、
数字の先頭に0を付けて桁揃えする関数はありますか?
1を0001とか。
0412nobodyさん04/05/28 17:24ID:???
>>411
あります!
■ このスレッドは過去ログ倉庫に格納されています