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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/11/27(日) 00:07:12ID:eBvjdczp
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辺り
0325nobodyさん2005/12/08(木) 10:30:12ID:???
>>317
array_serch,in_arrayかな

質問なのですがa.txtに
a,k,h,u,g
b,k,x,p,t
j,w,t,a,j



とある場合一行ずつ読み込んでtest[]として配列にするとしますよね。
その後list()とexpload()で、,で分割して変数にしようと思うんですがlistの中って配列でもokですか?
test2[0] => a
test2[1] => k



と出来るかという事です。
後、もし出来るならa.txtをもとに表を作りたいのですが
$filename = "a.txt";
$test2 = array();
$test = file($filename);
for($i=0;$i<$count($fp);$i++){
list($test2)=expload(",",$test[$i]);

foreach($test2 as $value);
echo $value;
}
こんな感じで出来るのでしょうか?でもこの場合二行目のxを表示させたい場合って、
どうやって配列を指定するんでしょう?
$test[1,test[2]]とかorz(適当でごめんなさい)
032622005/12/08(木) 10:33:02ID:???
後BASIC認証でlist()を使って、$idと$pwを作った場合、
この$id,$pwは認証した画面では変数として使えるようですが、他のページで使うには$_SESSIONを使うといけますか?

session_start();
$_SESSION['id'] = $id;
$_SESSION['pw'] = $_SESSION['pw'] = $pw;

で、$id="aiueo" $pw="aaa"で認証した場合は、SESSION指定後、他のページでは
$_SESSION['id'] = "aiueo"
$_SESSION['pw'] = "aaa"

$id="kaki" $pw="bbb"で認証した場合は、SESSION指定後、他のページでは
$_SESSION['id'] = "kaki"
$_SESSION['pw'] = "bbb"

となるのでしょうか?
質問ばかりで申し訳ないですが、授業中気になってしまいまして、どうぞご教授お願い致します。
0327nobodyさん2005/12/08(木) 10:34:25ID:???
>>296
誰か知らない?
0328nobodyさん2005/12/08(木) 10:41:10ID:???
頼む態度を知らん香具師が
0329nobodyさん2005/12/08(木) 10:49:59ID:???
>>325
>>4の7

>>326
$_SESSIONには$idだけ入れとけば認証済みかどうか確認できるんじゃない。

>>327
知らない。自分で作るっていう選択肢はなしなの?
0330nobodyさん2005/12/08(木) 11:58:34ID:???
>>329
即レスありがとうございます。
なるほど、配列の配列はあのように記述するのですね、勉強になりました。

$_SESSIONですが、a.txtを元に表を作り、room1,room2…と待合室のようにしたいのです。
それぞれの部屋に現在入っている人を表示し、入室ボタンをつけ、入室するとその部屋に自分の名前が表示されるというものです。
入室の際、配列に
$_SESSION['id']を追加しようと思うのですが、これだと配列の中身が$_SESSION['id']ばかりになってしまい、上手く認証された人の名前が表示されるのかと心配だったのです。
きちんと、aさん、bさんが入室した場合、
test2[0] = a
test2[1] = b
となるのでしょうか?

またもや質問になってしまいましたが、何卒よろしくお願い致します。
0331nobodyさん2005/12/08(木) 12:14:11ID:???
>>330
$_SESSION['id'][0]
ってすればいいじゃん。
0332nobodyさん2005/12/08(木) 12:17:31ID:???
>>330
aだのtestだの変数名とやりたいことの対応がわかりづらい。変数名つけなおしてくれ。
とりあえず待合室ってやつに誰が入ってるかって情報は別口にファイルとかに保存しとかないと復元できないけど。
$_SESSIONにはそのときにアクセスしているユーザーの情報しか含まれないよ。
0333nobodyさん2005/12/08(木) 12:36:30ID:???
php4.4.2っていつ頃出るの?
0334nobodyさん2005/12/08(木) 12:43:04ID:???
レン鯖がPHP5に上げてくれるみたいだからPHP4はもうイラネ
0335nobodyさん2005/12/08(木) 13:06:23ID:???
どこの鯖が?
0336nobodyさん2005/12/08(木) 13:16:30ID:???
>>331,332

