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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
06966942005/08/26(金) 14:20:10ID:???
自己レス
FORMタグに「enctype="multipart/form-data"」を入れたらアップロードできました。
とりあえずこれで行こうと思います。てかマニュアルに載ってなくね?

>>695
俺はDBが好き。
0697nobodyさん2005/08/26(金) 14:22:26ID:???
>>694
<form enctype="multipart/form-data" action="_URL_" method="POST">
0698nobodyさん2005/08/26(金) 14:28:58ID:???
マニュアルに載ってるのはここくらいかな。例の部分。
ttp://www.php.net/manual/ja/features.file-upload.php

RFC 1867 - Form-based File Upload in HTML
つー決まり事があって、その中でenctypeの指定の仕方が決まってる。
0699nobodyさん2005/08/26(金) 14:52:32ID:???
>>696
ファイルアップロードのenctypeにmultipart/form-dataを指定するのはHTMLの決まりであってPHPは関係ない
0700nobodyさん2005/08/26(金) 16:08:45ID:wVCDYq5x
どなたか教えてください。
リンクにカーソルを乗せると、リンクの説明など文字を出すことができますが、
カーソルを乗せたときに、そのリンク先のファイル更新日付を出すにはどうすれば
よいですか?

よろしくお願いします。
0701nobodyさん2005/08/26(金) 16:24:01ID:???
>>699
694ではないが、PHPは関係あると思う。
アップロード出来ない状態が既に関係している。
0702nobodyさん2005/08/26(金) 17:05:10ID:???
>>701
PHPに限らずPerlでもJavaでもRubyでもPythonでもCでもenctype="multipart/form-data"が無いとアップローで出来ないから
0703nobodyさん2005/08/26(金) 17:15:08ID:???
>>701
html4.01の仕様
ttp://www.w3.org/TR/html401/interact/forms.html#adef-enctype
input type="file"を使う時は enctype="multipart/form-data"を使え、とある。
0704nobodyさん2005/08/26(金) 18:20:12ID:???
んなことどうでもいいし、誰でも知ってる。次の話題へどうぞ。
0705nobodyさん2005/08/26(金) 18:44:49ID:???
>>704
701乙
0706nobodyさん2005/08/26(金) 19:05:04ID:???
つまらんw
0707nobodyさん2005/08/26(金) 20:28:52ID:???
csvから取り込んだデータを一行づつ配列入れて

array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
array ( [0] => あ [1] => い [2] => う [3] => え [4] => お )
 
その後、すべての行をさらに配列の中に入れるには

array (
array[0] ( [0] => a [1] => b [2] => c [3] => d [4] => e ),
array[1] ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ),
array[2] ( [0] => あ [1] => い [2] => う [3] => え [4] => お )
)

どのようなソースを書けば良いのでしょうか?
0708nobodyさん2005/08/26(金) 22:34:35ID:???
>>707

$fp = fopen("test.csv",'r');
flock($fp, LOCK_EX);
while(!feof($fp)){
  $data_line = explode(",",chop(fgets($fp)));
  $data_all[] = $data_line ;
}
flock($fp, LOCK_UN);
fclose($fp);
//print_r($data_all);
0709nobodyさん2005/08/26(金) 23:12:32ID:???
>>700
そのリンクの説明のところに、
ファイル更新日付を書けばいいんじゃないの。
filemtime
0710nobodyさん2005/08/27(土) 00:07:37ID:???
偉大なる>>708さま。707です。
ありがとうございます。
0711nobodyさん2005/08/27(土) 03:39:08ID:???
>>709
できました。ありがとうございます!
0712nobodyさん2005/08/27(土) 04:17:13ID:???
>>707です。
>>708のソースで、私の利用している鯖では
PHPのバージョンが古いためなのか
4行目のfgets($fp)をfgets($fp,データ長)
としないとエラーが帰ってきました。
0713nobodyさん2005/08/27(土) 07:36:32ID:???
>>712
$data_line = fgetcsv($fp, 1024);
というのもある
0714nobodyさん2005/08/27(土) 10:38:52ID:???
>>712さんどうもです。
カンマ区切りのCSVファイルには
$data_line = fgetcsv($fp, 1024);
タブ区切りの時には
$data_line = explode("\t",chop(fgets($fp)));
と使い分けてみます。
0715nobodyさん2005/08/27(土) 11:34:09ID:???
>>714
$data_line = fgetcsv($fp, 1024, "\t");
というのみある
0716nobodyさん2005/08/27(土) 11:48:58ID:???
とりあえず、マニュアルを嫁って事だな
ttp://jp.php.net/manual/ja/function.fgetcsv.php
0717nobodyさん2005/08/27(土) 12:14:10ID:???
くだらねぇ質問です。
PHP5をWin上でApache2のモジュール版として動かしているとき、__destructの中では一切ファイルが開けませんでした。
CLIだと__destructの中でもちゃんと開けました。
これは一体どういうことですか?
マニュアルのどこかに書いてあったら教えてください。
0718nobodyさん2005/08/27(土) 13:01:17ID:???
>>717
ヒント

