トップページphp
985コメント248KB

【PHP】下らねぇ質問はID出さずに書き込みやがれ 1

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/11/07(日) 17:11:24ID:???
どうぞ
0467nobodyさん2011/02/04(金) 23:16:38ID:???
>>466 ID だすなカス
0468nobodyさん2011/02/04(金) 23:34:06ID:???

ソケット通信のやり方を教えてください。
FLASHのXMLSocket通信みたいなことをやりたいです。

二つ目の送信(LOGOUT)がどうやら向こうに届いていないか、結果を読み込めないようです。

$fp = pfsockopen('hoge.co.jp', $port, $errno, $errstr, 10);
fputs($fp, '<LOGIN />' . "\0");
fputs($fp, '<LOGOUT />' . "\0");
echo fread($fp, 2000); // => "ログインしました。"
fclose($fp);

サーバ側ではLOGIN,LOGOUTに対してそれぞれのメッセージを用意しています。
LOGINは"ログインしました。" で、LOGOUTは"ログアウトしました。"なのですがこちらのメッセージが表示されません。

ちなみにFLASHクライアントでは両方共のメッセージを受け取れましたので、サーバ側に問題はありません。

アドバイスよろしくお願いします。
04694602011/02/04(金) 23:35:23ID:???
>>467
すいませんでした。
でもたったこんだけの対策でいいものなのかどうかちょっと不安だったもので。
0470nobodyさん2011/02/04(金) 23:35:35ID:???
>>468
>>1
04714682011/02/04(金) 23:36:28ID:???
自己解決しました
04724682011/02/04(金) 23:40:02ID:???
>>470
気づきませんでした。どうもありがとうございます。
向こうのスレに移動しますね。
0473nobodyさん2011/02/11(金) 16:21:37ID:???
続きはこちらで・・・
http://hibari.2ch.net/test/read.cgi/php/1295956018/
0474nobodyさん2011/02/25(金) 02:27:29.72ID:???
そして一旦CMですっ
0475nobodyさん2011/03/15(火) 19:22:31.81ID:Igf8K9Yt
やりたいこと

定期的に変わる広告文章を多数のサーバー上のサイトに表示しています(テキストリンクです)。広告を入れ替える際にサイト1つ1つの内容を変更すると手間と管理が大変な為、マスターを1つ変更すると他のサイト全てが変更できるような仕組みを作りたいと考えています。


ここで、問題が出ました。
多数のサーバーがマスターサーバーにある情報を読み込んで、表示できるようにしたい。ですが、この多数のサーバーはallow_url_fopen が 許可されていません。外部サーバーからインクルードすることができませんでした。

マスターサーバーは企業向けのレンタルサーバーを利用していますので、データベース、phpなど使用できます。

多数の広告を表示しているサーバーはphpが利用できるだけで、細かい設定ができません。

この条件で、当初の条件を満たすシステムは作れるのでしょうか?
あるのならばその手順を教えてください。
0476nobodyさん2011/03/15(火) 19:25:48.34ID:???
jsonpでググってきなさい
0477nobodyさん2011/03/16(水) 14:41:09.84ID:???
そんな人のためのiframe
0478nobodyさん2011/03/16(水) 19:57:53.29ID:???
エロ動画サイトか何か?
0479nobodyさん2011/03/16(水) 23:05:24.10ID:???
配列$aの要素
(aaa,bbb,ccc)
を全部かぎかっこをつけて
(「aaa」,「bbb」,「ccc」)
として$textの文字列を置換したいのですが
$result=str_replace($a,"「".$a."」",$text);
としたら$text内のaaa,bbb,cccの箇所がArrayと表示されます。
どうすればいいか教えて欲しいです。
0480nobodyさん2011/03/16(水) 23:07:47.76ID:???
array_filterかpreg_replace使う
04812011/03/16(水) 23:28:53.96ID:???
str_replaceで配列使うなら

$text = "###aaa###bbb###ccc";
$search = array("aaa","bbb","ccc");
$replace = array_map(function($v){return "「{$v}」";},$search);
$result=str_replace($search,$replace,$text);
print $result;
0482nobodyさん2011/03/16(水) 23:42:52.52ID:???
>>481
ちゃんとできるようになりました、ありがとうございます!
0483nobodyさん2011/03/17(木) 08:29:52.77ID:???
いいってことよ
04844752011/03/17(木) 15:57:22.92ID:???
アドバイスありがとうございます。