レスありがとうございます。
確かに、例など分かり辛いですよねorzすみません
一度、記述して、出直して参ります。

もし、その時お時間あるようでしたら、よろしくお願い致します。
0337nobodyさん2005/12/08(木) 13:52:12ID:???
forで$iを配列分回して
list($a[$i][0],$a[$i][1],$a[$i][3]…)=explode
0338nobodyさん2005/12/08(木) 13:52:59ID:???
[2]忘れてた
0339nobodyさん2005/12/08(木) 13:56:39ID:???
ん?それは
$a[$i] = explode(…
ですみそうな気が
0340nobodyさん2005/12/08(木) 14:11:38ID:???
>>334
自分でphp5に出来無い時点でダメポ。
0341nobodyさん2005/12/08(木) 14:40:38ID:???
>>340
それは自宅サーバーで運営してない奴全員に対する挑戦か?
0342nobodyさん2005/12/08(木) 15:48:34ID:???
PDOStatement::fetchのFETCH MODEの変更ってどうやるんですか?
マニュアル通りだと
$row = $stmt->fetch(PDO_FETCH_ASSOC);
に対して、
Warning: PDOStatement::fetch() expects parameter 1 to be long, string given in /home/www/test.php on line 49
こんな警告が出てしまいます。

PDOStatement::setFetchModeを使うのかなと
$result = $stmt->setFetchMode(PDO_FETCH_ASSOC);
を追加してみたのですが
Warning: PDOStatement::setFetchMode() [function.setFetchMode]: SQLSTATE[22003]:
Numeric value out of range: unhandled mode; this is a PDO bug, please report it in /home/www/test.php on line 48
こっちはこっちでこんな警告出してきました。

PHP5.1.1です。
03433252005/12/08(木) 15:57:52ID:???
こんにちは、先程質問させて頂いた者です。
トップ画面→ルーム作成画面まで作成してみました。

http://www.uploda.org/file/uporg255946.zip.html

問題点は、
*$_SESSION['id'][$i]の表示がおかしくなってしまう。"yuji"→"y"など、一文字になってしまう。
FAQを参照し、$_SESSION{'id'}{$i} にするも結果は変わらずorz

宜しければ、ご教授願いたいと思います。
よろしくお願い致します。
03443252005/12/08(木) 15:59:23ID:???
失礼しました、パスは「php」です。
03453372005/12/08(木) 16:09:00ID:???
>>325>>337でやると、二行目のXは、$a[1][2]となる。
0346nobodyさん2005/12/08(木) 16:19:45ID:???
>>342
カイハツ段階でNoticeをオフるなよ
0347nobodyさん2005/12/08(木) 16:56:50ID:???
>>343
print_r($_SESSION);
してセッション変数がどう格納されているか確認してみな。
そういうことやらないなら、
丸投げスレに移行すべし。
03483422005/12/08(木) 17:05:47ID:???
>>346
スンマセン。
Noticeも表示されるようにしたら
Notice: Use of undefined constant PDO_FETCH_ASSOC - assumed 'PDO_FETCH_ASSOC' in /home/www/test.php on line 49
警告の他に上記が追加されました。
で、PDO_FETCH_ASSOCの部分をシングルクォートで括ってやったら警告だけが残りました。
0349nobodyさん2005/12/08(木) 17:13:45ID:???
>>348
PDO_FETCH_ASSOCが定義されてないんだから、定義しろ
0350nobodyさん2005/12/08(木) 17:18:54ID:???
>>343
grs.phpの30行目を
$_SESSION['id'] = $id;
に変えて、
create.phpの31行目を
$_SESSION['id']
に変えれ。

$_SESSION{'id'}という書き方はダメ。中カッコは文字列の中から1文字だけ参照するときにつかうもの。配列の場合は必ず角カッコ。
03513422005/12/08(木) 17:26:06ID:???
>>349
納得。
FETCH_ASSOCはPDOクラスで定義された定数だったのね。
解決した、サンクス
0352nobodyさん2005/12/08(木) 18:04:12ID:???
>>351
エラーメッセージはちゃんと読もうね。
0353nobodyさん2005/12/08(木) 23:41:20ID:2fsehRpI
作業に没頭しすぎて遅くなってしまいましたが、
>>337さん、>>347さん、>>350さん ありがとうございました。
教えて頂いた事を参考に、頭を捻りながら作業を進めた結果、
room.txtを元に、各表を作成する事までは出来ました。

しかし、参加ボタンで名前を追加という点で行き詰ってしまいましたorz
参加ボタンを押すと、$_SESSION['id']と、$_SESSION['rate']をroom.txtに追加したいのですが、難しいのです・・・。

[room.txt]
1,2,aaa,2,Dungeon,3,yuji/,1500/

となっており、
rate1700で、idがryuujiさんが参加した場合、
1,2,aaa,2,Dungeon,3,yuji/ryuuji,1500/
1700としたいのです。

http://www.uploda.org/file/uporg256297.zip.html
現在このような感じです。

出来れば、丸投げにしたくないのでアドバイスや解決策があればよろしくお願い致しますorz
予想としては、別にもう一つphpがいるのかなと思うのですが・・・。
もしかして、PHP+MySQL覚えた方が解決までの距離が短かったりでしょうか・・・。



0354nobodyさん2005/12/08(木) 23:42:03ID:???
パスはphpです。
sage忘れすみません;;
0355nobodyさん2005/12/08(木) 23:44:45ID:???
;を二個も付けたらエラーが出ちゃうぞ
0356nobodyさん2005/12/09(金) 00:07:48ID:???
>>355
・・・orzすみません
0357nobodyさん2005/12/09(金) 01:14:54ID:vSvgZQPE
2chのdatログのビューアをphpで作ろうとしています。
フォームから >>1>>2>>3-4 など、参照したい行数を$resで指定して
datから該当の行のコメント部分だけを表示しようとしていますが、
処理が悪く表示が抜けてしまう行があります。<>は実際は半角です。

$res = preg_replace("/(^|)>>/i", ",>>", $res);
$res = substr("$res",1,(strlen($res)-1));
$log_line = split( ",", $res);
$ct = count($log_line);
for($i=0; $i<$ct+1; $i++){
$st = preg_replace("/(^|)>>(\d+)-(\d+)/si","\\2", $log_line[$i]);
$to = preg_replace("/(^|)>>(\d+)-(\d+)/si","\\3", $log_line[$i]);
$on = preg_replace("/(^|)>>(\d+)/si","\\2", $log_line[$i]);
$log_file = "$ls.dat";//該当2chのdatログ
$log_viewer = file($log_file);
if(!ereg("-", $res)){
list($name,$email,$date,$com) = split( "<>", $log_viewer[$on-1]);
echo "$com<br><br>";
}
elseif($st && $to){
for($h=$st-1; $h<$to; $h++){
list($name,$email,$date,$com) = split( "<>", $log_viewer[$h]);
echo "$com<br><br>";
}
}
}

既知の問題としては、>>1>>2>>3-4で1と2が落ちて3と4しか表示されない、
(>>1>>2>>3>>4や>>1-4ではとりあえず表示されます)
<br>が最後に4つ表示される。などです。
いろいろと変数を表示させたりしてやってきましたが、ここまでで手詰まりました。
最初からコーディングの悪さはあると思いますが、どなたかご教授ください。
0358nobodyさん2005/12/09(金) 02:36:11ID:???
ざっと見た限りではなんか変そうなんだが・・・・。詳しく見るのもアレなので、
とりあえず $ct = count($log_line); の行の前あたりに

$a=array(); foreach($log_line as $b) $a[]=urlencode($b); print_r($a);

を加えて$log_lineの中身がどうなっているかチェック。
他にも怪しそうな変数があったら同様にチェック。
変数の内容を確認するのはデバッグの基本。

あと×「教授」→○「教示」
0359nobodyさん2005/12/09(金) 02:56:48ID:???
>>358さん
使えるものしか使っていないのが一番の原因だとは思いましたが
おっしゃるように$log_lineを調べて、if(!ereg("-", $res)の部分を潰して
書き替えて、なんとか表示されるようになりました。
ご教示ありがとうございました。
0360nobodyさん2005/12/09(金) 03:19:25ID:???
>>341
レン鯖借りればいいじゃん。php動かすのに安いの使ってる方がオカシイ。
0361nobodyさん2005/12/09(金) 04:39:41ID:???
>レン鯖がPHP5に上げてくれるみたいだからPHP4はもうイラネ
>自分でphp5に出来無い時点でダメポ。

この流れだと、自分でサーバーの設定弄れるって事なんじゃないの?
レン鯖でも専鯖でも無い限りそれはムリポw
0362nobodyさん2005/12/09(金) 07:55:26ID:???
>>342
PDO_FETCH_ASSOC

PDO::FETCH_ASSOC
0363nobodyさん2005/12/09(金) 09:15:36ID:???
>>362,342
http://www.php.net/README_UPGRADE_51.php#extensions2
これだな。
0364nobodyさん2005/12/09(金) 14:13:07ID:???
>>362
日本語オンラインマニュアルの更新が遅いんだよな
最新のchm版マニュアルは定数の部分がPDO::〜に変更されていた
0365nobodyさん2005/12/09(金) 14:17:30ID:???
PDO::FETCH_ASSOC

PDO_FETCH_ASSOC

PDO::FETCH_ASSOC
0366nobodyさん2005/12/09(金) 14:24:52ID:???
楽天のシステムはPHP3で書かれているらしい
0367nobodyさん2005/12/09(金) 14:26:23ID:???
工エエェェ(´д`)ェェエエ工
0368nobodyさん2005/12/09(金) 15:00:52ID:???
>>353
全然意味がわからん
0369nobodyさん2005/12/09(金) 16:50:56ID:???
>>368
同意
0370nobodyさん2005/12/09(金) 21:15:22ID:???
$referer = $_SERVER['HTTP_REFERER'];
echo $referer;
携帯用スクリプトなんですが?mode=sourceを表示した時に前のページで取得したリファラのURLのソースを表示したいんですがどうすればいいでしょうか?
どうしても?mode=sourceの前つまりスクリプト自身のソースを吐くので
0371nobodyさん2005/12/09(金) 22:04:41ID:Gto+rkho
正規表現なり何なりで、連続する同じ文字を検出することは可能ですか?
例えば、5文字以上連続して同じ文字が入力された場合、その文字を取り出す。とか。
自分なりに調べてみましたが、それらしい情報は見つからず、、、
自分でもいろいろ考えましたが、ぐるぐるループさせる方法しか浮かびません…。
0372nobodyさん2005/12/09(金) 22:39:46ID:???
>>370
意味がわからない。
0373nobodyさん2005/12/09(金) 22:42:01ID:???
>>372
同意
0374nobodyさん2005/12/09(金) 22:44:07ID:???
>373
同意


>371
>ぐるぐるループさせる方法

それでいいんじゃね
0375nobodyさん2005/12/10(土) 00:07:34ID:???
>>371
preg_match('/(.)\1{4,}/',$str,$matches);
03763712005/12/10(土) 00:24:34ID:???
>>375
ありがとうございます!
このような書き方があったんですね。勉強になりました。
0377nobodyさん2005/12/10(土) 01:13:39ID:???
phpを勉強しようと思うので、入門用の本を紹介して下さい。
プログラム経験はflashのactionscriptでショボイゲームが作れる程度です。
よろしくお願いします。
0378nobodyさん2005/12/10(土) 01:51:28ID:???
>>377
http://www.php.net/manual/ja/
いやホントに、煽りで無くマジレス。
0379nobodyさん2005/12/10(土) 04:39:54ID:???
>>377
ついでにお前はくだ質スレの存在を知れ。
03803722005/12/10(土) 04:55:08ID:???
>>370
流れは

【A】
1.ユーザが<<URL>>に存在するリンクをたどり クエリmode=source を伴って当該スクリプトにアクセスする
2.当該スクリプトはリンク元をHTTPリファラから取得する
3.当該スクリプトはリンク元のソースを表示する

【B】
1.ユーザが<<URL>>に存在するリンクをたどり クエリmode=source を伴って当該スクリプト1にアクセスする
2.当該スクリプト1はリンク元をHTTPリファラから取得する
3.当該スクリプト1はスクリプト2への遷移を提供する
4.スクリプト2は先ほど取得したリファラを何らかの形で受け継いでいて、<<URL>>のソースを表示する

どっちかだと思うけど。それが判らない。

次に、「ソース」ってのはPHPのソースコードをさすのか
それともHTML(PHPとかの出力)のソースコードをさすのか。これもわからない。

携帯ということだけどキャリアはどこ?ドコモはリファラとれないよ?
0381nobodyさん2005/12/10(土) 05:06:16ID:???
>>379
むしろ、こっちに誘導してやってよ。

PHP関連の書籍(但しPHP出版系お断り)第2版
http://pc8.2ch.net/test/read.cgi/php/1117066073/l10
0382 ◆HewaraiHpQ 2005/12/10(土) 06:16:01ID:???
>>380
後者です。
他のスクリプト(HTMLソースを表示するページ)に前のページで取得したリファラを送る方法が謎なんですよ。
機種はauです。
リファラを利用したお気に入り規制突破スクリプトを作っていてソース表示をいれようと。
0383 ◆HewaraiHpQ 2005/12/10(土) 06:23:28ID:???
>>380
すいません。
前者の方です。
test.phpで前に表示していたページのリファラを取得して表示。
次にソース(ボタン)をクリックするとmode=sourceに移動その時に取得したリファラをそのまま受け渡し。
そしてHTMLソースを表示。
どうにも受け渡しができないんですよ。
0384nobodyさん2005/12/10(土) 06:58:43ID:???
>383
なにがいいたいのかさっぱりわからん
むいてないんじゃない?
0385nobodyさん2005/12/10(土) 07:30:30ID:???
>>383
受け渡しが出来ないって渡してないから受け取れないだけだろ
?mode=source&url=$_SERVER['HTTP_REFERER']
で渡したらいいんじゃないの
0386nobodyさん2005/12/10(土) 07:42:38ID:???
preg_grepの第一引数に
/$_SERVER['USER_AGENT']/
を指定したいんですが
モデファイ?4(よく覚えてなくてすいません)
とかいうエラーが出てしまいました。正規表現(()辺り?)の間違いだと思うのですが、どうにかして回避できませんでしょうか?
0387nobodyさん2005/12/10(土) 10:43:31ID:???
>>386
UAには普通"/"や"."や"-"が含まれるから正規表現のパターンにするには無理があるだろう。
0388nobodyさん2005/12/10(土) 10:45:34ID:???
quotemeta
0389nobodyさん2005/12/10(土) 12:26:23ID:???
>>386
387のいうことももっともだが、
その前に
>モデファイ?4(よく覚えてなくてすいません)
こういうことではいつまでたってもダメじゃん。
エラーが出たらそれが何を意味するか理解するようにしようぜ。
0390nobodyさん2005/12/10(土) 12:34:48ID:???
>>387
???別に無理でもなんでもないんだが…
03913862005/12/10(土) 12:41:17ID:???
>>387-390
返事ありがとうございます。とりあえずquotemetaとエラー文でググってみます。
0392nobodyさん2005/12/10(土) 12:42:01ID:???
>>390
387はそのまま$_SERVER['USER_AGENT']を指定するのは難しいといいたいんだろう。
ま、エスケープしろってこった。
0393nobodyさん2005/12/10(土) 12:55:49ID:???
>>386
おそらくMozilla/4.0の/で正規表現パターンが終わって次の4が修飾子と判断されてエラーになった
>>390
quotemetaしてstr_replace("/", "\/",
すれば出来るけど>>386には無理
そもそも正規表現使う必要あるのか疑問
やりたいことはarray_count_valuesとかじゃないのか
0394nobodyさん2005/12/10(土) 13:04:59ID:???
preg_qoute($str, '/')
03953932005/12/10(土) 13:07:38ID:???
>>394
にゃるほど
そんな関数があったのね
0396nobodyさん2005/12/10(土) 14:10:55ID:???
これがPHPクオリティ
0397nobodyさん2005/12/10(土) 14:30:05ID:???
$w = array('あ','い','う');

foreach ($w as $t){
$_POST['abc'] = mb_ereg_replace($t,'',$_POST['abc']);
}

こういう感じでpostからの入力文字を制限しようと考えているのですが
どういう訳か$wの最後の配列の文字「う」しか削除されません。理由が
全くわからないのですがヒントを頂けないでしょうか?。
03983862005/12/10(土) 14:48:38ID:???
なるほどいろんな関数がありますね。参考になりました、ありがとうございます。
0399nobodyさん2005/12/10(土) 15:08:21ID:???
>>397
コードには問題がなさそうだからきっと凡ミス

あと、単純な置換なら正規表現関数を使う意味がないぞ
$result = mg_ereg_replace('[あ-う]','',$_POST['abc']);
0400nobodyさん2005/12/10(土) 16:00:08ID:???
>>399
print_r($w)してもecho $tしても予想通りの結果がでるしわからないんですよね。
最初は文字コードがsjisの影響なのかと思ってstr_replaceからmb_ereg_replaceに
してみたりしたのですが同じでした(^^; という残骸です。
0401nobodyさん2005/12/10(土) 16:08:33ID:???
>>400
どうせこんな感じのミスじゃない?
$input = "あいうえお";
$w = array('あ','い','う');

foreach ($w as $t){
$result = mb_ereg_replace($t,'',$input);
}
echo $result;
0402nobodyさん2005/12/10(土) 16:15:08ID:???
(゚∀´)bナイス エスパリング
0403nobodyさん2005/12/10(土) 17:18:45ID:???
>>401
それも考えたんだけどインとアウトは同じ$aなんですよ(^^;

$a = mb_ereg_replace($t,'',$a);
04043972005/12/10(土) 17:25:48ID:???
結局、$_POST['abc']を後で使っているのですから置き換わるなら全て置き換わるのが
普通だと思うのですが上手く行かない。これは人が作った物に手を加えているので
なにか癖があるのかも知れません。extractなんて使ってるスクリプトですし・・・。
ちゃんとextractを使われる前に手を加えているんですけどね(^^;。

お騒がせしました。
0405nobodyさん2005/12/10(土) 18:01:06ID:???
>>397
mb_regex_encoding は確認しましたか?
str_replace で期待通りに動かない場合は
入力データがスクリプトのエンコーディングと違うかも知れません。
04063972005/12/10(土) 19:30:32ID:???
うはっ、(/ω\)恥ずかしい

正しくは
$w = array('あ','い','う');
ではなくて $w を データファイルから拾得していたのです。
ずっとUTFばかり使っていたからsjisが\r\nなのを忘れていました。
最後だけ一致してたのは最後に改行がないからでした(^^;。

ご迷惑をおかけしました(*- -)(*_ _)ペコリ
0407nobodyさん2005/12/11(日) 03:04:54ID:???
セッションってどのくらい容量を保存できますか?
画像データも保存できるのでしょうか。
0408nobodyさん2005/12/11(日) 03:18:46ID:???
>>407
ハァ??
0409nobodyさん2005/12/11(日) 03:23:49ID:???
>>407
imageCreateとかの戻り値なら無理だね。
ファイルやDBに保存しておいて、それに関する情報(ファイル名とか)をセッションに保存したらいいんじゃない。
0410nobodyさん2005/12/11(日) 03:24:01ID:???
下らねえな
ああ下らねえよ
0411nobodyさん2005/12/11(日) 03:30:43ID:???
>>408 >>410
くだらないレスはくだしつでしてね。
0412nobodyさん2005/12/11(日) 04:24:32ID:???
レス番間違ってるぞ
0413nobodyさん2005/12/11(日) 05:00:28ID:???
>>412
誘導してやんなきゃわかんねーのかよw

【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
0414nobodyさん2005/12/11(日) 05:36:26ID:???
なんかDATが壊れてる奴がいるな。
0415nobodyさん2005/12/11(日) 09:46:55ID:???
たしかに。荒らすだけが目的の書き込みは勘弁してほしいものだな。
0416nobodyさん2005/12/11(日) 19:18:41ID:???
質問です
下のような感じでメール送信してるのですがsubjectが文字化けしてしまいます
$subject = mb_convert_encoding($subject,"iso-2022-jp");
mb_language("Japanese");
mb_send_mail("$sendto","$subject","$message","From: $from")
なぜでしょうか?
0417nobodyさん2005/12/11(日) 19:35:55ID:XiVVGiBU
class Child extends Parent{
}
class Parent{
}
こういう風に、親クラスを後に書いてもエラーにならないけど、
class Child extends Parent{
}
class Parent implements Granpa{
}
こういう風に、親クラスにインターフェイスをインプリメントしたとたん、
親→子の順番に書かないとエラーになる。
これって仕様?
0418nobodyさん2005/12/11(日) 19:44:35ID:???
>>416
MIMEヘッダにJISとかは使えないのでBase64でエンコードする必要がある。
mb_encode_mimeheader使ってみ。
0419nobodyさん2005/12/11(日) 19:51:06ID:???
>>417
仕様だと思う。ParseKitを使えば理由がわかると思うよ。
たしかimplementsがついてるとearly bindingが起こらなかった。・・・のは遠い記憶かもしれない。
0420nobodyさん2005/12/11(日) 20:06:56ID:???
>>417
class A {}
class C extends B {}
class B extends A {}
なら大丈夫だけど
class C extends B {}
class B extends A {}
class A {}
だとダメなところを見ると、たぶん2重に先読みはしてくれないってことだと思われ。
むしろ1クラス1ファイルで__autoload使って管理すれば無問題なんだけどね。
0421nobodyさん2005/12/11(日) 20:48:17ID:???
PHPは多重継承は出来ないはずだけど
0422nobodyさん2005/12/11(日) 21:06:51ID:???
>>421
だけど・・・?
逆接の接続詞だから、「実はできるんだ」とかくるのかな?
0423nobodyさん2005/12/11(日) 21:13:58ID:???
いや。
マニュアルには出来ないって書いてあるから
class A {}
class B extends A {}
class C extends B {}
こういう継承は出来ないと思っていた。出来るんだ。
0424nobodyさん2005/12/11(日) 21:22:14ID:???
はい多重継承の意味100回ググれーここ試験に出るぞー
0425nobodyさん2005/12/11(日) 21:31:14ID:???
>>423
親クラスを同時に2つ継承することはできないよ。
C++とかだと extends A,B ってな感じにやるやつね。
親・子・孫 ってな形はOKよん。

>>424
ググってみれば分かるけど、多重継承って言葉の使われ方の混乱スゴス。
親子孫形式を多段継承とかに統一されていればここまで酷くなかったのかなぁ。
■ このスレッドは過去ログ倉庫に格納されています