function __destruct() {
  echo getcwd();
}
0719nobodyさん2005/08/27(土) 14:49:06ID:???
>>707です。
715-716さま
ありがとうございます。
0720nobodyさん2005/08/27(土) 16:53:49ID:???
PHPの日付の計算について質問です。
DBにDATE型で登録してあるデータはYYYY-MM-DDという形式になっていますが、
たとえば今日の日付と一致するかどうかは if ($col["date"] == date("Y-m-d")) で判定できますが、
今日以前のものかどうかを判定するのにたとえば if ($col["date"] < date("Y-m-d"))で判定できるのでしょうか?
試したところ問題なく動作しているように見えるのですが、これでいいのでしょうか?
YYYY-MM-DDやYYYY/MM/DDという形式のデータ同士の比較はPHPは対応していると考えてよいのでしょうか?
0721nobodyさん2005/08/27(土) 19:37:51ID:???
>>720
文字列としての比較になるけど、問題はなし。
0722nobodyさん2005/08/27(土) 20:54:31ID:???
ローマ字で
 aiueonn
と入力すると
 あいうえおん
と返してくれるライブラリーってないですか?

Javascriptでは見たことあるのですがPHPでないですかね?

宜しくお願いします。
0723nobodyさん2005/08/27(土) 22:08:56ID:oI14vExU
ここでこのようなお願いをするのもどうかとは思いましたが・・・
私にはPHP等のプログラミングは不可能と判断しまして、お願いがあります。
PHP+DBで小規模なシステムを製作して頂ける親切な方おられないでしょうか?
勿論ある程度の謝礼は致します。
あと製作後のクレームに関してもノークレームと言う条件でも構いませんので
どなた様かご協力頂ける方おられませんでしょうか??
宜しくお願いします。
もしやっていただけそうな方いましたらメール下さい。
値段的な交渉とシステムの構造をご説明致します。
[email protected]
0724nobodyさん2005/08/27(土) 22:14:55ID:???
>>723
予算を書いてよ。
0725nobodyさん2005/08/27(土) 22:17:47ID:???
>>723
恐らく連絡される人みんなが聞く事になると思いますが
サーバーのOSや、サーバーの所有者は誰なのかも
明記しておくと余計な説明の手間が省けていいかと思います。
サーバーのOSは何を使っているのか、開発者はサーバーを触れるか
(レンタルサーバーだと自由に出来ないですよね)
とか結構大事な問題ですので。
0726nobodyさん2005/08/27(土) 22:18:26ID:???
>>723
マルチですよ
0727nobodyさん2005/08/27(土) 22:23:16ID:oI14vExU
>>724
>>725
はい、まずは予算なんですが10万円程でお願いしたいと思ってます。
それとサーバーなんですが、一応エクスビットと言うところの
レンタルサーバーでCGI・PHP・は可能でDBも2つ作成できるとの事です。
他に詳しい環境等お聞きする事何かありますでしょうか??
0728nobodyさん2005/08/27(土) 22:25:58ID:oI14vExU
>>726
マルチって言うのはどう言う事でしょうか??
すみませんがあまりプログラミングの事解らない物で、
すみませんが教えて頂けますでしょうか?
0729nobodyさん2005/08/27(土) 22:34:55ID:???
メアドで検索してみた。。。