テキストリンクの広告を扱っています。
SEO目的なのでできれば静的に処理されるPHPで
処理を行いたかったのですが、無理そうですので
アドバイスに従い iframe を使ってみようと思います。

jsonp のクロスドメインについても、勉強しながら後々には使えるようになりたいです。
ありがとうございました。
0485nobodyさん2011/03/18(金) 18:37:32.02ID:???
ほんっとお前らくだらねーなぁ




0486nobodyさん2011/03/18(金) 20:56:20.79ID:???
>>484
商用は企業に依頼しろ
0487nobodyさん2011/03/18(金) 21:12:42.56ID:???
笑用
0488nobodyさん2011/04/13(水) 01:23:37.18ID:3ZKLqUAh
どなたかご存知の方いらっしゃいましたらお願い致します。

hoge1.phpは以下のようにしてhoge2.phpを呼び出すものとします。
header(location=”hoge2.php”);

この場合、WEBサーバーではhoge1.phpへのアクセス(プロセス?)は無く
なった物と認識して、hoge2.phpへ移るものと考えて良いのでしょうか?
それともhoge2.phpが表示されている最中もhoge1.phpにアクセスが
残っていると認識されるのでしょうか?
0489nobodyさん2011/04/13(水) 01:34:51.75ID:???
↑すいません。スレの趣旨無視してしまいました。
0490nobodyさん2011/04/13(水) 09:37:32.13ID:???
このスレはどっちでもOK
アクセスログも残るし処理も続いたような気が・・・
ただ画面遷移はされてるので処理してるかどうかとかはわからないはず
0491nobodyさん2011/04/15(金) 23:38:33.44ID:???
最近どーしても作りたいシステムがあって、自作しようと決めた初心者です。
今の所プログラムの基本的な流れや仕組みは理解。
1から書けと言われれば本を見ながら。
特別な処理になるとちょっとお手上げというレベルですが…

こんなのを作りたいので以下。

1.ある2人が別々のフォームから6つの言葉を入力する。
2.お互いが何を入力したか相手(や第三者)には分からない。途中で書き直しもできる
3."開封日"を設定する(これはお互いが一緒でないといけない もしくは片方が決める)
4.開封日になると6つのボタンが表示される
5.1つめのボタンを押せば、2人が入力した1つめの言葉が公開される
6.そんな感じでボタンを押して開封していく

そんなシステムを作りたいんですが、これってかなり複雑ですか?
作りたいものが見えていると頑張れる気はします
0492nobodyさん2011/04/16(土) 00:24:55.57ID:???
複雑じゃないけど、少し考えるところはでてくると思う。
勉強にもなるところがありそうだし、いいんでない?

ファイル入出力、ユーザ識別あたりが考えどころになるかな。
0493nobodyさん2011/04/16(土) 10:29:29.46ID:???
プログラムはそれほど複雑ではないけど、データベースを多少勉強する必要がある。
それと、「ある2人」が自分と友人とか決まった人同士なら楽だけど、
公開ウェブサービスのように不特定多数のユーザーから「ある2人」を選ぶならかなり難しいと思う。
0494nobodyさん2011/04/16(土) 14:35:53.07ID:???
>>492-493
ありがとうございます やはりデータベースは触ることになりそうですね…
MySLQ?でしたっけ、こちらも勉強していこうと思います。

ある2人については、不特定多数のユーザーですねorz
ただ、2人に予めパスワードなど決めてもらって
同じパス同士でやらないと作動しないという風には考えてあります。
余計ややこしくなるかな
0495nobodyさん2011/04/17(日) 19:29:11.00ID:???
MySQLはオワコン
これからはPostgreSQL
0496nobodyさん2011/04/18(月) 18:21:10.28ID:???
>>495
マジで? どう違うか教えてくれ
0497 忍法帖【Lv=3,xxxP】 2011/04/18(月) 19:08:03.37ID:???
0498nobodyさん2011/04/18(月) 20:51:30.94ID:???
どちからと言えばPostgreSQLのほうが・・・
それにPostgreSQLってまともに使われてたの日本ぐらいじゃないか・・・
0499nobodyさん2011/04/19(火) 12:44:28.65ID:???
でもPostgreSQLだとおもうがね。
0500nobodyさん2011/04/23(土) 14:29:20.27ID:???
外部サーバーにあるファイルのタイムスタンプを取得する関数ってありますか?
filetime的な

PHP5
0501nobodyさん2011/04/23(土) 14:30:17.07ID:???
>>500
>>1
0502nobodyさん2011/04/23(土) 15:57:27.70ID:???
マルチ乙
0503nobodyさん2011/04/28(木) 19:38:37.99ID:???
php初心者です。
最終的には2chの掲示板のようなのをつくりたいんですが、知識ゼロです。
ネットにも適当なサイトがなくて、本で勉強したいんですが、たくさんあってよく分かりません。
どういった本を読んでいけばいいんでしょうか。
お勧めの本とかあれば教えてください。
0504nobodyさん2011/04/28(木) 20:07:39.10ID:???
適当にググった初心者本読めばいいだろ
入門者なんてどれも似たり寄ったりだ
0505nobodyさん2011/04/28(木) 20:36:35.26ID:???
絵本から読んでけ
0506nobodyさん2011/04/28(木) 20:38:59.67ID:???
2ch風掲示板なら「基礎からのMySQL」がオススメ
0507nobodyさん2011/04/28(木) 21:19:15.48ID:???
>>503
逆算して自分が覚えるべきことをリストにまとめろ

例えば
2ちゃんのような掲示板を作る

スレッド式掲示板を作る

記事とコメントフォームだけのシンプルな掲示板を作る

コメントフォームをデザインする

ファイルに文字列を書き込む&ファイルの内容を読み込むコードを書く

http://localhost/にアクセスしてHello worldを表示させる
0508nobodyさん2011/04/28(木) 23:16:15.39ID:P8KNi+qP
function 関数($arg){
return $arg;
}

これを一行で書きたいんだけどなにかあったら
教えてください
0509nobodyさん2011/04/28(木) 23:17:17.28ID:???
function a($arg){
return $arg;
}

$b = a("aaaaaaa");
0510nobodyさん2011/04/28(木) 23:39:24.90ID:???
どういうことなの
0511nobodyさん2011/04/28(木) 23:40:49.93ID:???
$b = a("aaaaaaa");で一行
0512nobodyさん2011/04/28(木) 23:52:31.78ID:???
クソスレageるなsageろ
0513nobodyさん2011/04/28(木) 23:59:31.65ID:???
create_functionでラムダでかいけつしました。
05145032011/04/29(金) 13:13:09.43ID:???
レス感謝です。

phpの勉強する前に、htmlがほとんど分からないんですが、掲示板を作るにあたってhtmlから勉強したほうがいいんでしょうか。

それともphpの本を読んでいくと自然に掲示板を作るかぎりでのhtmlの使い方が分かるようになりますか。

教えて君ですみませんが、ウェブアプリを作るのははじめてでどうhtmlの知識が入ってくるのか想像ができないレベルです・・・。

一応学習計画としては、
よくわかるPHPの教科書→絵本→基礎からのMySQL→PHPによるWebアプリケーションスーパーサンプルを考えてますが、html部分もこれらで解説されているのでしょうか?
0515nobodyさん2011/04/29(金) 13:57:22.06ID:???
HTMLからやれ
0516nobodyさん2011/04/29(金) 14:00:34.46ID:???
http関係読んで、まずはどういう流れでブラウザに表示されるのか?を理解するといいかも。
次に、「どのように出力するとどのようにブラウザに表示されるか?」を理解する意味でhtmlかな。
<ここはオプション>
見栄えを気にするならCSS
更に、クリックしたときに画像のアップを見せたい、とかいう感じの動的なページを望むならJavascript
</ここはオプション>
で、PHPかね