☆えな♪
[email protected]
2005/04/30(土) 09:50:31 ID:SSF+EUWC

あなたなら夢の100万円と現実の20万円どちらにしますか?
ここからの情報はあなたにとって100%確実に収入になる情報です。
「またその手の話しかぁ!」と思う方は見なくて結構です。
少しでも気になるのであれば見て頂くと納得してもらえるでしょう。
ttp://2bo.cc/affiliate/scripts/t.php?a_aid=1494&a_bid=3
0730nobodyさん2005/08/27(土) 22:40:02ID:oI14vExU
>>729
これが何か問題ありますか??
だいぶ前に何も解らずにやっただけの事柄ですけど、
誰にだって失敗や興味って言う事はありますからね。
今はやってませんし、むしろあなたみたいにメールアドレスから
人の情報を公開する方が悪質では??
まあ私は子供ではないのでこれ以上の事はいいませんが!!
0731nobodyさん2005/08/27(土) 22:52:13ID:???
626 名前:nobodyさん[??] 投稿日:2005/08/25(木) 21:33:57 ID:???
何処に書き込みしたら良いか解らないので、
ココにも書き込みさせて頂きます。
実はPHPについて私自身今から勉強しても
かなりの時間がかかるかと思いまして、
って言うか多分無理に等しいと思い、
どなたか親切な方に小規模なシステムを製作
して頂きたいのですが、ダメでしょうか??
勿論報酬は致します。交渉させて下さい。
もしやって頂ける方おられましたらお願いしたいのですが?
ノークレームと言う条件で構いませんので!!
詳しい内容はやって頂ける方がおられましたらご説明
致しますので、宜しくお願いします。
0732nobodyさん2005/08/27(土) 23:02:13ID:???
>>723

>>588
>>598-605
という流れになっていたと思うのですが。
ここに戻ってきたという事は
「PHPでオブジェクト指向プログラミング」スレでも断られたようですね。
0733nobodyさん2005/08/27(土) 23:10:26ID:???
うん、面白い展開だ。
0734nobodyさん2005/08/27(土) 23:18:11ID:oI14vExU
結局こちらで製作依頼するのはやはり厳しい事なんでしょうか?
やって頂けない理由か何かあるのでしたら、教えて下さい。
私的には、お金の方は製作前に半金と製作後に残金と言う形で
きっちりお支払させて頂くのですが。値段的にもやはり難しい
んでしょうかね??
0735nobodyさん2005/08/27(土) 23:21:23ID:???
「こんなCGI作ってください」スレにもあった…
0736nobodyさん2005/08/27(土) 23:32:00ID:???
>>734
まじめな話。きちんと業者に頼めば良いじゃない。

つか、ビジネスなめてない?社会人?
0737nobodyさん2005/08/27(土) 23:40:21ID:???
>734
可哀想だからマジレスすると、難しいと思います。

・案件の規模が分からないけど、とにかく予算が低すぎます。
・製作前半金と製作後残金って、ゴルゴ13か何かですか?w 
 他人と仕事したことあります?
・こういう匿名掲示板で仕事の依頼をする非常識さに気づけない
 人間と仕事をするのは不安です。
0738nobodyさん2005/08/27(土) 23:45:19ID:oI14vExU
>>736
真面目な話。
なら君はビジネスをどう捕らえてるの?????
業者に頼めば安いとこで16万だったわ!!
でも10万で個人的に取り引きするなら相場じゃねぇ〜の!!
俺が何をナメてるのか教えてよっ??
0739nobodyさん2005/08/27(土) 23:48:59ID:???
>738
じゃあこんなところでうだうだ書き込みしてねえで
その業者に16万で頼めや。めちゃめちゃ安いじゃん。
頭沸いてんじゃねえか?
0740nobodyさん2005/08/27(土) 23:49:52ID:oI14vExU
>>737
私はこのような形で仕事依頼した事無いから私も不安なのは解りますか?
ですから着手半金と言ったのですよ。
もし金額が少ないならまずメールでシステムお伝えしますから、
金額提示して下さい。納得いけば、前払いしますから!!
0741nobodyさん2005/08/27(土) 23:53:32ID:oI14vExU
>>739
なぜ人を中傷するような言葉が出るのですか??
私は解らないから聞いただけですから・・・
あまり熱くならないで下さいね。
お邪魔したようなので、業者に頼みます。
すみませんでした。
0742nobodyさん2005/08/27(土) 23:54:12ID:???
>>734
>>588 のシステムだとすると、10万てありえない…。20でも安い。
こちらのリスクも考えて、30からが現実的だけど…。
素直にその製作会社に頼みなよ。ありえない安さだよ。
0743nobodyさん2005/08/27(土) 23:55:24ID:???
>>740
業者に頼んで16万の見積もり提示受けたんでしょ。
それで納得しなかったからここにいるって事は、
結局16万以上は払えないってことだそ。
どんなシステム要件かは知らんが。
0744nobodyさん2005/08/27(土) 23:57:09ID:oI14vExU
>>742
そうでしたか!!
解りました。大変お騒がせしてすみませんでした。
このように言って頂けると解りやすかったのですが・・・
なぜか熱くなって噛み付いてくる方がいるもんで困りました。。。
では本当に有難う御座いました。
失礼致します。
0745nobodyさん2005/08/27(土) 23:58:08ID:???
>>741
なぜ、ここでどんなシステムなのかを明かせない?
「PHP+DBで小規模なシステム」だけでは金額面については結論でない。
で、「メールをくれれば教えます」ってあたりに怪しさが漂うから、
みんなあなたを胡散臭く思っているんですよ。
07467372005/08/27(土) 23:58:13ID:???
>740
うーん。自分はフリーなんでどんな仕事でも喜んで
お請けしたいと言うべきところなんですが、どんな
に小規模だったとしても16万では作れません。その
見積もり出した業者に頼むのがよろしいかと。破格
だと思います。>>742さんの言ってるように、自分も
最低でも30からかな。

16万でも納得がいかないなら、情報系の大学で
学生さんでも捕まえてみたらどうでしょう。
0747nobodyさん2005/08/28(日) 00:03:17ID:???
>なぜか熱くなって噛み付いてくる方がいるもんで困りました。。。
なぜ噛み付かれるか本当に分からない?
非常識だからです。
常識が分からない人間とは組めないよ。
トラブルが目に見える・・・。
0748nobodyさん2005/08/28(日) 00:04:03ID:oI14vExU
皆さん本当に有難う御座いました。
大変参考になりました。しかしなぜ業者は16万と言う見積もりを
提示したのでしょうかねww
まあ一度その業者にも再度打ち合わせして確認してみます。
お騒がせして本当にごめんなさい。
失礼致します。
0749nobodyさん2005/08/28(日) 00:08:49ID:ojUxO5Uv
>>747
本当にすみませんでした。
常識、非常識は解りますが、
初めての事だったんで・・・
無神経な事言って御免なさい。
皆さんの行った事を参考にやって行きますので!
0750nobodyさん2005/08/28(日) 00:11:38ID:???
>ぜ業者は16万と言う見積もりを
赤だろうがとにかく案件の数を増やしたい所もあるだろうからね。
それぞれの業者の思惑があるんでしょう。
激安な業者には激安な理由があるかも知れないので、気をつけて。
不測の事態に対応してくれなかったり、してくれても遅いとか、
追加料金がかかるとか。