どこを重視するかによって、オプションは抜かしていくのがいいと思うが・・・
使い勝手を気にするならオプションは無視できんかな
0517nobodyさん2011/04/29(金) 17:02:27.17ID:???
良スレ上げ
0518nobodyさん2011/04/29(金) 17:05:20.85ID:???
>>508
はい一行。
function 関数($arg){return $arg;}
0519nobodyさん2011/04/29(金) 17:12:10.18ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 104
http://hibari.2ch.net/test/read.cgi/php/1297669559/
【PHP】下らねぇ質問はID出して書き込みやがれ 103
http://hibari.2ch.net/test/read.cgi/php/1295956018/
【PHP】下らねぇ質問はID出して書き込みやがれ 102
http://hibari.2ch.net/test/read.cgi/php/1292670453/
【PHP】下らねぇ質問はID出して書き込みやがれ 101
http://hibari.2ch.net/test/read.cgi/php/1289793607/
【PHP】下らねぇ試ソ問はID出して緒曹ォ込みやがれ 100
http://hibari.2ch.net/test/read.cgi/php/1288168893/
【PHP】下らねぇ質問はID出して書き込みやがれ 99
http://hibari.2ch.net/test/read.cgi/php/1286938893/
【PHP】下らねぇ質問はID出して書き込みやがれ 98
http://hibari.2ch.net/test/read.cgi/php/1284805237/
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://hibari.2ch.net/test/read.cgi/php/1279833891/
【PHP】下らねぇ質問はID出して書き込みやがれ 96
http://pc11.2ch.net/test/read.cgi/php/1275032024/
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/
0520nobodyさん2011/04/29(金) 17:12:33.60ID:???
アラヤダ誤爆
0521nobodyさん2011/04/29(金) 19:48:26.54ID:???
>>514
PHPの前にHTMLとCSSは必須。
半月からひと月くらいはHTML/CSSに時間を割いた方が良い。
PHPの読む本は挙げたのでok。
オススメの順番は、
PHPの絵本→基礎からのMySQL→よくわかるPHPの教科書→PHPによるWebアプリケーションスーパーサンプル
(理由:負担が軽い順だとこうなる)
05225032011/04/30(土) 10:51:16.37ID:???
ありがとうございます。

htmlとcssは本当によくわかってないんで、2ch風な掲示板を作るにはどうやって勉強したらいいかわからないです。

最終的には、スレッド式掲示板を作るにもphpだけではなくhtmlとcssが必要だと思いますが、ネットや本を読んでも文法の説明がほとんどで、どうやれば掲示板のhtmlが書けるのかわかりません。