制作系の金額なんてあってないようなものだけど、
ビジネスの金額って安心を買うためのものだと思うよ。
0751初心者2005/08/28(日) 01:21:24ID:5+BoFtHP
例えば、phpを使ってファイルの4行目から6行目までを書き換える時などは、どうすればよいのでしょうか?
0752nobodyさん2005/08/28(日) 01:34:08ID:???
〜行目ってサクッと言ってしまってるけど、
実際のファイルの中では、改行コード(\r or \n or \r\n)があるだけなんよ。
つまり、例えば4行目が始まる場所を見つけるにはそれより前に改行コードを3個探すという作業が必要になる。
また、書き換えるつーのも全体の文字数が変化するようなものだったら、
その書き換え部分以降を全て書き直す必要がある。
そういう事を踏まえた上で、、、面倒なので煙草吸ってから書く。。。
0753初心者2005/08/28(日) 01:37:53ID:5+BoFtHP
宜しくお願いします。
0754nobodyさん2005/08/28(日) 01:38:07ID:???
>>738
ビジネスってのはいかに信用を担保するかだよ。おばかさん。
0755nobodyさん2005/08/28(日) 02:02:16ID:???
>>752続き
まぁ、そうは言っても「〜行目を」って使い方が多いので、
一行をまるごと引っ張ってくる関数がいくつかある。
fgets()は1行を取得できる。(マニュアルに例あり)
それでも生ぬるいって場合は、file()を使ってファイル全体を配列(行単位)に取得できる。
そうやって取得し必要な場所に変更を加えた文字列をファイルに書き込めば修正できたことになる。

fgetsを使った場合は、
while(略){ fgets()で読み込み; if(修正行かどうか){ 修正; } fwrite()で別ファイルに書き込み; }
別ファイルを元ファイルにrename;

fileの場合は、まぁ説明しなくてもわかるべ。ガーと読んで修正してガーっと書き込む。
0756nobodyさん2005/08/28(日) 02:20:27ID:???
夏も終わりになると頭湧いたヤシも出てくるだろうな。
0757nobodyさん2005/08/28(日) 09:25:52ID:???
htmlから題名のみ抽出し表示するものを作っています。
どうしてもエラーが出てしまいます。

itemauc.cgi?mode=view&no=7777">題名</a></td>
だとすると題名のみ抽出したいのです。
ご教授お願いします。

<?php
$InputFile = "http://*********";
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
$fp = fopen($InputFile, "r");
if ($fp == FALSE) {
echo "error";
exit();
}