学習計画としたら、どんな本(あるいはネット)を読めばいいでしょうか。
0523nobodyさん2011/04/30(土) 10:59:38.68ID:???
PHPと関係ないのでこっち池
http://hibari.2ch.net/test/read.cgi/hp/1301891537/
0524nobodyさん2011/04/30(土) 12:26:35.27ID:???
なにかするときはあれしてこれしてでもあれだったらこれして
って考えるだろう。それをコードにすれば掲示板が出来あがる。
0525nobodyさん2011/05/01(日) 16:53:28.14ID:???
PHPにpreg_・・・ってあるから聞いてみる
/(\s|^)(I|you)(\s|$|\.)/という正規表現があるとして
「(I|you)」の部分だけキャプチャするのは正規表現だけで書けますか?
0526nobodyさん2011/05/01(日) 17:00:36.21ID:???
>>525
?:について調べればいいんだけど、名前忘れた
/(?:\s|^)(I|you)(?:〜〜
としてみて
0527nobodyさん2011/05/01(日) 18:56:18.17ID:???
PHP・アパッチ入ってるサーバーみたいにしてるPCになぜか他PCからブラウザでは見れなくて、
直接そのPCからブラウザで開いてみたりしたら遅くなりました^^;
別PCでもエクスプローラからはそのPC見れるんだけどなにが起きているのだろう・・・

ともかくやってみました。
preg_match("/(?:\s|^)(I|you)(?:\s|$|\.)/"," you ",$a);var_dump($a);
出力:array(2) { [0]=> string(5) " you " [1]=> string(3) "you" }

下記を見て「(?:〜)」もキャプチャされる気がするのですがやり方あるのでしょうか?
http://www.php.net/manual/ja/regexp.reference.subpatterns.php
0528nobodyさん2011/05/01(日) 18:59:46.39ID:???
ねえよ
05295252011/05/01(日) 19:07:51.11ID:???
やはり正規表現では[0]=> string(5) " you "は削れないですかね?

ちなみに別PCから見れなかったのはセキュリティソフト設定が戻ってたのが原因でした。
冷静なればなんでもなかった。
それとID・番号なかった・・・527も525です。
0530nobodyさん2011/05/01(日) 19:15:39.73ID:???
無駄なものはキャプチャしたくないって考えてると思うが諦めろ
05315252011/05/01(日) 19:23:25.42ID:???
そうですか・・・実はサクラエディタの正規表現キーワードで英文の単語を色分けしたい
というのが狙いで正規表現はPHP・JavaScriptでしかまともに使ったことがなかったので
ここで質問したのですが別の方法検討してみます。。
0532nobodyさん2011/05/01(日) 21:20:32.58ID:???
>>527
> preg_match("/(?:\s|^)(I|you)(?:\s|$|\.)/"," you ",$a);var_dump($a);
> 出力:array(2) { [0]=> string(5) " you " [1]=> string(3) "you" }
>
> 下記を見て「(?:〜)」もキャプチャされる気がするのですがやり方あるのでしょうか?
> http://www.php.net/manual/ja/regexp.reference.subpatterns.php
キャプチャされてない結果にしか見えない。

"you"だけが欲しいなら"you"だけにマッチする正規表現にすればいいだけ。
言明の項も読むといいよ。
05335252011/05/01(日) 23:28:06.45ID:???
これはもう無理と思ったのですが!>>532さん言明のアドバイスありがとうございます。参考になりました。

まだ言明の所を読んでいる途中ですが他にやっておくこともあるので時間切れです^^;
一応試した所まで書いときます。明日夜にまた試してみる予定です。
preg_match("/(?<=\s|^)(I|you)(?=(\s|$|\.))/"," you layout I ",$a);var_dump($a);
出力:array(3) { [0]=> string(3) "you" [1]=> string(3) "you" [2]=> string(1) " " } ?

> にしか見えない。
それとここが少し気になります。1つ目の要素は「((?:〜)」の部分に記述した内容にもマッチしてると
思うのですが、2つ目だけ見ればという意味なのでしょうか。
05345252011/05/01(日) 23:30:35.42ID:???
あちなみに出力で「you」と「I」だけ出そうとしてます。
0535nobodyさん2011/05/01(日) 23:54:31.53ID:???
だからできないって無理
0536nobodyさん2011/05/01(日) 23:56:22.83ID:???
全体にマッチしたのと別にキャプチャしたものが別に代入されるから諦めろ
そんな気にするほどの最適化にもなんないから無駄
0537nobodyさん2011/05/02(月) 08:18:13.13ID:???
>>533
>>532の前段
1番目の要素にはマッチした全体が格納され、2番目以降にはキャプチャされた内容が格納される仕様
キャプチャして欲しくないものには?:をつける
なので、正しく除外された結果になっている

>>532の後段
マッチした全体として "you" が欲しいなら言明の項を参照して、先(後)読み肯定(否定)を学んで
マッチした全体が "you" となる正規表現に書き換えればいい
その際に何もキャプチャして欲しくないのなら出現するグループすべてに?:をつければいい
0538nobodyさん2011/05/02(月) 08:27:49.05ID:???
てかほとんどできてるんだから、例を書けばいいか。

preg_match("/(?<=\s|^)(?:I|you)(?=(?:\s|$|\.))/"," you layout I ",$a);var_dump($a);
preg_match("/(?<!\w)(?:I|you)(?!\w)/"," you layout I ",$a);var_dump($a);

結果の1番目と2番目以降の意味が違うことには気をつけて。
05395252011/05/02(月) 10:08:48.30ID:???
1番目の要素にはマッチした全体が格納・・・そんな仕様ありました。その仕様忘れていましたが
?:の使い方で見れば除外されているという意味だったのですかね。
なるほど「(?=と(?:の組み合わせ」と「\wを前後に持ってきて先・後読み否定」という考えでしょうか。

ではまた夜に。
0540nobodyさん2011/05/02(月) 17:00:08.39ID:???
PHPのセッション情報はデフォルトでファイルに書き込まれますが、
1ディレクトリにたくさんのファイルが作成されると、ファイルシステムの性能が低下するという話をききました。
そしてPHPではそのための対策もされているそうで。すばらしい。
それで質問なんですが、1ディレクトリあたりどのくらいのセッションファイルが置かれると
性能が低下しますか。もちろんファイルシステムごとに違うと思いますので、
このファイルシステムなら1000個ぐらいから性能が低下したとか、
このファイルシステムでは10000ぐらい作ってもまったく問題ないとか、
教えてください。
0541nobodyさん2011/05/02(月) 17:40:15.11ID:???
>>540
>そしてPHPではそのための対策もされているそうで

うそだ
どこでそんな情報垂れ流してんだよ
0542nobodyさん2011/05/02(月) 17:41:43.71ID:???
>>540
cpuが化石でメモリがクソ小さい低スペ鯖と100万つぎ込まれて作られた鯖もあるのにどうやって答えろと
0543nobodyさん2011/05/02(月) 19:59:15.88ID:???
>>541
PHPでは、たとえばセッションIDが abc123 だとすると、先頭の何文字かを
使ってディレクトリをたどり、
a/b/sess_abc123
という名前のセッションファイルを作成することで、1ディレクトリ内での
ファイル数を抑える機能が標準であります。
これを知ったときはPHPすごいと思いました。
それで、具体的に1ディレクトリあたりどのくらいのファイル数だと
パフォーマンスが落ちるのかを知りたいと思いました。

>>542
はい、ですからスペック情報もこみで、こんなスペックだったらこのくらいの
パフォーマンスだったよというのを教えてください。
0544nobodyさん2011/05/02(月) 20:25:37.32ID:???
ext3だと上限32000ぐらいだっけ?今どうなってるかは知らんが
まぁ処理だけならext3で1万ぐらいは平気だと思うよ
0545nobodyさん2011/05/02(月) 21:04:30.74ID:???
>>543
ファイルシステムとPCスペックは同語かよしね
05465252011/05/02(月) 21:21:58.17ID:???
レスをくれた皆さんありがとうございました。できないとも言われたので
半信半疑ですが一応できたっぽいです。まだ言明最後までちゃんとは読んでなかったですが^^;
英文の単語の色分け表示をする為サクラエディタの正規表現キーワードに使うつもりですが、
他にもこうした方がいいとかあればよろしくお願いします。
preg_match_all("/(?<!\w)(?:I|you)(?!\w)/","you layout I.",$a);var_dump($a);
出力:array(1) { [0]=> array(2) { [0]=> string(3) "you" [1]=> string(1) "I" } } ?
そういえば複数マッチはall付でした。\wを使った方が短くなるのでこれを使おうと思います。
0547nobodyさん2011/05/02(月) 21:25:36.03ID:???
>>544
ありがとうございます。今はまだext3がいちばんよく使われてるみたいですね。
ReiserFSやXFSだとディレクトリあたりのファイル数が増えても性能劣化がほとんどないらしいですが
ext3でも1万くらいは平気なら、そう気にすることではないですね。
参考になりました。ext4ならどうなんだろう。

>>545
なにを怒ってるの?カルシウム足りてないんじゃ?
0548>>526=532=537=5382011/05/02(月) 23:05:31.84ID:???
>>546
できる方法を提示すればそれで良いかと思い、できないっていうレスはずっとスルーしてた。
サクラエディタのことは詳しくないが、キーワードリスト作る程度でハイライトしてくれても
よさそうに思うので、サクラエディタスレで聞いてみたらどうだろ。

>>544,547
ext3で6万ファイルぐらい入ってるのはみたことあるよ。
ファイル名を指定してアクセスする分には特に重くもなかった。
けど、ls -lなんかをやると非常に遅かったと思う。
0549nobodyさん2011/05/02(月) 23:22:55.10ID:???
ext3の上限32000はディレクトリ数だった・・・
まぁこれもカーネル弄ればどーとでもなる話だけど・・・
0550>>526=532=537=5382011/05/02(月) 23:53:52.60ID:???
ファイル数は制限ないの?
0551nobodyさん2011/05/02(月) 23:54:49.72ID:???
名前記憶されててびっくりしたw
0552nobodyさん2011/05/03(火) 01:02:38.42ID:???
INTの値だったかなんだったか忘れたが・・・
まぁここらの話はスレチすぎると思うw
05535252011/05/03(火) 06:20:46.53ID:???
>>526=532=537=538さんいつもレスありがとうございます。
少しググってみると.khp.kwdファイルを使ってもいける?みたいですね。
これも便利そうなので自分できなかったりしたらサクラエディタのスレでまた聞いてみます。
0554nobodyさん2011/05/03(火) 09:44:03.93ID:???
自演か
0555nobodyさん2011/05/05(木) 22:36:12.53ID:xGGX9oCi
### 011_counter.php ###
<?php
$fp=fopen("012_count.txt","r+");// 読み書きモードでオープン
$n=fgets($fp); // 文字列の読み取り
$n++; // カウントアップ
echo $n,"人目"; // 表示
rewind($fp); // 読み書き位置を先頭に戻す
fputs($fp,$n); // 書き込み
fclose($fp); // ファイルを閉じる
?>

### 012_count.txt ###
0

…これでhttp://localhost/php/011_counter.phpにアクセスすると
0 人目
が表示されます。
ただ、F5を押しても、他のサイトを見てまたアクセスしても加算されません。
012_count.txtの内容を3にすると、3 人目になりますが加算はされません。
テキストには「0の後に改行を入れると加算されない」とあるので、特に注意して改行を入れないようにしています。

どこがおかしいのでしょうか?
上のを普通に実行させるとどうなりますか?
0556nobodyさん2011/05/05(木) 22:45:23.58ID:???
>>555
アクセスした時点でプラス1足して表示されるようにコード書いたんだから0人目って表示されるのはおかしいでしょ
05575552011/05/05(木) 22:57:59.84ID:xGGX9oCi
>>556
レスありがとうございます!
ですよね?
大変申し訳ないんですが上のコードちょっと実行してくださいませんか?
というか、どこがおかしいか何か調べるデバッグの方法はないですかね?
05585552011/05/05(木) 23:03:45.73ID:xGGX9oCi
速報です。
たった今、$n++を$n=$n+1に変えたら加算されました。
これって$n++は何がしかの理由で動いていない、ということでしょうけど、
この原因に心当たりはありませんか?
0559nobodyさん2011/05/05(木) 23:08:28.59ID:???
改めて再現させることができるかどうかわからないけど、
$n++;
は本当に $n だったかどうか
05605552011/05/05(木) 23:15:08.05ID:xGGX9oCi
げげ!続報です。
先ほどの$n++を$n=$n+1の変更を011_counter_kai.phpという名前で保存して実行したのが>>558ですが、
元の011_counter.phpに戻しても加算されます!
いや、でも「間違いなく」改行コードは付けていませんでした。

と思ってもう一度実験してみました。
012_count.txtが28まで加算されてたんですけど、
消してまた"0"とだけ打って保存しました。
そうすると、また動かなくなりました。
それで011_counter_kai.phpを実行すると
また加算され始めます。

手打ちの"0"って改行コードか何か付いてしまうもんなんですか???
使ってるエディターはvimです。
気持ち悪いので説明をお願いします。
05615552011/05/05(木) 23:20:32.34ID:xGGX9oCi
>>559
では改めてコピペしてみます:

$n++; // カウントアップ

投稿前からまったくいじっていません。
こんなので躓いていたらこの先思いやられますね…。
ちなみに環境からなんからほぼすべての情報は
http://okwave.jp/qa/q6715796.html
に書きました('A`)<誰も答えてくれねぇ…
0562>>526=532=537=5382011/05/05(木) 23:23:37.44ID:???
>>560
改行コードつくよ。それがテキストファイルだから。
それより、それが問題で動かなくなるもんなの?
fputs($fp, "$n");
とかするとどうなるの
0563nobodyさん2011/05/05(木) 23:24:12.54ID:???
名前欄ハズカシイ。無視してくださいな
0564nobodyさん2011/05/05(木) 23:29:36.04ID:???
改行が問題だった。
$n=(int)fgets($fp); // 文字列の読み取り
ってやるといいのかな。
0565nobodyさん2011/05/05(木) 23:34:15.66ID:???
http://jp.php.net/manual/ja/language.operators.increment.php
この辺の影響かと
05665552011/05/05(木) 23:55:00.97ID:xGGX9oCi
>>564
あ、それなら動きますね!
一つ不思議なことに
011_counter.phpだと

0 人目

と、0と人の間にスペースが一つ空くんですが、
011_counter_kai.phpや>>564さんのを参照して作った011_counter_kei.phpは

1人目

のように0と人の間にスペース空きません。

>>565
この辺ですか?
Note that the ++ and -- don't convert a boolean to an int. The following code will loop forever.

function a($start_index) {
for($i = $start_index; $i < 10; $i++) echo "\$i = $i\n";
}

a(false);

This behavior is, of course, very different from that in C. Had me pulling out my hair for a while.

なるほど、これが宣言無しで動いてしまうPHPの盲点なんですね(ただ、Perlでは今のところこんなのに出会ったことはないですね…)。
元々はC言語書きなんで宣言無いのは違和感あります。

確かに自分のコード(テキストの載っているそのままですが)を見ると、文字列で取得してそのままインクリメントしてますね。
「基礎から学べるPHP標準コースウェア」河西朝雄 記述評論者、って本です(晒し上げ)。
勉強になりました。これからも勉強し続けます。ありがとうございました!
■ このスレッドは過去ログ倉庫に格納されています