while (!feof($fp)) {
$s = fgets($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for ($i = 0; $i < $n; $i++) print "・" . $ar[$i][2] . "<br />\n";
}
fclose($fp);
?>
0758nobodyさん2005/08/28(日) 09:33:29ID:???
>>757
>どうしてもエラーが出てしまいます。

どんなエラーです?
echo "error"; ?
0759nobodyさん2005/08/28(日) 09:34:29ID:???
>>758
正規表現おかしくない?
07607572005/08/28(日) 09:50:13ID:???
Parse error: parse error, unexpected ')'というエラーがでます。
正規表現おかしいですか?
0761nobodyさん2005/08/28(日) 10:18:09ID:???
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
を
$Pattern = "/(itemauc.cgi?mode=view&no=.*\">)(.*)(<\/a><\/td>)/";
にしたらどう?
(「&no=.*">」の二重引用符をエスケープする「&no=.*\">」)
0762nobodyさん2005/08/28(日) 10:23:36ID:???
エスケープするなら、[?]だろ
07637612005/08/28(日) 10:28:32ID:???
>>762
え?そうなの? 正規表現の方じゃなくPHPのエスケープだよ?
07647572005/08/28(日) 10:42:26ID:???
>>761
エラーはでなくなりましたが何も表示されないです。
07657612005/08/28(日) 11:00:35ID:???
>>762
おっしゃる意味わかりました。

>>757
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
を
$Pattern = "/(itemauc.cgi\?mode=view&no=.*\">)(.*)(<\/a><\/td>)/";
にすると上手くいった。
「&no=.*">」の二重引用符と「.cgi?mode」の「?」をエスケープする。
「?」が正規表現で評価されたみたい。
07667572005/08/28(日) 11:14:59ID:???
>>765
できました〜

?には気づきませんでした。
いい勉強になりましたありがとうございます。
0767nobodyさん2005/08/28(日) 12:59:49ID:???
.cgiの.もエスケープしておくれよ…
0768nobodyさん2005/08/28(日) 13:59:00ID:dDBq8KPQ
CLIのPHPであるサイトのページを開いてそのページのHTMLを
変数かファイルに落としたいのですが、どんな関数をつかえばよいのでしょうか?
教えてくださいませ。
0769nobodyさん2005/08/28(日) 14:09:13ID:???
>>757のスクリプト便利そうだからいろいろいじってみた。
これだと抽出した文字全部表示されるようだけど指定できないかな?
1つ目とか・・・いろいろやってみたんだけど難しー

便乗で申し訳ないが誰か教えてださい。
0770nobodyさん2005/08/28(日) 14:14:05ID:???
>>768
これじゃだめ?

$url = "http://*********";
$out = "out.html";
system("wget $url -O $out");
0771nobodyさん2005/08/28(日) 14:18:52ID:???
>>768
または>>757の様にfopen使う。
あとは通常ファイルの処理と一緒。
0772nobodyさん2005/08/28(日) 15:22:57ID:dDBq8KPQ
>>770さん
>>771さん
早速のアドバイス、どうも有難うございます。
今は時間がないので、後ほど試してみます。
有難うございました。
07737692005/08/28(日) 17:02:12ID:???
<?php
$InputFile = "http://*********";
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
$fp = fopen($InputFile, "r");
if ($fp == FALSE) {
echo "error";
exit();
}

while (!feof($fp)) {
$s = fgets($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for ($i = 0; $i < $n; $i++) $aaa[$i] = $ar[$i][2];
}
print $aaa[1] . "<br>\n";
print $aaa[2] . "<br>\n";
print $aaa[3] . "<br>\n";
fclose($fp);
?>

757さんの改造してるんだけどうまくいかない。
指定したものだけ表示したいんですけど。
どこか間違ってるところありますか?
0774nobodyさん2005/08/28(日) 18:00:10ID:Io8dHAYt
動的なログファイルの最後の行だけを取得する方法で悩んでいます。
ヒントだけでもいいんで教えてください。

ISP規制中により携帯からなので
言葉足らずな点があるかもしれませんがよろしくお願いします。
0775nobodyさん2005/08/28(日) 18:05:47ID:???
>>774
コマンド使えるなら
tail -1 ファイル名
0776nobodyさん2005/08/28(日) 18:35:59ID:???
>>774
自分で作ってるログなら、最後の行だけ別ファイルにキャッシュする

そうでなければ最初から1行づつ読んで最後の行だけ取り出す。

ログファイルが追加のみでどんどん大きくなるという前提なら
最後の行を取得する時にファイルポインタの位置を記録しておけば後の負担が減る。

ログ1行の長さがある程度わかる場合は、
fseekのSEEK_ENDを使って適当な位置から読む手もある。
乱暴なやり方だが。
07777732005/08/28(日) 22:26:33ID:???
どうしてもできない。
ご教授お願いします。
0778nobodyさん2005/08/28(日) 22:42:01ID:???
>>777
>>757-767までじっくり読んだ上で、
もう一度自分が試しているスクリプトを見直す
0779nobodyさん2005/08/28(日) 22:50:54ID:???
PHP 5.0.4 Winをローカルで使用しています。

以下簡略したコードを示します。sub()内では$writeが1ではありませんでした。
index.phpで、main()のなかではなくfunctionの外でrequire('write_main.php');だと
sub()内でも1が表示されました。
そういうものなのでしょうか。この現象に気づくのに時間かかってしまった。

---index.php----
<HTML><BODY><PRE><?
function main(){
require('write_main.php');
}
main();
?></PRE></BODY></HTML>

---write_main.php---
<?
$write = true;
if($write){
require('write_sub.php');
} ?>

---write_sub.php---
<?
echo "[$write]\r\n"; // [1]が表示される。
function sub(){
global $write;
echo "[$write]\r\n"; // []が表示される。
}
sub(); ?>
0780nobodyさん2005/08/28(日) 22:53:24ID:???
>>773,777
> for ($i = 0; $i < $n; $i++) $aaa[$i] = $ar[$i][2];

この行も間違ってる。
この行の実行のされ方をよく考えろ。
0781nobodyさん2005/08/28(日) 23:01:53ID:???
>>779
function main(){
  require('write_main.php');
}
は

function main(){
  $write = true;
  if($write){
    require('write_sub.php');
  }
}

こうなるわけで、
$writeはmain関数のスコープ内で扱われることになって、
globalではなくなるね。
動作としてはそんなもんじゃないかな。
0782nobodyさん2005/08/28(日) 23:24:04ID:???
>>781
ありがとうございます。
なるほど、判りました。

ということは、そうかPHPってfunctionの中にfunctionを入れられるのか。
function main()
{
function sub()
{
}
}
しらんかった。
0783nobodyさん2005/08/28(日) 23:32:27ID:???
>>779
ただのサンプルかもしれんが、関数内で require するのは混乱の元だから
やめた方がいいと思う。
0784nobodyさん2005/08/29(月) 00:50:15ID:???
>>782
(・ε・)?
0785nobodyさん2005/08/29(月) 04:01:32ID:???
バージョン違いの吸収にextract($_POST);入れるのって
if (phpversion() >= "4.1.0")書いたほうがいい?なくてもかまわない?
0786nobodyさん2005/08/29(月) 06:50:29ID:???
>>783
関数内でincludeすればグローバルスコープの名前空間が汚れにくくなる利点もあるわけだが。
ヒント:ケースバイケース

>>785
extract使わずに修正するのは無理な状況なの?
07877852005/08/29(月) 08:15:47ID:???
>>786
レスさんくす。
最近PHPはじめたんだけど、なんこかの配布サイトのソース見ると、
if (phpversion() >= "4.1.0") {
extract($_POST);
}
って書いてあるのが結構あるのよね。
おまじないなのか、別に必要がないのか検索してもいまいちさっぱりで。
バージョンによってはこれをかかないとPOSTされたデータが入らないとかあるんだけど、互換?バージョンによってはエラーになったりするのかな?
07887772005/08/29(月) 08:24:37ID:???
すいませんぐぐったりしたんですができませんでした。
ループさせないほうがいいのでしょうか?
0789nobodyさん2005/08/29(月) 08:27:33ID:???
>>787
ttp://www.php.net/manual/ja/language.variables.predefined.php
$_POSTが使えるようになったのは4.1.0以降。(register_globalsのデフォルトがoffになったのは4.2.0以降。)
4.1.0以前は、$HTTP_POST_VARSを使うか、$POST変数名を使っていた。
0790nobodyさん2005/08/29(月) 08:43:05ID:???
>>787
PHP4.0以下でregister globalsがoffだと動かない
if (PHP_VERSION < "5.0.0") {
extract($HTTP_POST_VARS);
}
0791nobodyさん2005/08/29(月) 09:03:22ID:???
>>788
いい加減しつこい。
というか、そんな聞き方で答えてもらえる(答えられる)わけないだろ。

そもそも、ここに貼ったソースを見る限りだと、このスレの>>757からのレスすら読んでないみたいだし
0792nobodyさん2005/08/29(月) 11:18:25ID:???
SJISの文字列の中から最初に全角数字が出てくる位置を
取得したいと思い・・・mb_ereg_matchを使ってできると
思いきや、マニュアルには位置を返す記述がないので
できないのかなと思ってます。

全角数字が出てくる位置は
どのようにしたら取得できるのでしょうか?
0793nobodyさん2005/08/29(月) 11:27:12ID:???
ごめん。mb_eregでできそう age
0794nobodyさん2005/08/29(月) 12:18:28ID:???
ごめん。やっぱわからん。
0795nobodyさん2005/08/29(月) 12:33:45ID:s5T6oqi1
>>794
file()
でファイルを全部配列に読み込む。
んで、mb_ereg を使って全角文字があるかどうかをループで探していけば配列番号わかるでしょ。
配列位置=行目だから。
■ このスレッドは過去ログ倉庫に格納されています