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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん04/06/14 14:36ID:???
・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


抜けているものがあったら補足願います
0002nobodyさん04/06/14 14:36ID:???
・過去ログ

Part1 : http://ebi.2ch.net/php/kako/982/982687820.html
Part2 : http://pc.2ch.net/php/kako/1003/10032/1003283567.html
Part3 : http://pc.2ch.net/php/kako/1013/10139/1013919792.html
Part4 : http://pc.2ch.net/php/kako/1022/10229/1022999539.html
Part5 : http://pc.2ch.net/php/kako/1031/10317/1031721334.html
Part6 : http://pc5.2ch.net/php/kako/1038/10389/1038988518.html
Part7 : http://pc5.2ch.net/php/kako/1044/10444/1044478561.html
Part8 : http://pc5.2ch.net/php/kako/1050/10502/1050249148.html
Part9 : http://pc5.2ch.net/php/kako/1057/10579/1057947512.html
Part10: http://pc5.2ch.net/php/kako/1064/10641/1064104114.html
part11: http://pc5.2ch.net/php/kako/1067/10676/1067635640.html
part12: http://pc5.2ch.net/test/read.cgi/php/1070639208/
part13: http://pc5.2ch.net/test/read.cgi/php/1073291978/
part14: http://pc5.2ch.net/test/read.cgi/php/1076163015/
part15: http://pc5.2ch.net/test/read.cgi/php/1078592587/
part16: http://pc5.2ch.net/test/read.cgi/php/1081267619/
part17: http://pc5.2ch.net/test/read.cgi/php/1084781699/

※前スレからの引用修正
0003nobodyさん04/06/14 14:37ID:???
・関連サイトなど


2ch Pear Wiki
http://pear.sakura.vg/

PHP Kitchien
http://www.phpkitchen.com/

PHP Developer
http://www.phpdeveloper.org/

phpPatterns
http://phppatterns.com/

Perl/PHP Translation
http://www.cs.wcupa.edu/~rkline/perl2php/
0004nobodyさん04/06/14 14:37ID:???

・参考スレとか

質問される方は聞く前に調べたほうが良いと思われます。


2ch 総合ガイド
http://www.2ch.net/guide/


CGIに関する質問はこちらで
[CGI: Common Gateway Interface part 11 ]
http://pc5.2ch.net/test/read.cgi/php/1055597189/l50

CGIとPerlの区別がつかない方はこちらも
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/

  ☆  P  H  P  5  ☆
http://pc5.2ch.net/test/read.cgi/php/1056969979/

Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/

【PHP】Smarty【Template】
http://pc5.2ch.net/test/read.cgi/php/1047225437/

■PHP関連の書籍(但しPHP出版系お断り)
http://pc5.2ch.net/test/read.cgi/php/985315574/

※過去ログに行っている場合がありますので、
見れない方は同じような名前の板を探してください
0005nobodyさん04/06/14 14:37ID:???
スレ立ては以上です。
では、早速質問どうぞ。
0006nobodyさん04/06/14 15:39ID:+XeQjlo/
http://enema.x51.org/x/i/cute_birds1.jpg
http://enema.x51.org/x/i/cute_birds2.jpg
http://enema.x51.org/x/i/cute_birds3.jpg

これどういうこと?
0007nobodyさん04/06/14 16:56ID:???
怖くて見れない
0008nobodyさん04/06/14 16:58ID:???
普通のカルガモ
0009nobodyさん04/06/14 16:58ID:6bKGvEI+
>>7
グロじゃない。
むしろ1枚1枚はほのぼのしてるぐらい。
ただね・・・連続で見ると
0010nobodyさん04/06/14 19:12ID:???
都会に潜む落とし穴
0011nobodyさん04/06/14 21:08ID:???
質問です。
多次元配列の一つ目の階層の要素だけを数えたいのですが、
($array[$i]←この部分の数が知りたいのです。)
count($array)とするとどうも要素がやたら大きくなってしまいます。
(どうやら$array[$i][$e]←ここまでカウントしているようです。)
いい具合の関数はありませんでしょうか?
多次元関数に関する記事があまりなかったもので・・・。
0012nobodyさん04/06/14 21:27ID:???
まずテスト用のスクリプトを書いてcountが下層の要素数まで数えている、という根拠を示してごらん。
0013nobodyさん04/06/14 21:45ID:???
そしてボクの顔をお食べ
0014nobodyさん04/06/14 21:53ID:???
すみません、自己解決しました。。。
$next = ((count($viewdata))+1) / 5;

$next = count($viewdata)+1 / 5;
としていたためにむちゃくちゃな数が出ていたのでした。
お騒がせしました。
0015nobodyさん04/06/14 23:14ID:???
>>12-13
リズムが良くてワロタ
0016名無し募集中。。。04/06/14 23:33ID:jS1Q2NuJ
あぷろだ作ってるんだけど、ハードの残量を表示するプログラムってどこかにある?
0017nobodyさん04/06/14 23:39ID:???
`du`
0018nobodyさん04/06/15 00:37ID:???
関係ないけど、初心者が中級者ぶって妙な略語を使う事って恥ずかしいよね。
0019nobodyさん04/06/15 00:44ID:???
>>18
だね。
どいつどいつ?(゚Д゚ ≡ ゚д゚)
0020nobodyさん04/06/15 01:01ID:???
ハードの残量
0021nobodyさん04/06/15 01:07ID:???
( ゜◇゜)なるほど〜 すぐ上にいたか
0022nobodyさん04/06/15 02:24ID:???
disk_free_space('/')
0023nobodyさん04/06/15 03:21ID:???
カポコンしゃまキターーーー(・∀・)−−−−−!!!
cgi.f13.aaacafe.ne.jp/~mugen/perlvsphp/mysql_mj/

PHPの内部プログラムに関しては全て高速設計。
出てくるデータ変換もPerl交互の正規表現で対処しているし、
何よりもセッションをファイルではなく、DBサイドでやってしまっている点。
素人がもたつく部分は、全て天才的なやり方が解決してきた。
将来的には箱庭を超えるもんに仕上がればいいと思っています(ぉ。
0024nobodyさん04/06/15 03:29ID:???
まともな質問はないのかよ...
0025nobodyさん04/06/15 04:08ID:???
>>23
すごいよ、カポコン
これが業務と趣味の違いか・・・!(藁
0026nobodyさん04/06/15 08:37ID:???
>何よりもセッションをファイルではなく、DBサイドでやってしまっている点。
これってそんなに大層なことか?
0027nobodyさん04/06/15 08:55ID:???
>>23
どこでソースみれんの?自演だからって手ぬくなよ。
0028nobodyさん04/06/15 09:09ID:???
>>26
いや、全然すごくないな(藁
めっちゃ簡単に出来るし・・・・。
0029nobodyさん04/06/15 10:32ID:???
カポコンは詐欺師みたいなもんだな
常識的な技術を「僕チン凄いことやってるよー」みたいに見せかけて人を騙そうとする所なんか特にね

頭が悪いから詐欺師にはなれないと思うけど
0030nobodyさん04/06/15 10:52ID:VBE/CSzd
PHPをスクリプトとして使用しているのに
エラーメッセージやワーニングの改行が
<br /> になるのが気に入りません。

どうしたらいいでしょうか?
0031nobodyさん04/06/15 11:03ID:???
>>30
CLI版のPHPを使う。
http://www.php.net/manual/ja/features.commandline.php

CGI版も含めて、そもそも他のSAPIのものはHTTPを通して使うのが前提だからね。
どうしてもって言うなら出力バッファリングを使って、自分で取り除く。
0032nobodyさん04/06/15 11:07ID:???
てかphp.ini弄れば消せる。
0033nobodyさん04/06/15 11:12ID:lLtRoZvO
; Disable the inclusion of HTML tags in error messages.
html_errors = Off
0034nobodyさん04/06/15 13:29ID:GnjSLWGD
phpでメールの時間指定のメール送信スクリプトを作ろうと思っていますが、こういう時間指定の処理って、crontabを使わないと駄目なんでしょうか?
0035nobodyさん04/06/15 13:34ID:???
いろいろあるけど、cronでダメな理由は?
0036nobodyさん04/06/15 13:39ID:???
mod_php環境でApache2へデータを渡す時に、
echoやprintした内容がメモリに蓄積されているみたいで
例えばPostgresqlのラージオブジェクトから数GBのファイルを
出力しようとするとOut of Memoryで死んでしまいます。

というわけで、Postgresqlのラージオブジェクトから
メモリを節約しつつデータを出力させる方法を教えてくだsaina
0037nobodyさん04/06/15 13:55ID:???
ソース部分はこんな感じです。

$db = pg_connect(DB_CONNECT);
pg_query($db, "BEGIN");
$dblo = pg_lo_open($db, $oid, 'r');
while ($buf = pg_lo_read($dblo, 4096)) echo $buf;
pg_lo_close($dblo);
pg_query($db, "COMMIT");
pg_close($db);
0038nobodyさん04/06/15 14:00ID:???
output buffering機能を使っていたら全部とめろ。
0039nobodyさん04/06/15 14:05ID:???
>>37
pg_lo_read_all() を使ってみるとか。
使ったことはないのでどうなるかは知らないけど。
0040nobodyさん04/06/15 14:17ID:GnjSLWGD
>>35
telnetアクセスができないんですよ。
0041nobodyさん04/06/15 14:23ID:???
>>38
php.iniでは
output_buffering = Off
を宣言しており、スクリプト中でも特に変更はしていないつもりです。
output_handlerやzlib.output_compression等も無効にしています。

>>39
pg_lo_read_allで書くと便利で簡単なのですが、
なぜかメモリ使用量が今よりも大きくなってしまうので、現在の方法に変更しました。
0042nobodyさん04/06/15 14:26ID:???
>>40
telnetできないレベルだと「いろいろ」もなくなっちゃうんだけどw
つか何ならできるのさ?
00433604/06/15 14:35ID:???
>>41名前抜けてましたが、俺です。
バージョン忘れていました、PHP 4.3.6 → 4.3.7、Apache 2.0.49です。
0044nobodyさん04/06/15 16:01ID:???
>>36
数ギガバイトをHTTPでやり取りするんですか。
0045nobodyさん04/06/15 16:13ID:???
よく分からんが、ob_startで自動flushとか
00463604/06/15 16:54ID:???
>>44
そうなのです。
もしかして、httpで1GBを超えるデータは扱えないとか・・・

>>45
バッファリングを行うと、逆にメモリ使用量は増えてしまいますね。
implicit_flushはパフォーマンスが低下してしまうので、デバッグ用のようです。

試してみましたがやはり無理でした。

Apache2のフィルタ機能(複数のモジュールを通すことができる)が怪しい気がするので、
一度Apache1で試してみます。(PHPじゃないじゃんかYp!)
改善したらまた報告に来ます。
004736(解決!)04/06/15 17:06ID:???
できました!
46で「試してみましたがやはり無理でした」と書きながらも、ちょっと気になっていたので
調べてみると、「flushはechoの後でflush()を呼び出すのと等価」ということを聞き、
明示的に指定してみたところうまく動作するようになりました。
(45さん微妙にスマンカッタ)

$db = pg_connect(DB_CONNECT);
pg_query($db, "BEGIN");
$dblo = pg_lo_open($db, $oid, 'r');
while ($buf = pg_lo_read($dblo, 4096)) {
 echo $buf;
 flush();
}
pg_lo_close($dblo);
pg_query($db, "COMMIT");
pg_close($db);

お答えいただいた皆様ありがとうございました!
0048nobodyさん04/06/15 18:42ID:???
多次元配列の出力はどうすればいいのでしょうか?
一次元だとforeach($array as $key => $value)でできたのですが・・・
0049nobodyさん04/06/15 18:51ID:???
foreachを二重にするとか。
00504804/06/15 18:55ID:???
それが良く分からないんです・・・
$array[]としてもうまくいかないし。。どうすればいいでしょうか
0051nobodyさん04/06/15 19:09ID:???
foreach($arrays as $array) foreach($array as $key => $value) ...

という具合ではいかが?
00524804/06/15 19:40ID:???
おぉ、感激です
>>51さんありがとうございました。
0053nobodyさん04/06/15 20:23ID:???
>>48
多次元なので、

function array_echo ($_array){
  static $indent = 0;
  foreach ($_array as $key=>$value){
    echo str_repeat("\t", $indent).$key."\n";
    if (is_array($value)){
      $indent++;
      array_echo($value);
      $indent--;
    } else {
      echo str_repeat('\t',$indent + 1)."=>$value\n";
    }
  }
}

っていう関数はどうかな。と思ったけど、var_dump() の方がいいよ。
00544804/06/15 20:55ID:???
>>53さん、ありがとうございます。
ですが、1個ずつテーブルに入れて表示しなければならないので>>51さんの方法で行きます。
0055nobodyさん04/06/15 22:22ID:???
結局はforeach文の使い方がわからんかったと
0056nobodyさん04/06/15 23:21ID:???
>>55
質問スレで聞いたのだから当然だろう
何調子乗ってるんだ?
0057nobodyさん04/06/15 23:27ID:gVK53Lr1
保守
00585504/06/15 23:42ID:???
糞スレ保守age
0059nobodyさん04/06/16 00:22ID:???
>>26
むぅ。カポコン日記には結構ためになる事書かれてるな。
多分、コイツはPHPメーリングもしっかり見てるぞ。

DBのセッションは結構アルゴリズムが人によって違うし、
使う関数も違っていたりするから大層なことだろ。
セッションを語れんでPHP語るなっていう名言があるの知ってる?
大体Javaが本業な奴に間違いは少ない、これ間違いなし。
ただカポコンはもう出てくるな。
0060nobodyさん04/06/16 02:10ID:???
>>55-56
ズレたもん同士なかよくな。
0061nobodyさん04/06/16 06:18ID:???
>>59
カポコン日記には結構だめになる事書かれてるな。
0062nobodyさん04/06/16 11:59ID:???
カポコンネタおよびカポコン自身禁止
0063nobodyさん04/06/16 12:04ID:???
>>40
telnetやsshによるシェル・アクセスの可否と
crontab使用の可否は直接の関連性はないよ。
シェルでメンテナンスが出来ないので、
スクリプトのチェックとか面倒な部分もあるけど。

使ってるサービスでcrontabの登録を出来る方法はないの?
コンパネ使うとか、フォームで申請するとか。
0064nobodyさん04/06/16 12:23ID:???
>>56
質問スレにくる人でも制御構造など基本文法は最低限抑えておくべきでは?
0065nobodyさん04/06/16 13:27ID:???
くだらない質問なのですが
if(A)

if(A!=0)
どっちの方がいいのですか?教えてエロイ人
0066nobodyさん04/06/16 14:08ID:???
>>65
くだらないと思うなら聞くな馬鹿。
ちゃんと調べてそれでもわかんないなら聞きにこい。
0067nobodyさん04/06/16 14:13ID:???
わからんから訊いてる
0068nobodyさん04/06/16 14:18ID:???
>>65
少なくても「!=」は...
「!==」か?「!(A=0)」(定数だと意味無いけど)か?
0069nobodyさん04/06/16 14:36ID:???
>>68
アレグリーーーアーー
0070nobodyさん04/06/16 15:22ID:???
>>65
どっちも同じ結果になるので、どっちでもいいと思う。

コードを短かく書くことを優先するなら前者。
(あとで見てそれとわかるように)「0ではない」という意味を尊重して書きたければ後者。

PEAR のコーディング規約だとどーなんだろ?

false と 0 を違うものとして扱いたいとかゆーことであれば、"===", "!==" とか使う。
0071nobodyさん04/06/16 15:35ID:???
>>65
マニュアルの言語リファレンス・制御構造、言語リファレンス・型・論理型を見てみ。
FALSEと見なすものの多さに呆れて、明示的に比較したくなると思われ。
0072nobodyさん04/06/16 15:38ID:hmUL29ON
文字列を置換したいのですが
ereg_replace str_replace strtr等使っても変換されません。
置換する対象の文字列はarrayの1つを受け取ったものなんですが
これが原因なのでしょうか?
$str=$array[0];
$str=ereg_replace("ア","イ",$str)?
0073nobodyさん04/06/16 15:39ID:???
booleanに変換する場合、次の値はFALSEとみなされます。

booleanの FALSE
integerの 0 (ゼ ロ)
floatの 0.0 (ゼロ)
空の文字列、 および文字列の "0"
ゼロを要素とする 配列
ゼロを要素とする オブジェ クト
特別な値 NULL (値がセット されていない変数を含む)
0074nobodyさん04/06/16 15:51ID:???
>>72
mb_ereg_replace
00757204/06/16 16:00ID:hmUL29ON
>>74 やってみましたが駄目でした。すいません。
文字コードがEUCっていうのは関係あるのでしょうか?
0076nobodyさん04/06/16 16:14ID:???
>>75=72
デフォルトだと内部エンコーディングが使われるので、もし違うなら
mb_regex_encodingで設定。
あってるなら、ちとわからぬ。
ちなみにphp4.2.0以上なので、それ以下なら使えないっぽ。
00777204/06/16 16:25ID:hmUL29ON
>>76 すいません。残念ながらEUCであっておりました;;
 原因はなんだろう・・
 直接 文字を入れた変数になら置換できるのに・・
0078nobodyさん04/06/16 16:40ID:???
>>77=72
マテ、配列からちゃんととれているのか?
配列は値が入っているのか?

print_r($array);
print "{$array[0]}";
$str = $array[0];
print "{$str}";

これで全部表示される事を確認したまい。
00797204/06/16 17:06ID:hmUL29ON
>>78 大丈夫でした^^;
0080nobodyさん04/06/16 17:14ID:???
>>72=78
(;´Д`)?
あー、問題なければその配列の作成部分から取得->置き換え->出力までの流れを書いてみてくれ。
もうさっぱりだ。
0081nobodyさん04/06/16 17:15ID:???
すま、流れっつか、スクリプトそのものな。
0082nobodyさん04/06/16 17:17ID:???
さてどんな凡ミスが出てくるか。
0083nobodyさん04/06/16 17:18ID:???
$arrya[0] とかだったら笑っちゃうぜ? ちゃうぜ?
0084nobodyさん04/06/16 18:59ID:???
>>71
if (TRUE==3) echo "TRUE";
で悩んだことがある
echo (int)TRUE;
と違うし・・・・
0085nobodyさん04/06/16 19:02ID:FlwZGV+n
在庫管理システムをPHP+mySQLで作ってまして
入力フォームから追加して、一覧にするまではできました。
問題は、編集時に文字化けが起こるんです。

list.phpが一覧表で、こんな感じに出力してます。
echo '<td><a href="redit.php?mode=edit&sid='.$row["sid"].'&brand='.$row["brand"].'&item='.$row["item"].'&c_price='.$row["c_price"].">編集</a></td>';
echo "<td> ".$row["sid"]."</td>\n";
echo "<td> ".$row["brand"]."</td>\n";
echo "<td> ".$row["item"]."</td>\n";
echo "<td> ".$row["c_price"]."</td>\n";

redit.phpへ $mode = 'edit' の時編集モードに入り、各値をGETで渡して、

echo '<form action="'.$_SERVER["PHP_SELF"].'?mode=edit&sid='.$sid.'" method="post">';
echo "<font size=\"3\"><strong>編集/削除</strong></font>";
echo '<tr align="center"><th>ブランド名</th><td><input type="text" name="brand" size="30" value="'.$brand.'"></td></tr>';
echo '<tr align="center"><th>アイテム</th><td><input type="text" name="item" size="30" value="'.$item.'"></td></tr>';
echo '<tr align="center"><th>仕入原価</th><td><input type="text" name="c_price" size="30" value="'.$c_price.'"></td></tr>';
echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" name=\"post_mode\" value=\"編集\">

このように、valueで値をフォームに表示していますが、'ム'とか、ある一定の文字で文字化けが起こるんです。

PHPにも禁止文字ってあるんですかね?
この対処方をどなたか教えて頂けませんでしょうか?

文字コードはeuc で作成していて、サーバーLinuxでeucです。
0086nobodyさん04/06/16 19:06ID:???
Sjisのhttp-inputをそのまま処理してるんじゃないの。
http://jp.php.net/mbstring
0087nobodyさん04/06/16 19:19ID:???
スマンソ。ソースが化けるのか。
とりあえずphp.iniかhttpd.confの文字設定あたりかな?
0088nobodyさん04/06/16 19:30ID:FlwZGV+n
>>86=87さん
ご返答ありがとうございます。

さっきのURLのところの
PHP 4.3.0以降、このオプション --enable-mbstr-enc-trans は廃止され、mbstring.encoding_translation に変更となります。HTTP入力文字エンコーディング変換は、 このオプションをOnに設定した場合のみ 有効となります。 (デフォルトは、Offです。)

この辺が関係あるのかなとも思いますが、今は自鯖なんで設定いじれるからいいんですが
サーバーの仕様に関係なく表示させる方法ってないもんですかね?

そのまま処理が問題だとすると

フォームから追加するときに、sjisでSQLに入ってるから、
それをeucで表示しようとして、文字が化けるってことですかね?

でも、リストでは化けないので。。。うーん
0089nobodyさん04/06/16 20:04ID:???
phpで特定のページ以外からのアクセスを禁止にしたいんですけど・・

1つ前のページからちゃんときてない場合(直リン、お気に入り等)は見れないようにしたいんです。

どうやるんですか?
0090nobodyさん04/06/16 20:11ID:???
最終的なhtml出力はsjisじゃなくてeucなの?
そうならlistのほうもsqlから取った値は派手に化けるかと思うんだけど、、。

listでは化けないのにreditで化けるということは、reditへgetで値が渡ってくる時に、
ブラウザがエンコードした文字列の処理でこけてるということっぽい。
ムが化けたりするってことはブラウザからはsjisで来てるんだろうけど、
mb_detect_encoding()でエンコードが所望のものかどうかチェックしてみたほうがいいかも。

ブラウザからの値を内部エンコに変換する方法としは、iniをいじらないなら、
reditのほうでmb_language() + mb_http_input()で入力値を自動変換したり、
$_getの各値をmb_convert_encodingやjcode.phpで逐一変換してから処理するとか。
0091nobodyさん04/06/16 20:13ID:BaSzqMZ7
>>85
わからんけど
<a href="redit.php?mode=edit&sid='.urlencode($row["sid"]).'&brand='.urlencode($row["brand"]).'&item=以下略
はどうでしょう。
0092nobodyさん04/06/16 20:19ID:???
>>89
ブラウザが送ってくるrefererを見る。
リファラを送る機能の無いブラウザやセキュリティ対策ソフトを入れてるヒトは巻き添えで見られない。
.htaccessなど鯖側でやるものでphpではやらない。
session使えばもう少し複雑なコントロールもできるかな。
0093nobodyさん04/06/16 20:23ID:???
>>90-91
まあその辺りだろうな。
91のやり方は変更が少なくていいと思うが、
ユーザから編集後の文字列が渡ってくるわけだから、
どのみちエンコードは変換する必要がでてくることないか?
00947204/06/16 21:37ID:hmUL29ON
>>80 遅れてすみません。

$fp = fopen($file,"r");
flock($fp, 1);
$file = fread($fp , filesize($file));
$file=mb_convert_encoding($file,"EUC","auto");
$csv=split("[\n]",$file);
for($i=1;$i<count($csv)-1;$i++){
$array=split(",",$csv[$i]);
$str=$array[11];
$str=mb_ereg_replace("あ","い",$str);
echo $str;
}

こんな感じでしょうか?
0095nobodyさん04/06/16 21:56ID:???
$csv=split("[\n]",$file);
これいいの?>>79本当かな・・
0096nobodyさん04/06/16 22:10ID:???
>>94
金払ったほうがいいようにしか見えない。
ログのフォーマットを見ないと無理。
0097nobodyさん04/06/16 22:13ID:???
なんか壊滅的なソースだな。
0098nobodyさん04/06/16 23:40ID:???
>>94
mb_regex_encoding('EUC-JP'); を入れるとどうなる?
0099nobodyさん04/06/17 00:21ID:???
>>94
mb_ereg_replace()の直前でvar_dump($str)してくれ。
0100nobodyさん04/06/17 00:24ID:???
データベースの文字コードって、
先のこと考えずに作るなら 取りあえず何にしてる?
0101nobodyさん04/06/17 00:35ID:???
DB板行でやってくれ。
0102nobodyさん04/06/17 00:42ID:???
>>100
OSがEUCなんでスクリプトもDBもEUCにしてる。
下手な小細工要らないし。スプリクトそのものはWin上で
EUCと改行コードLFで書いているんだけどな。
んだけど、UTF8なFedoraCore鯖がそろそろまわってきそうな悪寒。
文字コードそのものはFTPで転送するときに変換すりゃ済むのだが、
メタタグも書き換えるのは面倒そう。http鯖の設定でしのぐ方が
いいのか?
0103nobodyさん04/06/17 00:52ID:???
これからは 先を見越して Unicode? 《季語無し》
0104nobodyさん04/06/17 00:58ID:???
質問させてください。
簡単な掲示板みたいのを作っているのですが入力されたテキストを
ファイルに保存する際に1件につき1行で格納したいと思います。
ファイルから読み出して表示する際には改行もありの状態にしたいので
保存・読み込みのそれぞれで、テキスト中の文字を以下のように相互変換して
やれば良いかなと思ったのですが・・・
[CR]←→"\r" [LF]←→"\n" \←→"\\"

下記のコードで、$s1 と %s3 が等しければ、相互変換は可能ということになりますよね?

 $arr1 = array("\\", "\r", "\n");
 $arr2 = array("\\\\", "\\r", "\\n");
 $s1 = "ABC\r\nEFG \1,000";
 $s2 = str_replace($arr1, $arr2, $s1);
 $s3 = str_replace($arr2, $arr1, $s2);
 echo "<pre>" . $s1 . </pre>";
 echo "<pre>" . $s3 . </pre>";

ところが $s1が上のような場合は問題なく$s3で元に戻るのですが
 $s1 = "ABC\\nDEF\\nGHI\\JKL"
などとすると元にもどりません。

何か間違っているでしょうか。
長文ですみませんが、ご教授ください。
010510404/06/17 01:00ID:???
すみません、</pre> のダブルクォートが抜けてますね。
正しくはこうです。
 echo "<pre>" . $s1 . "</pre>";
 echo "<pre>" . $s3 . "</pre>";
0106nobodyさん04/06/17 02:20ID:WEWy3iw0
XMLを扱いたくて調べてみたらDOMに辿り着いて
まだ実験的なものとかって書いてあるんだけどじゃあ何を使えっていうんだい?
だれか経験者いない?
0107nobodyさん04/06/17 02:29ID:???
> $s1 = "ABC\\nDEF\\nGHI\\JKL"

1. 元データ $s1 → ABC\nDEF\nGHI\JKL
2. 変換 $s2 → ABC\\nDEF\\nGHI\\JKL
3. 逆変換 $s3 → ABC\nDEF\nGHI\JKL

各段階での変数の内容(リテラル)はこうなってるんだと思うが。
1で\\nはエスケープされて改行コードではなく文字列それ自体(ABC\nDEF)として$s1に代入、
2でその\nの\が\\に置換され(ABC\\nDEF)、
3で\\が\に置換される(ABC\nDEF)。
LFは$s1にそもそも入ってないから関係なし、と。
したがってコードはかかれたとおり正常に動作してる。
0108nobodyさん04/06/17 02:34ID:???
>>94
ってかなんでfor文を1から始めてるの?
ファイルの一行目は使わないってこと?
配列は0から始まるって事を勘違いしてたとしたら
$str=$array[11];

$str=$array[10];
の間違い。って事はない?
0109nobodyさん04/06/17 02:36ID:???
>>106
dom関数使えばいいよ。
phpでやろうというならdomかdomxmlかxmlparser(expat)かsimplexmlか、pearライブラリの
いずれかを選んでやるしかない。
011010704/06/17 02:39ID:???
>>109
了解しました。
じゃあdomで逝きます。
ありがとうございました。
0111nobodyさん04/06/17 02:44ID:???
もうDOM2対応なんでしょ。
なら変更があるといってもよほど妙な機能を使ってない限り
大したことないような。
漏れはSimpleXml関数とXml関数で足りてるからDOMのことば
よう知らんけど。
0112nobodyさん04/06/17 02:51ID:???
>>108
csvなら一行目が定義フィールドな可能性はある。
まあイテレータが1から始まる理由にはならんけど。
つーかそれ以前にエラー処理とかflockの定数とかありえない文字コードの指定とか
splitを使ってるとことかキャラクタクラスが\nなとことか""で囲まれた値を考慮してないとか
毎回countしてるとことかfgetcsvを使ってないこととか無意味な代入とか、
ようするに釣りじゃなければなんだってことのほうが重要だと思うけど。
0113nobodyさん04/06/17 02:58ID:zQROHTgZ
ワラタ
011410404/06/17 02:59ID:???
>>107
ありがとうございます。
それが正常にならないのです。
各段階を実際に出力させてみると、以下のようになってしまいます。
(上から$s1 $s2 $s3 です)


<pre>ABC\nDEF\nGHI\JKL</pre>
<pre>ABC\\nDEF\\nGHI\\JKL</pre>
<pre>ABC

DEF

GHI\JKL</pre>


書き忘れていましたが環境は PHP4.3.7 + IIS5.0 です。
011510404/06/17 03:00ID:???
たびたびすみません、なぜか1行ずつ空いていますが
実際には空いていません。

<pre>ABC
DEF
GHI\JKL</pre>
0116nobodyさん04/06/17 03:13ID:???
ほんじゃstr_replaceの仕様がそうなんだわ。
検索語・置換語が複数渡ってるから、まず
s2の ABC\\nDEF\\nGHI\\JKL が ABC\nDEF\nGHI\JKL に置換されて、
さらに ABC\nDEF\nGHI\JKL が残りの$arr2の置換(\n -> LF)をやって
s3に改行が入るんだろうね。
0117nobodyさん04/06/17 03:38ID:???
まあLFを変換した\nも、ふつうに文字として入力された\nとか\\nも区別がつかないので、
出力時どれも改行に逆変換されちまうってことですな。
だからリテラル\nがもとに戻らず改行になってしまう。
\nという文字列を入力できなくするのはナンセンスだし、エスケープを実装するとコスト高なので、
入力される可能性のない文字列に置換して保存するしかないか。
0118nobodyさん04/06/17 03:53ID:???
>>116
その通りだが、しかし順番を変えても同じことだぞ。
単純に考えたほうがいい。
0119nobodyさん04/06/17 06:43ID:???
質問させてください。
ImageTTFTextを使って日本語を書き込みたいのですがどうも文字化けしてしまうのです。
文字の部分はUTF-8にエンコーディングしているのですが、
サーバーの仕様に依存するのでしょうか?
ご教授よろしくお願いします。
0120nobodyさん04/06/17 06:59ID:???
サーバーの仕様?
ハードウェアやosやhttpdのことなら関係ないだろ。
phpのコンパイルオプションやini設定には依存する。
何をしてるのかかかれてない以上マニュアル読めとしか言えないよ。
0121nobodyさん04/06/17 10:35ID:dLzzZdYX
>>91
ありがとうございます。それでいけました(^^)
0122nobodyさん04/06/17 13:28ID:mG7yRBZ4
テキストエリアにテキストを読み込んだときにテキストに<br>とあった場合、例えばあああ<br>いいいとあった場合
そのまま表示されてしまいます。<br>を出さずに改行された状態でテキストエリアに読み込みたいのですが
どうすれば良いでしょうか??よろしくお願いします。
0123nobodyさん04/06/17 13:30ID:???
<br>を改行に痴漢
0124ぺぷし04/06/17 13:30ID:t9pcSu9t
PHP+MySQLでBLOBフィールドにバイナリデータとして格納された画像の書き出し。

初めて書き込みさせていただきます。PHP初心者のため、ご教授いただけたら幸いです。
MySQLのデータベースのBLOBフィールドにバイナリデータとして格納してある複数の画像ファイルをPHPでブラウザに全て自動的に書き出すようにしたいのですが、下記のようにDo Whileを使ってフィールドの全データを書き出そうとすると
"Cannot modify header information- headers already sent by output started ..."というエラーになり、画像ではなくバイナリデータのまま
出力されてしまいます。

ちなみに、ループにいれず、クエリで抽出した単一の画像だけを出力する分にはこのようなエラーは出ず、画像を表示することができるので、
ループに入れることで、header情報のContent-typeの指定が繰り返されるのがいけないのだと思うのですが、試しにループの外にheader("Content-type: " . 'image/jpg'); の部分をおいてみるとファイルダウンロードダイアログボックスが開いてしまいます。

ループでの全データ書き出しはできないのでしょうか?
どなたかご存知の方、いらっしゃいましたらお助け下さい。
***********************************************************************
<table border="1">
<tr><td>ID</td><td>Image</td></tr>
<?php do { ?>
<tr><td><?php echo $row_rs1['id'] ; ?></td>
   <td> <?php header("Content-type: " . 'image/jpg');
    echo "<img src= {$row_rs1['image'] } >"; ?></td>
</tr>
<?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
</table>
0125nobodyさん04/06/17 13:34ID:mG7yRBZ4
>>123

理屈はわかるのですが^^;ソースで書くとどんな風になりますか??よろしくお願いします。
012612504/06/17 13:35ID:mG7yRBZ4
すみません、お礼言うの忘れてました。ありがとうございます、そしてよろしくお願いします
0127nobodyさん04/06/17 13:38ID:???
>>124
なんと言うかだな・・・とりあえず画像とHTMLの出力は別にしようや

>>125
よく分かりませんが、マニュアルを知らないという意味でしょうか?
http://www.php.net/manual/ja/
0128nobodyさん04/06/17 13:38ID:???
>>124
なんじゃぁそのソースは。

>>126
str_replace
0129nobodyさん04/06/17 13:44ID:???
>>124
mysql ヘルプ!
http://pc5.2ch.net/test/read.cgi/php/1011683282/466

('A`)
できない
0130nobodyさん04/06/17 13:54ID:mG7yRBZ4
>>127>>128
ありがとうございます!
これの反対をすればいいということですかね!?

$s = str_replace("\r\n", "\r", $s);
$s = str_replace("\r", "\n", $s);
$s = str_replace("\n", "<br>", $s);
0131nobodyさん04/06/17 19:09ID:???
リンク元URLが /game/index.html からの場合と
/link/index.html からの場合で、出力を振り分けたいのですが、

$gets = getenv{"HTTP_REFERER"};
if ($gets =~ "/game/index.html") {
print ("ゲームから来ましたね");
}
elseif ($gets =~ "/link/index.html") }
print ("リンクから来ましたね");
}

こんな書き方をしても、/link/index.html から来たやつも
全部何故か /game/index.html の方に飛んでしまいます。
分かる方お願いします。
013213104/06/17 19:09ID:AJJf+veG
age忘れました
0133nobodyさん04/06/17 19:17ID:???
>>130
ここ何日かご苦労な釣りを続けてるのはお前か。さっさと死ねよクズ
0134nobodyさん04/06/17 19:19ID:H2q6Vd97
$a = "test";
$b = "test";

print $a.$b;

で文字出力させた時、
何故か$aのtestが漢字で文字化けし、
$bのtestは正常に表示されます。
両方とも半角英字で同じ文書なのに、何故最初のだけが
文字化けするのでしょうか?
分かる方居ましたらお教え下さい。
0135nobodyさん04/06/17 19:22ID:???
131もだな。
何が楽しいんだか。
0136nobodyさん04/06/17 19:23ID:???
>>135
??
0137nobodyさん04/06/17 19:27ID:???
つつくと逆効果だぞw>133
つーかまともに答えてる奴がいるのが笑えるんじゃね。
013813104/06/17 19:27ID:???
>>135
どういう意味ですか?
0139nobodyさん04/06/17 19:37ID:???
つまり股間はガチガチだってこったな
0140nobodyさん04/06/17 19:52ID:???
仕事から帰ってきたら、なんだお前ら!!















>>134も仲間に入れてあげてください
014113104/06/17 20:10ID:???
ここって質問しても答えてもらえないんですか?
他行きます・・
0142nobodyさん04/06/17 20:12ID:???
ワンパターン脳にも程が無いか・・・
0143nobodyさん04/06/17 20:14ID:???
>>134
もちつけ
0144nobodyさん04/06/17 20:39ID:???
>>143
釣りにょ。
0145nobodyさん04/06/17 20:40ID:???
131は文盲ですか?・・・・と聞きたくなる釣りですね
0146nobodyさん04/06/17 20:45ID:???
>>131
=~って・・何年前の話だ。ereg使えよw
014713104/06/17 20:52ID:???
>>146
意味が分からん。つーかもういいよ。自分で考える。
0148nobodyさん04/06/17 21:15ID:???
=~ これってネタの臭いよ。

$gets = getenv{"HTTP_REFERER"};
if (preg("|/game/index.html|",$gets)) {
print ("ゲームから来ましたね");
}
elseif (preg("|/link/index.html|",$gets) }
print ("リンクから来ましたね");
}

はい、どうぞ!
0149nobodyさん04/06/17 21:19ID:???
あっ、しまった。$gets = getenv{"HTTP_REFERER"}; これもネタ臭かった。

君の言語は難題?
0150nobodyさん04/06/17 21:28ID:???
しつもんさせてください
header('Content-Type: image/jpeg');
imagejpeg($im);
で、イメージを出力させてもjpegにならず、bmpになってしまうのはなぜでしょうか?
ご教授よろしくお願いします。
0151nobodyさん04/06/17 21:37ID:???
>>150
釣りキタ━━━━━━(゚∀゚)━━━━━━!!!!!
0152nobodyさん04/06/17 21:45ID:???
>>151
漏れも最初釣りかと思ったんだけど、記憶が確かならば
ブラウザがIEだと画像をローカルに保存するときに御丁寧にもBMPに変換してくれたような。
01539404/06/17 22:01ID:QhI2MtNB
遅くなってすみません。

>>98 おお、いけました^^ ありがとうございました。
 mb_regex_encoding() ではちゃんとEUC-JPとでてるのに・・。

>>99 string(8) "あいうえ"  こんなんでました。

>>108 >>112 察するとおりCSVの1行目は使いたくないので1にしてます。
fgetcsv こんな関数があるとは知りませんでした。
その他いろいろな駄目だしありがとうございました^^;
もっと勉強してみます。
0154nobodyさん04/06/17 22:12ID:???
>>151
ウケタ
015515004/06/17 22:37ID:???
>>152
なるほどです!
ネスケで試したらちゃんとjpgになってました。
IEがいけなかったんですね・・・
ありがとうございました
015613004/06/18 00:01ID:PKyyDHRx
>>133
釣りじゃないですよ。。

$s = str_replace("\n", "<br>", $s);

これで出来ました!
教えてくださった方達どうもありがとう!
初心者の頃は釣りみたいな質問をしちゃうってことか・・

015710404/06/18 00:02ID:???
>>116-118
おっしゃるとおり str_replace では複数の置換を同時に行うと、
置き換えた文字列をさらに置き換えることができてしまうようですね。
結局 preg_replace_callback と str_replace を組み合わせることで解決できました。
どうもありがとうございました。
0158nobodyさん04/06/18 00:44ID:???
nl2br使えよ
\n <-> <br> じゃhtmlが見難くて仕方ない
0159nobodyさん04/06/18 05:32ID:???
>>158
122をよく見て書き込みましょうね
テキストに<br>とあった場合のこと言ってるんだからそれ使えないよ(w
0160nobodyさん04/06/18 08:31ID:???
誰か>>134の釣りにマジレスする者は居ないか?
0161nobodyさん04/06/18 09:21ID:???
>>160
君を>>134と認定する。おめでとう♪
0162nobodyさん04/06/18 13:54ID:???
134
普通にtesttestと出るよ
0163nobodyさん04/06/18 14:34ID:YdLASFW3
postgresqlとphpで掲示板を作っていまして、"前の10件"、"次の10件"機能を備えたいと
考えているのですが。。

仮に12件のフィールドが合った場合、本来なら次の10件をおすと残りの2件だけが表示されるべき
なんですが、何故か残りの2件のあとにまた1から表示し(8まで)最終的に10件になるまで表示してしまいます。

データベースに直接、select * from db limit 10 offset10;
とすると正常に2件のみが表示されます。

phpのスクリプトは
$con = pg_connect("dbname=datebase user=postgres password=***");
$sql = "select * from database limit 10 offset $page";
$result = pg_exec($sql);
$count = pg_numrows($result);
for ($i=0;$i<$count;$i++)
{
//処理
}
とこんな感じですが$countに10が入ってしまっている状況です。

phpかpostgresql側なのかどちらで適切か解らなかったので、もしスレ違いでしたら
申し訳ないです。
ご教示お願いします。
0164nobodyさん04/06/18 15:17ID:kjBT0b/w
>>163
$pageはどこで定義してんの?
0165nobodyさん04/06/18 15:22ID:???
>>163
キミジャムリ アキラメナサイ
0166nobodyさん04/06/18 15:24ID:???
offsetの値を手で変えたりとか、offset/limitを付けたり外したりだとか
試す事はまだいろいろありそうなんだが

デバッグの仕方を自力で覚えないと一生スキルあがんないよ
0167nobodyさん04/06/18 15:33ID:YdLASFW3
>>166

すいません、記入しませんでしたが既に試してます。limitをはずすってどういうことでしょう??

0168nobodyさん04/06/18 15:37ID:YdLASFW3
>>164

if($page=='')
{
$page = '0';
}
.
.
.
if ($page<9)
{
<a href=\"index.php?page=".($page-10)."\">前の10件</a>
<a href=\"index.php?page=".($page+10)."\">次の10件</a>

抜粋しましたがこんな感じです
0169nobodyさん04/06/18 15:38ID:YdLASFW3
if($page=='')
{
$page = '0';
}
.
.
.

<a href=\"index.php?page=".($page-10)."\">前の10件</a>
<a href=\"index.php?page=".($page+10)."\">次の10件</a>
0170nobodyさん04/06/18 15:40ID:???
う゛ぁr_づmp($ぱげ)
0171nobodyさん04/06/18 15:48ID:???
print $sql; を試さないのはなぜですか?
0172nobodyさん04/06/18 16:15ID:kjBT0b/w
>>168
GETで来た$pageの値はどこで受け渡してんの?
0173nobodyさん04/06/18 16:16ID:???
>>168 $_GET['page']だったら頃す
0174nobodyさん04/06/18 16:17ID:kjBT0b/w
そんな予感がしてきたな
0175nobodyさん04/06/18 16:52ID:???
どうやら図星だった様だ
質問する以前のレベルだな
0176nobodyさん04/06/18 17:14ID:???
>>150>>152>>155
遅レスだが、IEの場合キャッシュがオフだとbmpで保存するらしい
明示的にキャッシュをオンにするといいかも
0177nobodyさん04/06/18 17:25ID:WxV310Yf
画像アップロードでアップローダーと表示画面を同じページにしてるのですが、
画像を削除してその後追加すると削除した画像が一度ページに映り、更新しないと後で追加した
画像が表示されません。。画像の削除は別ファイルで行っています。
どうにか画像追加したときにページの更新まで出来ませんか?
0178nobodyさん04/06/18 17:55ID:w9rleEeT
phpスクリプトと同じディレクトリーにaaaというファイルを作成し、
このディレクトリーにrwxrwxrwxというパーミッションを与えておいて
以下のスクリプトでaaaの中にbbbというディレクトリを作成して、
bbbの中にfileという名前のファイルを作成しようとしているのですが
bbbまでは作成されるもののfileが作成されません。

<?php

mkdir("aaa/bbb");

$OUT = fopen("aaa/bbb/file", 'w');
flock($OUT, 2);
fwrite($OUT, "test");
flock($OUT, 3);
fclose($OUT);

?>

レンタルサーバーでやってましたが、ほかのレンタルサーバーでもダメでした。
どうやらセーフモードで制限を受けているためのようなのですがセーフモードでも
上記の操作を行う方法が他にあるでしょうか?
よろしくお願いいたします。
0179nobodyさん04/06/18 18:00ID:???
bbbのパーミッションは?
018017804/06/18 18:04ID:???
あ、すいません 書き忘れてました。
bbbのパーミッションはrwxr-xr-xです。
オーナーは自分のアカウントでなくapacheというアカウントになっています。
0181nobodyさん04/06/18 18:06ID:???
>>176
明示的にキャッシュをオンにするってどうやるんですか?
0182nobodyさん04/06/18 18:13ID:???
<?php
class test {
 function type( $type ) {
  $stack = array();
  print( gettype( $stack ) );
  function test( $test ) {
   global $stack;
   print( gettype( $stack ) .": グローバルにした時の変数の型" );
   print $test;
  }
  test( $type );
 }
}
$t = new test;
$success = "成功" ;
$t->type( $success );
?>
としたときに、
gettype( $stack )
がNULLを返さずに、arrayを返すようにするにはどうしたらいいですか?
0183nobodyさん04/06/18 18:18ID:???
functionの中にfunctionがあるってアリなん?
0184nobodyさん04/06/18 18:25ID:???
そんな事する意味がわからん
0185nobodyさん04/06/18 18:26ID:???
おかしい
どう考えてもおかしい
018618204/06/18 18:30ID:???
>>184
>>182の文はもとは複雑だったので、簡略化してモデルとして書きました。
本当は上記のfunction typeはXMLパーサーで呼び出されるハンドラ関数なんです。
そして、$stackには現在のXML要素を収めたい配列なんですが、
開始要素、データ、終了要素の各functionで$stackを共有させたいのですが、
できなくて調べていたら、global $stackで共有させると、
データ型が失われて、配列として扱えなくなっているんです…。

ググッてみても、良い参考例がなくて…。かといって、クラス変数にしてもちゃんと
扱ってもらえないので、2日ほどはまっています…。
018718404/06/18 18:34ID:???
自分の中では、クラス->メソッド->ユーザー定義関数としての
class->function(XMLパーサ)->function(XML処理部分の関数)は成り立つのかと
思ったんですが…。
各function(XML処理部分)を別クラスにまとめた方がいいんでしょうか?
0188nobodyさん04/06/18 19:33ID:???
>>181
マニュアル読んだ?header()の項目からたどれば、
ttp://jp.php.net/manual/ja/function.session-cache-limiter.php
こことか
ttp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
ここを見れば判りそうなもんだけど
0189nobodyさん04/06/18 19:37ID:???
グローバルスコープに変数stackは存在していないから、
global $statck; がnullになるのは当然。
存在しない変数のnull以外の型情報が返る事はありえない。
019018904/06/18 19:39ID:???
なのでデータ型が失われているわけではないよ。
0191nobodyさん04/06/18 19:45ID:???
>>189
それはわかっているし、定義をしているけれど、
クラス内のメソッド内で定義した変数をグローバル変数にして
メソッド内のユーザー定義関数からグローバル変数を参照できない場合、
どうしたらいいのかっていうことを知りたいんだ…。

再利用制なんか考えずに、ひとつのファイルにまとめちゃえばいいんだろうけれどさ。
0192nobodyさん04/06/18 19:47ID:???
>>187脳が沸いてんのかお前
0193nobodyさん04/06/18 19:53ID:???
> メソッド内で定義した変数をグローバル変数にして

初歩の初歩すぎて書くのば馬鹿馬鹿しいが、出来ません。
どうやればできると思ったんだ?
グローバル変数を呼び込んでそれを書き換える。
プログラミング言語のスコープ概念を知りましょう。

> メソッド内のユーザー定義関数からグローバル変数を参照できない

さっきも書いたがグローバル変数は参照できる!
ユーザー定義関数はグローバルスコープでやる!
ユーザー定義関数はメソッド内で定義できない。

クラス概念が分かってないようだが、xmlパーサー関数のクラス粒度が
分からないならpearのxml_htmlsaxを読むと勉強になる。
0194nobodyさん04/06/18 19:55ID:???
関数ないで定義したらローカルスコープになるのが当たり前だろ。
こいつも釣りだな。
0195nobodyさん04/06/18 19:58ID:???
functionがパーサーならclassは何だよw
クラスの振る舞い定義の中に振る舞い定義があるとはw
ハライテー
0196nobodyさん04/06/18 19:58ID:???
最近釣りなのかマジボケなのか判断に悩む質問多杉
0197nobodyさん04/06/18 20:11ID:???
ファイルを分けるかどうかはクラスとも変数ともスコープとも関係ない。
クラスはともかくスコープが分からなきゃハンドラかけんだろ。
それはわかってる、と言いながらその前の指摘を無視して終わりのない話を
はじめてるあたり、やや釣り的な特徴が出てると言えるな。
019818704/06/18 22:08ID:???
>>193
>> メソッド内で定義した変数をグローバル変数にして
> 初歩の初歩すぎて書くのば馬鹿馬鹿しいが、出来ません。
> どうやればできると思ったんだ?
単純に、メソッドとして定義したfunctionに入れ子にしたfunctionが正常に動作したから。

> クラス概念が分かってないようだが、xmlパーサー関数のクラス粒度が
> 分からないならpearのxml_htmlsaxを読むと勉強になる。
クラスとPEARの繋がりを不思議に思ったけれど、実際に Parser.php を読んで
オブジェクト内部でXMLパーサを使用する場合には、
 xml_set_object
を利用しないといけないのね。
どうもありがとう。

他はバカばっかだな。
0199nobodyさん04/06/18 22:45ID:???
>>182
$stackをグローバル変数にする意味あるの?
class test {
var $stack;
function type( $type ) {
$this->stack = array();
// 以下略
}
}
みたいにすればいいだけの話では。
0200nobodyさん04/06/18 23:29ID:???
>>193 単純に、メソッドとして定義したfunctionに入れ子にしたfunctionが正常に動作したから。

なんでネストした関数が動作するとローカルスコープの変数をグローバル化できることになるのか分からん。
これが出来たらスコープもそうだが関数型プログラミングの存在意義そのものもない。
xml_set_objを使えばナビゲータビリティを双方向化できるが、ハンドラクラス内でハンドラをコールする側を
呼べるようになることと、グローバルスコープの変数を参照することとはまるで関係がない。
(ハンドラに特化したクラスのなかでパースするというのも奇怪なクラス関係じゃないか・・・)
しかもparser.phpってPear::XMLのでしょ? >>193のいうhtmlsaxは全く別のパッケじゃなかったっけ。
君たち会話が成り立ってませんよ。
0201nobodyさん04/06/18 23:31ID:???
激しくズレた>>193>>198(187, 184の人)
0202nobodyさん04/06/18 23:35ID:+ev/OK60
どうもありがとうって言ってるんだから、四方万事解決だろ?
もういいんじゃない。
0203nobodyさん04/06/19 00:59ID:???
header("Cache-control: public");
ですよね?
だけどjpgで保存できませんyo
0204nobodyさん04/06/19 05:58ID:???
file_get_contentsを使ってhttp経由でデータを取ろうとした。全部はいらないので部分的GETをやろうと思った。
stream_context_createでhttpのheaderに Range: bytes=256-\r\n を追加してコンテクストリソースを作った。

よしということで、file_get_contents('http://example.com/example.html', null, $context); とやってみたんだけど、

Warning: file_get_contents(http://example. . . ): failed to open stream: HTTP request failed! HTTP/1.1 206 Partial Content

というエラーがでてデータが取れない。
206が返っているからサーバは問題なく処理したようなのだが、
となるとphpが206応答をハンドリングできないということなのだろうか。

結局ソケットストリームでちまちまとやることになったのだが、上の疑問は残った。
コンテクストを使った部分的GETは出来るぞ、とかトリビアがあれば希望。
020520404/06/19 06:14ID:???
追記。
TCPパケット見たらやっぱりデータの受信自体には成功してる。
なんだろう。PHP 5.0.0RC3なんだけど、RCだっつーのにバグかな、、。
0206nobodyさん04/06/19 13:09ID:???
>>178
いろいろやってみたけど今はあきらめた。
0207nobodyさん04/06/19 15:25ID:???
>>204
Reads entire file into a string
0208nobodyさん04/06/19 18:00ID:???
sscanfで

$date = "2004-06-17 12:00:00";
sscanf( $date, "%s-%s-%s %s:%s:%s", &$Y, &$M, &$D, &$H, &$m, &$S );
print( $Y.$M.$D.$H.$m.$s );



20040617120000

として出力したいんですが、

2004-06-17

と出力されます。いろいろ試してみた結果、日付に含まれる「-」が原因だとわかったのですが、
意図した出力にするためには、どうしたらいいのかわかりません。
sscanfのリファレンスを見ても、何も書いていないので、
おそらくフォーマット文字列と関係あるとは思うのですが…。
0209nobodyさん04/06/19 18:17ID:???
>>207
天然ですか

>>208
http://jp.php.net/sprintf
0210nobodyさん04/06/19 21:06ID:???
ある時間とある時間との比較を行いたいのですが(具体的には、DBへの変更期限を設けるという機能をつけるのですが)
どういう方法が一般的でしょうか?
期限をDBへ保存するので、その数字を見たときにすぐ分かるようにもしたいので
time関数以外でしたいのですが。
今のところ、date('YmdGis')の形式の数字を比較という方法を思いついたのですが、ほかに一般的な方法ありますか?
0211nobodyさん04/06/19 21:25ID:???
>>210
DBではTIMESTAMP型で記録しておけば、取り出したときにはPHPの文字列型に
なっているはずだから、それを strtotime() で数値 (UNIX epoch からの
通算秒)に変換するとか。
0212vv04/06/19 22:12ID:???

クラスをまとめた.phpファイルをrequireして読み込むと

Echoしていないのにブラウザにクラスの内容が表示されてしまいます


require ("/class.php");

とすると

class userclass { var $name; var $region・・・

という風にブラウザ上部にクラスの内容が表示されてしまいます

これって何??
0213nobodyさん04/06/19 23:08ID:???
<?php

?>
で囲んでる?
0214nobodyさん04/06/19 23:22ID:???
>>208
$date = "2004-06-17 12:00:00";
print(date("YmdHis", strtotime($date)));
021521204/06/20 00:15ID:TK4JxxLi
囲んでなかった・・
須磨祖
021620804/06/20 00:54ID:???
>>214
ありがとう。今実行して動作確認を行って、意図した結果になりました。

ところで、>>209のsprintでどうやったら、意図する結果になるんですか?
思いつく限り、やってみたんですが、実行結果と意図が違うのですが…。
021720804/06/20 00:56ID:???
連続カキコで申し訳ないけれど、
おかげで英文形式の日付なんてのも勉強になりました。
http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html#SEC111
0218nobodyさん04/06/20 03:09ID:???
If you wanna go for Secret Page.
You should press Tablator ten times,
...And EnterKey! :-)
0219nobodyさん04/06/20 03:09ID:???
ttp://cgi.f13.aaacafe.ne.jp/~mugen/bgshop/index.php
0220vvv04/06/20 04:56ID:???
連想配列にクラスオブジェクトを入れてシリアライズしたいんですけど
無理なんでしょうか?



class userclass{
var $name;
var $address;
}

$class=new userclass;
$class->name="名前";
$class->address="住所";


$value["20040620"]=$class;

$s = serialize($value);
$fp = fopen($path, "w");
flock($fp,LOCK_EX);
fputs($fp, $s);
flock($fp,LOCK_UN);
fclose($fp);
0221nobodyさん04/06/20 06:40ID:???
>>220
展開先でデータを展開する前に同じクラスを宣言する必要がある。
0222vvv04/06/20 11:22ID:???
いや、それが展開する前の
保存自体ができんのよ
0223nobodyさん04/06/20 12:15ID:???
$pathを設定してないとかいうオチじゃないのん?
うちでは上のスクリプトに$pathを設定したら動いたよ。unserializeも確認済み。
022422004/06/20 12:49ID:???
↑その通りのオチだった
痛すぎた スマソ
0225nobodyさん04/06/20 13:19ID:e+KlAhh1
    , - ' ゙    `` ‐ 、_,,,,,
   ,r'          /=ミ
  /           彡ll',''´
. /             彡lll
 !-- .、    ,、、、、,,,   彡lノ
 l,,,,,__ /   ___     'r''゙ヽ
. |`゙'' ./   `'゙'''"    .〉,l |
 |.   ,'           //
. ',. ,'           , r'
.  ゙, ゙'ー ‐`      l  |
   ゙、''゙ ,,、二''‐    ノ  l、
''''''''7'ヽ  '''    /   /`〉`゙T''''''''''
  l  ` 、,,,,、- ' "    / /.|  |
.  |  |  .l i       / ./ |  |
  |  |  | l      / ./ .|  |
. |  |   | l     / /  |  |
 |  |   | ',   / /  l  .l
【ゴールデンレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です



0226nobodyさん04/06/20 15:33ID:???
質問させてください。
例えば掲示板の本文($msg)の中のJsky絵文字($E> 等)だけに
htmlspecialcharsを施したくない場合はどうすればいいでしょうか。
0227nobodyさん04/06/20 15:44ID:???
>>209
お前は和訳できんのか?
file_get_contentsはファイル全体を読み取る関数、断片を読み込めるハズがないだろ
0228nobodyさん04/06/20 16:02ID:6Dgt7SHl
php+gdでJPEG画像を表示させようとしています。

$im2 = ImageCreateFromJpeg("test.jpg");
header("Content-type: image/jpeg");
ImageJpeg($im2);
ImageDestroy($im2);

というphpファイルにアクセスしてブラウザに表示させようと
しているのですが、うまく表示されません。(IEだと壊れたイメージ
アイコンになる)
ImageJpeg($im2,"o.jpg");
としてファイルに書き出して、そのファイルにアクセスすると
ちゃんと見れます。
なんか原因わかりますでしょうか。

OS: linux
PHP: 4.1.2
apache: 1.3
GD version: 1.6.2 or higher

となっています。

0229nobodyさん04/06/20 18:03ID:???
PHPはこの先生きのこることができますか?
0230nobodyさん04/06/20 18:26ID:???
>>227が痛すぎるんだけど、さすがに釣りですよねw
0231nobodyさん04/06/20 18:49ID:???
実体より言葉を重視する種族の出身なんだろ、未開の。
しかしデータの受信に成功してるという部分が読めてないことを考え合わせるとマニュアル権威言霊主義かな。
ファイルが何なのか分かっていないらしいから、一般的なデータ構造についてはまだググってないと見える。
アンチマニュアルのあつまるこのスレではかなりの希少思想者だと言える。
とりあえずエラーを吐いてるのはfile.cではなく別のソース部分だよ、とヒントを与えてみるが、さて。
0232nobodyさん04/06/20 19:08ID:QviSJ75H
馬鹿か。わざわざ邦訳済みのマニュアルの英語版を持ってきて
和訳できんのかなんていってるんだからただの糞厨房にきまってんだろ。
しかもファイル全体を読み込むからとか言語障害くせーぞ。
すげー無駄だわ。

>>228
スクリプトは問題ないし、GDのバージョンかなあ。
0233nobodyさん04/06/20 19:39ID:???
どうだろう。geleralの方ではバージョンでこけてるような報告はなかったけど。
つーかRedhat?
あれにデフォルトでのってるphpを使うといろいろ苦労が絶えないらしいね。
023420404/06/20 20:16ID:???
>>207
>>231が少し書いているが、これは本質的にはfopenの問題なのでfile_get_contents()だけじゃなく、
fopenのhttpラッパーをとるhttpアクセスすべて(要するにコンテクストをつかったもの)で起こる。

因みに、本家のバグリポートはこの問題の修正には極めて消極的で、
あきらめるしかないようだった。

荒れぎみなのでこの話はこれで終了ということにしてほしい。
以上。
0235nobodyさん04/06/20 20:32ID:Uv3J3abe
PHP 4.3.7を使っています。
バッチファイルからローカルでPHPを処理するプログラムを書きました。

ファイル名の一括置換プログラムなんですが、

foreach($rename as $var){ //$renameは置換条件を記した配列
 $n = $newfilename;
 $newfilename = preg_replace("/$var[0]/i","$var[1]",$newfilename);
 if($n != $newfilename) print "$n\n"; //四行目
}

として、preg_replaceで文字置換を行っているんですが、
日本語ファイルの場合、必ず ー(伸ばす音) が ・ に文字化けします。
四行目では、preg_replaceを通す前と通ったあとが違う場合に変化を表示させようと
したのですが、改名条件にはまったく ー を入れてないのに、
文字が変わってしまいます。

本バージョンで、文字化けなどのバグは報告されたりしてるんでしょうか
ググったら前のバージョンでの文字化けの情報があり、 ←参照ttp://jp.xoops.org/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=1998&forum=11&move=next&topic_time=1063857527
php.iniの設定をいじってはみたのですが変わりません。
0236nobodyさん04/06/20 20:41ID:???
バグじゃなくてただの設定ミスだね。
キチンと質問文かけば偉い人が教えてくれるかも。
0237nobodyさん04/06/20 20:51ID:???
設定しなくても文字コードさえ合わせれば正しく置換できると思うけど、
そうなるとphpの問題じゃなくなるか。環境しだいですな。
0238nobodyさん04/06/20 20:55ID:???
自己解決するに15カノッサ。

ところでphpの日本ユーザ会ってアクティブにやってんの?
まるで話を聞かないんだが。
googleの検索順位ではいつのまにかphp研究所を抜いてるね。
0239nobodyさん04/06/20 22:00ID:PqNZ37ce
printやechoや<?php ?>の外側の標準出力への出力を
スクリプトの途中で
いろんなファイルにリダイレクトしたいのですが
どうしたらよいですか?
024022804/06/20 22:12ID:???
>>232-233
どうも。結局原因不明のままファイルに書き出すように
仕様変更しました。
ちなみにDebian (woody)のパッケージ物でした。
本番環境は自分のいじれない環境なので、自力コンパイル
することもできず。。
024123504/06/20 23:01ID:Uv3J3abe
設定となるとphpの設定かwindowsの設定かどちらなんでしょうか
文字コードはphp.ini で
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
にあわせたんですが、どこの設定を見直せばいいのでしょう
参考の参考ていどでもアドバイスがいただければお願いします
0242nobodyさん04/06/20 23:11ID:???
>>240
>PHP: 4.1.2
この頃のPHPでoutput_handlerにmb_output_handlerを使っていると、
Content-Typeを見ずに画像もコード変換するので画像が壊れるんだが
(phpinfoのロゴまで壊れてくれる)、その現象じゃないのか?
0243nobodyさん04/06/20 23:11ID:???
そうか、php をやるならまず apache をいれなアカンのか。
0244nobodyさん04/06/20 23:20ID:???
>>243
そんなことはない。確かにメジャーな組み合わせだけどね。
Webサーバ用インターフェースはCGIも含めて色々あるし、CLI(コマンドライン)版もある。
0245nobodyさん04/06/20 23:24ID:???
>>244
じゃあ Hello World ! 表示はどうやるの?
0246nobodyさん04/06/20 23:28ID:???
>>245
php -r 'echo "Hello World !";'
0247nobodyさん04/06/20 23:36ID:???
foo@bar[~]% php -r 'echo "Hello World !";'
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/mysql.so' - libmysqlclient.so.12: cannot open shared object file: No such file or directory in Unknown on line 0

orz
0248nobodyさん04/06/20 23:43ID:???
>>247
auto_prepend_file
0249nobodyさん04/06/20 23:44ID:???
(;´Д`)????
0250nobodyさん04/06/20 23:54ID:???
>>249=247?
>>247のエラーは、php.iniにauto_prepend_fileを設定してあるんではないかと。
外しているかもしれんが。
設定してあったとしても、そういうエラーが出るのは不思議だが、
使ったこと無いので、わからんぽ。
0251nobodyさん04/06/21 00:19ID:???
>>241
winの文字コードからスクリプト内で扱っている文字コード(euc-jp)に
コンバートして、書き込み時は逆変換すればおkと思われ。
0252nobodyさん04/06/21 00:26ID:???
$ php -r 'echo "Hello World !";'
Error in argument 1, char 2: option not found r
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-a Run interactively
-C Do not chdir to the script's directory
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse <file>. Implies `-q'
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-v Version number
-w Display source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.

できないヽ(`Д´)ノ
0253nobodyさん04/06/21 00:29ID:???
>>252
php --version してみろ。多分それはCGI版だ。
0254nobodyさん04/06/21 00:32ID:???
CGI版だった。CLI版にするにはどうやったらいいのかわかんない
0255nobodyさん04/06/21 00:39ID:rIRMytTY
PHPのインストールでGDが有効になってくれません。

zlib libjpeg libpng GDをインストールした後、
./configure --with-zlib-dir=/usr/local/lib --with-gd --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib
make
make install
としたのですが、

なにか他にやることがあるのでしょうか?

OS: linux
PHP: 4.3.6
apache: 1.3


0256nobodyさん04/06/21 01:36ID:???
> なにか他にやることがあるのでしょうか?
FAQ を読むこと
025723504/06/21 02:16ID:U3ATJTTU
>>251
アドバイスありがとうございます。
それってphp.iniの設定ですよね?
今色々調べながら苦戦中です。文字コードを変えたら
日本語がまったく表示できなくなったりして
0258nobodyさん04/06/21 02:31ID:???
>>256
一応PHP.net等のFAQは見てみたのですが、参考になりそうなのがなさそうでした。
見つけられないだけかもしれません。
PHP付属のがあるので、GDは特に自分ではインストールする必要がなかったのでしょうか

0259nobodyさん04/06/21 02:48ID:???
>>257
iniの設定であわせてもいいし、251にあるようにスクリプト内で変換してもいい。
phpで参照する場合には、内部エンコードに合わせ、最終的な出力時にはwinの
コードにあわせて変えればいいだけ。
必要なことは全部マニュアルに書いてあるので、他は色々調べる必要なし。
http://www.php.net/mbstring

要するに内部エンコとwinのエンコが違うなら、当然一手間かける必要があるということ。
文字コードはいつまでもついて回るので自分で分かったと思えるまでやったほうがいいのです。
026025704/06/21 03:19ID:U3ATJTTU
>259
何度もすみません、ご指定のページを自分でも見つけてやってはみたのですが、
もとのphp.iniに追加モジュールのphp_mbstring.dllをsystem32に追加して
追加モジュールを受けるように php.iniのその行の;をはずしました。
あとは例2にあるようなEUC-JP ユーザ用のphp.iniの設定に直せばいいんですよね
php.iniはそのページの設定どおりに変更したはずなんですが、どうしても
伸ばす音が文字化けが消えないのですが、他にいじるところはあるのでしょうか
preg_replaceでもmb_ereg_replaceでも変わらないのですが・・・
0261nobodyさん04/06/21 03:28ID:???
よくわからないけど、ソースをeucで書くなら、euc-jpは*nixのコードなんで
windowsから受け取ったらeuc-jpに、windowsに渡すときはsjisにコンバートかければよいかと。
mb_convert_encoding($string, 'euc-jp', 'sjis');みたいな感じでつ。
0262nobodyさん04/06/21 03:29ID:???
あれ、windowsってunicodeになったんだっけ?
まあそのへんは適当に(^^);
0263nobodyさん04/06/21 04:38ID:t8xSnGRb
12345という文字列(UCS2)をurlencodeで変換した後、GETやPOSTで値を渡そうとすると上手く受け取れません。
渡す前の中身は "%001%002%003%004%005" なのですが、これを$_GETや$_POSTで拾おうとすると
"\01\02\03\04\05\" という文字列に変わってしまっています。
これを元に戻す、もしくは上手く拾う方法は無いでしょうか?
026426304/06/21 09:55ID:???
解決しました。
stripslashesでした。
0265nobodyさん04/06/21 11:05ID:???
>>255
/libは余計だろ。
026622804/06/21 11:45ID:???
>>242
神。解決しました。
0267nobodyさん04/06/21 13:33ID:???
>>265
やっとgd入りました、ほんとありがとうございます
0268nobodyさん04/06/21 13:34ID:???
>>216
文字フォーマットが分からんつーからパディング指定子などの
説明があるページを貼った。
0269nobodyさん04/06/21 16:30ID:???
>>247=249
libmysqlclient.so.12 をPHPがロードしようとして、
見付からなくて止まってるんだな。
find /usr -name libmysqlclient.so.12 で探して、
見つけたディレクトリを /etc/ld.so.conf に書き加えて、
ldconfig しとけ。
0270sage04/06/21 17:23ID:???
基本な事で申し訳ないですが質問を..

umask(0);
if(mkdir("/hoge/hoge", 0707)) {
 ...
} else {

 ...
}

これで同名のディレクトリが存在した場合に

Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --

と、警告がでてしまいます(処理は流れきっているぽい)

できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか

0271sage04/06/21 17:24ID:???
基本な事で申し訳ないですが質問を..

umask(0);
if(mkdir("/hoge/hoge", 0707)) {
 ...
} else {

 ...
}

これで同名のディレクトリが存在した場合に

Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --

と、警告がでてしまいます(処理は流れきっているぽい)

できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか

0272nobodyさん04/06/21 17:52ID:???
>>271
umask(0);
if(!file_exists("/hoge/hoge") && mkdir("/hoge/hoge", 0707)) {
 ...
} else {
 ...
}
でどぅ?

単にエラー表示したくないのなら
error_reporting(0);
0273nobodyさん04/06/21 18:43ID:???
エラー制御演算子でいいんじゃね?
0274nobodyさん04/06/21 18:46ID:???
>>271
そのエラーの発生要因が判っていて、かつ、
そのエラー発生を防ぐ為だけにとまどろっこしくなる(複雑になる)
のなら、エラー制御演算子
ttp://jp.php.net/manual/ja/language.operators.errorcontrol.php
を使うといいかも。

臭いものには蓋的な解決法なんで、>>272の方がいいけど
0275nobodyさん04/06/22 10:25ID:???
漠然とした質問で申し訳ないのですが、phpMyAdminのSQLからは実行出来るのに
PHPからmysql_queryするとエラーが出る場合、SETする文字に問題があるとは
想うのですが、どんな文字が原因となっていると考えられるしょうか?
mysql_query($query)の部分をecho $queryで出力してC&PでphpMyAdmin
のSQLで実行すると成功します。文字コードも関係しているのでしょうか?。
0276nobodyさん04/06/22 10:37ID:???
>>275
query投げる前が間違ってんだろ
connectしっぱいしてんじゃねーのか?
027727504/06/22 10:53ID:???
mysql_affected_rows() || mysql_query($query) || die('err');
と書いていたせいでした。お騒がせしましたm(_)m。

>>276
アドバイスありがとう^^
0278nobodyさん04/06/22 16:04ID:5HQSlaav
データベースから取得してきた値(配列)を全ユーザ、全ページで共有して使いたいんですが、
セッション以外に格納できる良い場所はないでしょうか?(毎回ページアクセスするたびにDBにアクセスされたくないため)

0279nobodyさん04/06/22 16:07ID:???
どうぞ -> rwxrwxrwx buff.dat 0byte
0280nobodyさん04/06/22 16:47ID:uF7//6+H
自分のアドレスを取得する方法を教えてください
0281nobodyさん04/06/22 16:52ID:???
>>280
名前欄にfusianasan
0282nobodyさん04/06/22 16:56ID:???
ttp://jp.php.net/manual/ja/reserved.variables.php
0283nobodyさん04/06/22 17:13ID:???
>>280
役所に行って住民票をとってこい。

それか、もちっと「アドレス」を正確に説明して味噌。あと「自分」も。
0284nobodyさん04/06/22 18:39ID:???
察してやれよ
0285nobodyさん04/06/22 19:41ID:???
じゃあifconfigでいいか
0286nobodyさん04/06/22 20:37ID:???
>>280
CS:EIPとか?
0287nobodyさん04/06/23 08:56ID:???
1.自分のグローバルIPが知りたいなら
診断君へ逝く
もしくはLAN外で、<?=$_SERVER['REMOTE_ADDR']?>
または、>>281

2.プライベートIPが知りたいなら
LAN内で<?=$_SERVER['REMOTE_ADDR']?>
もしくは、Windowsだったら、ipconfig
Linuxだったら、>>285

3.メアドが知りたいなら
ISPに聞く。

4.住所が知りたいなら
>>283

たぶん…3かな。
0288nobodyさん04/06/23 09:04ID:???
>>239
出力バッファに貯めておいて横取りしてファイルに出力する。
<?php
ob_start();
?>
(ここでいろんな出力)
<?php
$file = fopen('ファイル名','w');
fputs($file, ob_get_clean());
fclose($file);
?>
0289nobodyさん04/06/23 12:22ID:gFRZUYHb
Perlでの $ENV{'HTTP_REFERER'}
は、PHPではどうやるのでしょうか?教えてください、お願いします
0290nobodyさん04/06/23 12:23ID:gFRZUYHb
環境は
PHP5.0β4
Apache2.0.48
です。
0291nobodyさん04/06/23 12:30ID:???
質問です。
csvファイルのアップロードをするのに、fgetcsv関数をつかってるんですが
excel2000で"," をという値で保存したcsvファイルをアップロードすると,"と読み込まれます。
これは仕様でしょうか?
PHP Version 4.3.6を使っています。
よろしくお願いします。
0292うんこ04/06/23 12:40ID:???
>>289
http://jp.php.net/reserved.variables
0293うんこ04/06/23 12:42ID:???
>>291
excel2000で保存したcsvファイルをテキストエディタで見れば
問題は解決すると思います
0294290,29104/06/23 12:46ID:???
>>292
ありがとうございます
0295nobodyさん04/06/23 12:53ID:???
>>293
すいません。
エディタで見たのですが、わかりませんでした。

こちらのほうで正常に読み込まれたのでこちらをつかう事にします。
http://pukiwiki.org/index.php?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fcsv2newpage.inc.php
0296nobodyさん04/06/23 14:01ID:???
$a に入っているのが 数字かそうでないか を判定したいんだけどどうすれば
0297nobodyさん04/06/23 14:20ID:qX+B9Isg
>>296
is_numeric($str)
0298nobodyさん04/06/23 14:32ID:???
>>297
is_numericは正確に言うと数値かどうかの判断だがなぁ。
0299nobodyさん04/06/23 14:41ID:???
>>298
うんにゃ。数値または数値文字列であるかの判断。
マヌアル嫁
0300nobodyさん04/06/23 14:59ID:???
>>297
(゚∀゚)サンクスコ
0301nobodyさん04/06/23 15:06ID:???
<INPUT NAME="unko" VALUE="<?= urldecode($_GET['unko']) ?>">

これで文字列に \ を入力すると どんどん増えていきます (バイバイン級)
どうしたらいいでしょうか
送信前にJavaScriptでurlencodeしなきゃだめ?
0302nobodyさん04/06/23 15:17ID:???
>>301
<INPUT NAME="unko" VALUE="<?= stripslashes($_GET['unko']) ?>">
0303nobodyさん04/06/23 15:31ID:???
>>296
ctype_digit($a)
0304nobodyさん04/06/23 15:32ID:???
>>301
バイバインなつかしいね
0305nobodyさん04/06/23 15:39ID:???
栗まんじゅう
0306nobodyさん04/06/23 15:44ID:???
function bybyne ($kurimanju) {
$kurimanju = $kurimanju * 2;
return $kurimanju;
}
030730104/06/23 15:55ID:???
>>302
ありがとう
でも新たな問題が!

" を入力できないっす
まあこれはあきらめようかな
無理っぽいし
0308nobodyさん04/06/23 15:59ID:???
>>307
お前、脳味噌あるか?
ちっとは自分で頭使って考えろや
030930104/06/23 16:11ID:???
>>308
まあそうなんだけどさ
VALUE="<?= urlencode(stripslashes($_GET['unko'])) ?>"
ってやってもだめだったし
preg_replace("/\"/","\\\"",$dpreg) でもだめだった
そもそも"\""という表記がだめっぽだし
シングルクオーテーションで囲えばいいんだけど
今度はそのシングルクオーテーションが入力できなくなるし
もうおっぱいおっぱいなんですよ
031030104/06/23 16:12ID:???
>>309の $dpreg は stripslashes($_GET['unko']) と思ってくだちい
0311nobodyさん04/06/23 16:15ID:jqDhu+uC
>>309
VALUE="<?= urlencode(htmlspecialchars(stripslashes($_GET['unko']))) ?>"
031230104/06/23 16:27ID:???
>>311
サンクスコ
urlencodeはいらなかったっす
0313nobodyさん04/06/23 20:26ID:15bnd+/J
Yahoo!オークションなど文字コードがEUCの検索エンジンを
$key=mb_convert_encoding($_POST["keyword"], "EUC-JP","auto");
で文字コードを変換すると、変換したくない他の検索エンジンもEUCに変換されてしまうのですが、
変換されないようにするにはどうすればよろしいのでしょうか。
<?php
$Key=urlencode($_POST['keyword']);
$key=mb_convert_encoding($_POST["keyword"], "EUC-JP","auto");
switch($_POST['engine']) {
case "kakaku": $url="http://www.kakaku.com/txtsearch/txtsearch.asp?SearchWord=";
break;
case "yahooauction": $url="http://search.auctions.yahoo.co.jp/jp/search/auc?auccat=0&alocale=0jp&acc=jp&p=";
break;
}
header("Location: ".$url.$Key);
?>
0314nobodyさん04/06/23 20:34ID:???
>>313
変換したくない時は変換しないようにスクリプトを書けばよいよい
0315nobodyさん04/06/23 20:38ID:???
>>313
方法は色々あるけど、件のソースのようにswitchで
切り替えてるなら、caseの中でそれぞれのサイトに合わせて
$key←$_POST["keyword"]の処理をしたらいいでそ。

最も、各サイトのurlとか変換処理の有無なんかは
配列かなんかで前の方で設定を集約するのがスマートやね。
0316nobodyさん04/06/23 20:42ID:15bnd+/J
>>314さん
>>315さん

教えてくれてどうもありがとうございます。
0317nobodyさん04/06/24 11:14ID:Ig3nklaT
経験豊かな皆さんに質問です。
昔のPHPはGETやPOSTなど区別する必要が無いと効いています。
例えば、
$_POST["giko"] : 10
$_GET["giko"] : 20
$_COOKIE["giko"] : 30
$_SESSION["giko"] : 40
のような場合のときに、
echo $giki
とすると何が表示されるのですか?
0318nobodyさん04/06/24 11:40ID:???
そんなコーディングはしちゃダメが正解。
0319nobodyさん04/06/24 11:43ID:???
区別する必要が無くても区別しなきゃ不味いだろう
>>317はやった事無いからシラネ
0320nobodyさん04/06/24 11:44ID:???
>>317
$gikiは定義されてないから何も出ない
0321nobodyさん04/06/24 12:00ID:???
>>320
だな
0322nobodyさん04/06/24 12:36ID:???
320に補足すると、「register_globals = On」な環境だと
variables_orderで指定した優先度の高い(右側)ものが入る。
通常の$_SERVER[]と同じ。

ああ、PHPの設定で変わるもんだから、仮にPOSTが無かった
時にはGETでという処理を書くときも、システムの動作に
依存させないで、ちゃんとコーディング上で処理しないと駄目。
# register_globalsはコードの中でini_setできないし
0323nobodyさん04/06/24 13:35ID:???
register_globals = Onの時に使ってたスクリプトを
register_globals = Offで使おうとしてこうやった事あるw

$key = array_keys($_REQUEST);
$i = 0;
while(isset($_REQUEST[$key[$i]])){
${$key[$i]} = $_REQUEST[$key[$i++]];
}
0324nobodyさん04/06/24 13:46ID:???
それはextractを知らなかったってところに笑えばいいんだよね?
0325nobodyさん04/06/24 13:49ID:???
てか、import_request_variables
0326nobodyさん04/06/24 16:35ID:???
セキュリティのことを考えると書き直したほうがいいんじゃないかな、と苦笑すればいいんだよね?
032731704/06/24 17:36ID:???
ありがとうございました。
自分ではそのようなかき方はしないのですが、
頂いたソースがそのように書いたものでしたので。
0328nobodyさん04/06/24 20:43ID:???
ある関数の使い方を確認するためにPHPのマニュアル見てたら
@function_name で呼出してる例があって
探したんだけど@についての説明を見つけることができませんでした
@つけるとどうなるんですか?
0329nobodyさん04/06/24 21:54ID:???
メールが出せます
0330nobodyさん04/06/24 22:26ID:WjPQG3mJ
おまいら、申し訳ないですがよろしくお願いします。

phpのソースをプレーンテキストとして表示させるにはどうしたらよいでしょうか?
apacheの設定なのか拡張子をtxtに変えただけでは、プレーンテキストとして表示してくれません。

よろしくお願いします。
0331nobodyさん04/06/24 22:45ID:???
>>330
Apacheの設定次第
よくあるのは.phpsとか
0332nobodyさん04/06/24 22:46ID:???
>>330
IEのtext/plainをHTMLとして表示するステキ仕様ってオチは無しの方向でよろ。
0333nobodyさん04/06/24 23:03ID:???
せっかくshow_sourceてな関数があるのでそっちを使えば便利なのに。
parse errorが出た時に重宝してる。
0334nobodyさん04/06/24 23:05ID:WjPQG3mJ
>>333

ほーほー

どうもありがとう。調べてみます。
0335nobodyさん04/06/24 23:42ID:???
>>328
http://www.php.net/manual/ja/language.operators.errorcontrol.php
これだ。
0336nobodyさん04/06/25 00:13ID:QzuvB6xt
教えてください。
a.phpというスクリプトに
<?
readfile("http://hoge.com/hoge.php?a=1&b=2");
?>
と記述してスクリプトを動かすとError 0がでるのに
<?
header("Location: http://hoge.com/hoge.php?a=1&b=2");
?>
と書くとうまく動きます。どうしてでしょうか。
0337nobodyさん04/06/25 01:06ID:???
>>336
「@readfile()という名前でコールされない限り、 エラーメッセージが表示されます」
だそうです。
0338nobodyさん04/06/25 11:22ID:ydrfhQOC
初歩的な質問なんですが
ファイルに書き込むときはfwriteとfputsのどちらがいいのでしょうか。
教えてください。よろしくお願いします
0339nobodyさん04/06/25 11:28ID:???
>>338
http://www.php.net/fputs

意味わかるか。
0340nobodyさん04/06/25 11:28ID:???
>>338
マニュアル嫁
0341nobodyさん04/06/25 13:58ID:???
ちょっと便乗質問

echoとprintの決定的な違いってなんでしょうか

マニュアル読んだけどわかりませんでした
0342nobodyさん04/06/25 14:13ID:???
echo $a,$b
print $a,$b (だめ)
0343nobodyさん04/06/25 15:16ID:???
でも
print "$a$b"; はできるよ?
0344nobodyさん04/06/25 15:29ID:???
その話っていつも「男は黙ってecho」で終わっちゃうんだよね
0345nobodyさん04/06/25 15:44ID:???
>>343
それだと引数としては1個。print $a.$bと等価。

0346nobodyさん04/06/25 17:39ID:???
PHP4.2.2です
phpinfo() の出力結果を横取りしてファイルにでも落としたいんだけど
どうしたらいいかな
0347nobodyさん04/06/25 17:47ID:???
ttp://jp.php.net/manual/ja/ref.outcontrol.php
0348nobodyさん04/06/25 18:00ID:???
>>346
php -i > hoge.txt
0349nobodyさん04/06/25 18:02ID:???
echo "hoge" > /dev/null
0350nobodyさん04/06/25 18:10ID:???
>>346
http://jp.php.net/phpinfo
マニュアルを隅々と嫁。特に下の方
035134604/06/25 18:24ID:???
>>350
できた!
<? ob_start(); phpinfo(); fwrite( fopen("unko.html",'w'), ob_get_contents() ); ?>
0352nobodyさん04/06/25 18:28ID:76ADPduI
Perlでの正規表現ってPHPでも使えますか?
$sub =~ s/^Re://g;
$sub =~ s/\[\d+\]\s?//g;
$com =~ s/<br>/\r> /ig;

PHPで使えないんであればどう書き直せばいいのか教えてくださいm(_ _)m
0353nobodyさん04/06/25 18:30ID:???
$sub =~ s/^Re://g;
$sub =~ s/\[\d+\]\s?//g;
$com =~ s/<br>/\r&gt; /ig;
こうでした……
0354nobodyさん04/06/25 18:36ID:???
preg_matchとか
gはallだなぁ
0355nobodyさん04/06/25 18:48ID:???
>>353
こんなかんじでね?
gはデフォで、マッチさせる数を制限したいときだけpreg_replaceの第四引数で指定する。
$sub =preg_replace( '/^Re:/', '', $sub);
$sub = preg_replace('/\[\d+\]\s?/', '', $sub);
$com = preg_replace('/<br>/i', '\r&gt; ', $com);

つーかマニュアル嫁。
ttp://jp.php.net/manual/ja/ref.pcre.php
ttp://jp.php.net/manual/ja/function.preg-replace.php
035635204/06/25 19:08ID:???
355さんありがとうございます

マニュアル調べたりしたんですけど、Perlがよくわからなくてできませんでした_| ̄|○
0357nobodyさん04/06/25 19:18ID:???
はじめまして。
phpでhead.txtを取得してスレッド一覧を表示するプログラムを作っています。

head.txtの内容はご存知かと思いますが、「9999999999.dat<>スレタイ(数)」という感じになっています。
「9999999999.dat」と「スレタイ(数)」はsplitで分割できたのですが、そこから「スレタイ」と「数」を取得するにはどうすればいいのでしょうか?

今は、
「(」で分解して、配列の最後を取得し、「)」より前を取得して・・・→数
「(」より前を最後を除いて連結・・・→スレタイ
とやっているのですが、これだと処理に時間がかかりそうな気がしてしまいます。

正規表現などで簡単にやる方法はないのでしょうか?
どなたか教えてくださいm(__)m
035835704/06/25 19:19ID:???
sageてしまったorz
0359 ◆.jC7ANgFY. 04/06/25 19:35ID:???
>>357
preg_match('`^(\d+)\.dat<>(.*)\((\d+)\)$`', $line, $match);
こんな感じでは?
[1] スレッドID、[2] スレッドタイトル、[3] レス数
0360nobodyさん04/06/25 19:46ID:???
>>357
俺もそういうの作ったが、なぜsubject.txtを読みに行かない?
それで1行毎に<>でsplitして表示すればいいじゃん
0361nobodyさん04/06/25 19:46ID:???
>>357
ケツから最初の"("をサーチ。そこから")"まで、もしくはケツの1つ前の範囲がスレ数。
スレ名称は頭から、ケツから最初の"("の手前の範囲。そのままだと多分
スレ名称とスレ数の間にセパレータのスペースが入ってると思うけど。

しかし、subject.txtは鯖ごとに微妙に作りが違うというというワナ。
0362nobodyさん04/06/25 19:50ID:???
>>357
というか、それsubject.txtだろ
head.txtはそんなことかいてない
0363nobodyさん04/06/25 19:53ID:???
勘違いだと俺も思って、解釈した。
http://pc5.2ch.net/php/head.txt
http://pc5.2ch.net/php/subject.txt
0364nobodyさん04/06/25 20:14ID:???
>359
できました。
ありがとうございます!

>360、>362
subject.txtの間違いでした。
すいませんm(__)m
0365nobodyさん04/06/25 22:40ID:???
phpとjavascriptの連携をさせたいのですが、可能でしょうか。
具体的にはjavascriptにて取得した画像サイズなどの情報をphpへ
渡したいのです。
<img>タグを使う方法以外で何かありますか?
0366nobodyさん04/06/25 22:49ID:???
>>365
可能。javascriptでPOSTするデータを
作ってformで送ってやればよい。

><img>タグを使う方法以外で何かありますか?

0367nobodyさん04/06/25 22:57ID:???
どうもー。
POSTするってことは、
ページの遷移があるってことですか?
0368nobodyさん04/06/25 23:11ID:???
>>367
そうですよ。html+Javascriptのhttpdとの通信手段は
自ずとそんな感じ。別フレーム切ってユーザが見ている
コンテンツのページは遷移してないように見せるのは
最近PHP-usersにも話題が出てましたね。
ActionScriptとかjavaアプレット、ActiveXなんか
使うと別ですけど。(それも話題に上がってたかな)
036923904/06/26 01:26ID:???
>>288
遅くなりましたがサンクスです
0370カポコン04/06/26 02:39ID:???
どうもです
0371nobodyさん04/06/26 06:20ID:???
>>368
あー、やっぱりそうなっちゃいますか。
配布したいので、やっぱり
imgタグからphpを呼び出してgetで渡した方が
良さそうですね。
ありがとうござい真下。
0372nobodyさん04/06/26 11:58ID:???
みなさま、すみません。捜し物です。

メルマガの広告などによく使われる、
http://www.xxxx.com/xxx.php?id=xxxx
のような、リダイレクトするphpで、なおかつ http://www.xxxx.com/
のrefererを相手のServerにきちんと受け渡すタイプのを探しています。
リダイレクト先のListは別ファイルで用意する形です。
0373nobodyさん04/06/26 12:45ID:???
>>372
そんなの自分で書け。
0374nobodyさん04/06/26 14:04ID:???
こんにちは
おたずねしたいことかあります。
Cpanelってありますよね??

これをPHPなどでプログラムを作り、自動登録システムって可能ですか??
0375nobodyさん04/06/26 14:13ID:???
>>374
可能だからガンガって作れ
0376nobodyさん04/06/26 14:18ID:???
>>375
全然やり方わかんないすよ。。
どうすればいいかも。。。汗
0377nobodyさん04/06/26 15:14ID:???
URLから画像のサイズを取得したいのですが
可能でしょうか?
ttp://www.hoge.com/image.gif
のようなURLから画像のサイズを取得するということです。
お願いします。
0378nobodyさん04/06/26 15:26ID:???
>>377
可能だからガンガって作れ
0379nobodyさん04/06/26 16:09ID:???
>>377
画像"ファイル"のサイズならHTTPヘッダで取れるけど、
画像のサイズはURLからは無理。URLのファイル(画像)を
取得して、PHPの画像系の関数で画像のサイズを取得する。
0380nobodyさん04/06/26 16:12ID:???
pearの SmartIRCで $irc->setUseSockets(true);すると
WARNING: couldn't load the socket extension
って怒られるんだわ
けど PHP Ver 4.3.4で Sockets Support: enabled は確認済み
対処法plz
0381nobodyさん04/06/26 17:27ID:???
>>374 です。
簡単な方法ないですか。。
0382nobodyさん04/06/26 17:49ID:???
>>381
ないね。
0383nobodyさん04/06/26 18:38ID:???
>>381
HDEを買う。
0384nobodyさん04/06/26 18:38ID:???
>>380
IRCSmart.phpを見てみると、extension_loaded('sockets') に失敗して
なおかつ dl('socket')にも失敗した時にそのメッセージが出るから、
get_loaded_extensions でほんとにロードされてるか確認して、、、
ん、dl("ファイル名")じゃなかったっけ?
0385nobodyさん04/06/26 19:06ID:???
>>384
フォーロthx.
結論は Socket.phpが apache->PHPからの呼び出しではロードされ,
コンソールから $php hogeでは呼び出されないといったものでした.
つまらないミスを調べさせてしまって正直すまんかった.ありがとう >384
0386nobodyさん04/06/26 19:34ID:plBi49aM
while(mysql_fetch_array())でSQLデータを取り込んでるんですが
後ろレコードからデータを読む場合はどうすればよいのでしょうか?
0387nobodyさん04/06/26 19:49ID:???
>>386
キモイやり方がお好みならmysql_data_seek()を使えばいいけど、
真っ当なやり方ならSQLの段階でorder byを設定すりゃいい。
つーかSQLの勉強をやり直した方がi..うわなにすんだやめr
0388nobodyさん04/06/26 21:51ID:jyZGtADG
jcode.phpみたいなやつでUnicodeからGB2312 か big5への
変換コードってありませんか?
0389nobodyさん04/06/27 16:28ID:???
>>388
知らない。ただjcode(LEではない方)弄って
GB2312とbig5の変換表を入れてやれば作れると思う。
あれ、中身は変換式/テーブルそのものだから。
CJKを参考にすればOK
0390nobodyさん04/06/27 21:31ID:???
PHPにて、抽選プログラム作るのって可能ですか??
確率も指定出来て、一日に一名のみ当選するようにしたいのですが、
可能でしょうか
0391nobodyさん04/06/27 21:57ID:???
>390
可能です。

> 確率を指定

$rate = 0.5

> 一日に一名のみ当選

lottery.dat みたいなファイルを作る。
日付のデータが入ってる。

1. lottery.dat を読む
2. 現在の日付を調べる
3. もし lottery.dat に入っていた日付と、現在の日付が違っていたら
 3-1. 抽選を行う(srand(), rand())
 3-2. 現在の日付を lottery.dat に書く
 もし日付が同じだったら、抽選を行わない
0392nobodyさん04/06/27 22:02ID:???
質問です。
C の構造体のデータをバイナリとして持ってきて、
その構造体にアクセスしたいのです。

読み出しは unpack() を使うとできるのですが、
書きこみは pack() 関数を使うと、「一部のデータだけ書き換え」することができません。

一部のデータだけ書き換えする上手い方法はないでしょうか。
(何万件ものデータにアクセスするため、できるだけ速いアクセスがいいのですが)
なにかご存知の方、ご教授ください。
039339204/06/27 22:34ID:???
自己解決…。
substr_replace() を使うことにしました。
データの該当部分を pack() した後、
substr_replace() で該当部分を書き換える、という具合です。
0394nobodyさん04/06/27 23:17ID:zkNM2hBA
MySQLにはいったTEXTデータを読み込むと
改行が反映されないのですが、
どうすれば改行されるようになるでしょうか?
0395nobodyさん04/06/27 23:30ID:Ba+8mIiM
ファイルに「能」や「表」などのダメ文字を書き込ませると、
「能\」や「表\」のように、語尾に\記号がついてしまいます。

これを回避する方法はないでしょうか?
ご存知の方教えてください、宜しくお願いしますm(__)m
0396nobodyさん04/06/27 23:37ID:???
超頻出質問のために>>400がテンプレを作ります。
0397nobodyさん04/06/27 23:44ID:???
>>394(馬鹿)nl2br
>>395(低能)stripslashes
0398394(馬鹿)04/06/28 00:05ID:???
分かったよ、確かに俺は馬鹿だ。
テキストファイルを表示するときに、
HTMLとして表示されているため、改行が行われないんだ。
当たり前だな。で、どうすれば改行されるんだ?
preタグ使うと横スクロールするようになるんでこれではちと困るのだが。
0399nobodyさん04/06/28 00:06ID:bkEAVbgz
PHPでメルマガ配信プログラムを書いていますが、
mail関数で、DBに登録されているメールアドレスに
送信済みのフラグをたてながら一件づつ送信するプログラムなのですが
ループが早すぎてサーバーが処理しきれないのは問題があります。
ループの間隔をおくのも確実とは言えません。
過負荷にならない程度にメールを配信するには
どういった方法が挙げられるでしょうか?ご教授ください。
0400nobodyさん04/06/28 00:09ID:???
毎度レベルの変わらない釣りにテンプレを作る意味はなし。
反応してる奴と2人でさしつさされつ完結していて欲しい。
0401nobodyさん04/06/28 00:15ID:???
>>398
せっかく答え書いたのに... ・゚・(つД`)・゚・
0402394(馬鹿)04/06/28 00:32ID:???
>>401
ああ、ゴメンよ。
これ関数だったんだ、気づかなかった。

ありがとう。
0403nobodyさん04/06/28 08:52ID:???
質問なのですが、PHPからLinuxのシェルコマンドを動かす場合どのようにすればいいのでしょうか?
よろしくお願いします。
0404nobodyさん04/06/28 09:28ID:WEBa9e2h
>>403
exec();
system();
passthru();
shell_exec();
``;
0405nobodyさん04/06/28 12:30ID:???
いやいやWindows上のPHPからLinuxのシェルコマンドを動かしたいのかも知れんぞ

('A`)
0406nobodyさん04/06/28 12:39ID:???
test
0407nobodyさん04/06/28 12:50ID:WEBa9e2h
IDがWEBだった。ヽ(´ー`)ノ
0408404.HDML ◆StMXML.EXE 04/06/28 13:08ID:???
>>407
そのIDをWeb製作板で出してくれてたなら、、嗚呼。

ヌッ(・∀・∀・)ホッヘー
0409nobodyさん04/06/28 13:39ID:???
Smarty を久々にバージョンアップした所、動作が変わって対処に悩んでまつ。

定義されていないテンプレート変数、例えば {$hoge} に assign が無ければ、
以前はスキップしてくれたのですが、バージョンアップ後は
>FATAL .. Undefined index hoge
とエラーを吐いています。
いちいち {if isset($hoge)} と囲うのも鬱陶しく、どう対処すべきかな〜、と。

# Smarty の設定かと思いマニュアル見直しましたが適当な設定は見あたらず。
# $smarty->undefined = NULL とかも試しましたが変化無しでした。
0410nobodyさん04/06/28 14:53ID:???
Perl互換の正規表現/置換(preg_replace)についての質問です。
%に挟まれた文字列(%test%)から%を取り除き、
それをキーとする要素を連想配列から取り出して出力したいのですが、何も表示されません。
もしよろしかったら、教えていただけると幸いです。

<?php
 $template = "%test%";

//%に挟まれた文字列にマッチ
 $pattern = "/(\%)(.+)(\%)/";

//置換用配列
 $replacement = array("test" => "キタ━━━━ヽ(゚∀゚ )ノ━━━━!!!!");

//このままだと、%を取り除いた文字列を表示
//"$2"の部分を$replacement['$2']や$replacement[$2]、$replacement['\\2']などとしてみましたが、ダメでした。
 echo(preg_replace($pattern, "$2", $template));

?>

#一応全角スペースでインデントしました。よろしくお願いします。
041141004/06/28 14:58ID:???
あ、環境を書くのを忘れていました。。。

OS: Windows XP SP2 RC2
Server: Apache 2.0.49
PHP: 5.0 RC3

モジュールとして動かしております。
0412nobodyさん04/06/28 15:00ID:???
$replacement["test"]ならいけると思うんだがそれじゃあかんの?
0413nobodyさん04/06/28 15:02ID:???
あ、ごめん。俺何言ってんだ。
ソース斜め見しただけでレスしてました。
0414nobodyさん04/06/28 15:06ID:???
>>412
そうなんですが、htmlファイルでテンプレートを作って、%で囲まれた文字列を置換して出力したいんですよ…。
キーもtestだけではないので、
str_replace("%test%", $replacement["test"], $template);
などとしてもやはり複数行になってしまいますよね。

できることなら一行にまとめたいのですが…。
041540904/06/28 15:06ID:???
>>410
マニュアルよく読むべし。

<?php
$template = '%test%';

$patterns[] = '/(\%)(.+)(\%)/';
$replacements[] = 'キタ━━━━ヽ(゚∀゚ )ノ━━━━!!!!';

echo(preg_replace($patterns, $replacements, $template));

?>

テンプレートを探してるなら自作するよりどこかから持ってきた方がいいよ。
regex 型のテンプレートならそれなりに普及しているのが幾つかあるし。

http://smarty.php.net/
http://pear.php.net/packages.php?catpid=10&catname=HTML
0416nobodyさん04/06/28 15:06ID:???
>>410
パーサーの存在を忘れとる
041740904/06/28 15:07ID:???
人いないんじゃなくて Smarty 使ってる人がこのスレにいないのか _| ̄|◯

流れたら pear スレの方に逝ってきまつ、、
0418nobodyさん04/06/28 15:09ID:???
使ってる俺がアドバイスするが、逝くならsmartyスレだろ。
0419nobodyさん04/06/28 15:10ID:???
>>418
あら、、専用スレあったの知りませんでした。
取り敢えず過去ログ見に逝ってきまつ。
ありがd
042041004/06/28 15:19ID:???
>>415-416
なるほど…。
まだまだ理解できていないようでした。

Parserから勉強しなおすことにします。
ありがとうございました。
0421nobodyさん04/06/28 15:22ID:???
%をグループ化して参照可能にする意味は多分ないだろう。
042241504/06/28 15:23ID:???
パーサーって何でつか。。(´・ω・`)
0423nobodyさん04/06/28 15:25ID:???
エスケープする意味もなさげ
042441004/06/28 15:28ID:???
>>421-423
Σ(´д`ノ)ノ
ちょっとeval()とか見ながらひぃひぃ言ってました…。

小学校から勉強しなおしてきます。。。
0425nobodyさん04/06/28 15:54ID:???
<?=変数名?>で記述しているファイルをincludeしたまへ。
0426nobodyさん04/06/28 16:08ID:???
>>422
paserの日本語表記。多分耳で聞くとパーザ[ー]
0427nobodyさん04/06/28 16:14ID:???
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)くpaserは何語表記なんだろう...
     `ヽ_っ⌒/⌒c
042842204/06/28 16:17ID:???
>>426
そうでつか。添乗してくれるおねーさんの事じゃないんでつね (´・ω・`) 残念でつ。
0429nobodyさん04/06/28 16:39ID:???
>>428
そっちはaじゃなくてuだね
0430nobodyさん04/06/28 17:32ID:???
今日本屋で見たWebDesigningという雑誌のPHPのコーナーでアンケート集計スクリプトが紹介されており、
誰かが投票するたびにYYYYMMDD-HHIISS.txtという形式でファイルを生成して書き込むという仕組みでした。
この場合1秒間に複数の投票があったら対応できないので明らかにまずいんじゃないかと(排他処理でなんとか
なるかもしれませんが)と思います。
素直に1ファイルに追加書き込みしていった方が後で集計するのも楽だと思いますが。
0431nobodyさん04/06/28 17:58ID:???
>>430
スクリプトを見てみないと分からないけど上書き処理で前のデータが消えるんだろうね
それより閲覧する場合は投稿分のファイルを全部オープンする気だろうか・・・
ログを生成して保存してるのかなぁ


1つのスクリプト内でMYSQLに頻繁にアクセスする場合、その都度
mysql_connect('localhost:3306','id','pass');
と、みなさんは書いてますか?
classやfunction内でmysql_connectを書いてるのが美しくない気がしてならない
0432nobodyさん04/06/28 18:42ID:???
>>431
美しい美しくない以前にリソースの無駄遣いのような...
グローバルスコープで$my = mysql_connect();して
関数やクラス内でglobal $my;するとかではだめっすか?
PEARのDB_DataObjectのソースが参考になるかと。
0433nobodyさん04/06/28 18:43ID:???
>>431
書き込もうと思ったファイルが存在したら、乱数秒待機させるとか。

>MYSQLに頻繁にアクセスする場合
単一コネクションで済む場合は、普通コネクションは使いまわしだわな。
コネクション張るのにコスト(PHPの場合は少なくて済んでるけど)が必要だから。
0434nobodyさん04/06/28 19:17ID:l4cOKm4n
くだらない質問ですが、よろしくです。
index.php
<?php require("hogehoge.inc");?>
<? echo $hogehoge_1;?>

hogehoge.inc
$hogehoge_1=123456
とすれば123456と返ってくると思うのですが。
これを
$_GETを使って
ttp://127.0.0.1/index.php?main=1 もしくは
ttp://127.0.0.1/index.php?main=2

index.php
<?php require("hogehoge.inc");?>
<? echo $hogehoge_$_GET['main'];?>

hogehoge.inc
$hogehoge_1=123456
$hogehoge_2=78910

などで呼び出せないものでしょうか。
<? echo $hogehoge_$_GET['main'];?>を
<? echo $hogehoge_{$_GET['main']};?>
にした場合、夢だったのか呼び出せたように思えたのですが、、(2日ほど寝ていないので・・)
わかる方よろしくお願いします。
0435nobodyさん04/06/28 19:38ID:???
仕事がすすまねぇ
今日はもうやめるか
0436nobodyさん04/06/28 19:52ID:???
echo ${'hogehoge_'.$_GET['main']}
俺個人的には可変変数は気持ち悪い。。。
0437nobodyさん04/06/28 20:02ID:???
>>436
うぉ〜〜ありがとうございます!
できました!(ノ_・。)
とてもうれしいです!
今夜はゆっくり眠れそうですw
<(_ _)>
0438nobodyさん04/06/28 20:18ID:???
最近MySQLに書き込むとき10回に一回ぐらい割合で
文字化けするようになったのだが、
どんな原因が考えられますか?
昔は全然なかったような気がするだけどなぁ、なんでやろ。
0439nobodyさん04/06/28 20:46ID:???
>>438
\だな。間違いない。
0440nobodyさん04/06/28 21:37ID:O2HF8evS
Webサーバとは別にあるメールサーバからメールを送信したいのですが
php.iniのSMTPの内容をそのサーバ名に指定してもメールが送れません。
mb_send_mailでもmailでも戻り値はTrueです。
また、Webサーバからはちゃんとtelnetでそのメールサーバにつないで
メールを送ることはできていますがPHPで送信しても
ログにも残っていないんでデータが渡せていないっぽいんですが・・
他にも設定しないといけないところがあるのでしょうか?
0441nobodyさん04/06/28 22:03ID:???
>>440
マニュアルのmail関数のあたりに詳しく書いてあるのだけど、
Windows版の場合はメールサーバに渡してくれて、
それ以外の場合はsendmailプログラム(not サーバ)に渡してくれる。

鯖OSを書いてないから勝手にirixだと仮定して話を進めるけど、
mail()がtrueになってるってことは、Webサーバのメールプログラム(ややこしいな..)を
呼び出していてそこで溜まってるんじゃないかな。

で、解決方法はと言うと、Webサーバのメールサーバ設定をきちんとするか、
メールサーバとsocket通信をするか、くらいかな。
0442nobodyさん04/06/29 00:49ID:zFB2Z8eM
Cookieについて質問させて下さい。

<?php
setcookie("bbs_name",$_POST['name'],(time()+60*60*24*30),"","",0);
?>
<html><head><title>掲示板</title></head><body>
<form action='このファイル自身' method='post'>
  <input type='hidden' name='action' value='regist'>
  名前<input type='text' name='name' value="<?php echo $_COOKIE['bbs_name'] ?>">
  <?php
  if ($_POST['flags'] == 'return') {
    echo "<input type=submit value=[" . $_POST['return'] . "]に返信>\n";
    echo "<input type=hidden name=ress value=" . $_POST['code'] . ">\n";
  } else {
    echo "<input type=submit value=書き込み/更新> <input type=reset value=リセット>\n";
  }
  ?>
  以下、記述が続きます・・・

上記の記述でサブミットボタンを押し、1回目に更新した時には、
名前入力欄に前回入力した内容が表示されるのですが、
2回目に更新をかけると、全て消えてしまうのです。
いったい何が原因なのか、わかる方、ご教授下さい。
0443nobodyさん04/06/29 01:40ID:???
>>442
submitボタンを押して更新しているから大丈夫っぽだが、
前後の取り合いが判らんので、念のため、
if($_POST['name']) {
setcookie("bbs_name",$_POST['name'],(time()+60*60*24*30),"","",0);
}
ってするとどうなる。

#どうなる。って聞きながら今日はもう寝る。l
0444nobodyさん04/06/29 01:51ID:2uVjJIh2
他は出来たんですが、フォームからデータを送り、それを処理するスクリプトを書くという問題おしえてください!
--------------------------------------------------------------------------------
送信側でりんごとみかんとどっちか選ぶ選択肢があって、
処理側でりんごとみかんをどっち選んだかの結果を表示し、

    かごの中にはりんごは今 個です
    かごの中にはみかんは今 個です

と表示させたいのですが、どうしてもできないんです。。
セッション関数、formタグのinputを使ってもいいみたいなんですが・。・・
0445nobodyさん04/06/29 01:55ID:???
     /⌒彡           /⌒彡
     / 冫、)        / 冫、)
    /  ` /        /  ` /
   /:::::::::::\       /::::::::::::;\
  //:::::::::::: l |       //´|::::::::::::l |
  //|::::::::::::/| | >>444 // /::::::::::::/| |
  U |::::::::::/. U  ↓  U |::::::::::/ U
   |::::||::|  | | /⌒ヽ/  |::::||::|
   | / | |  | / ´_ゝ`)  | / | |
   // .| |  / __ ,/   // | |
  //  | | | / | |    //   | |
  U   U U  U    U   U
0446nobodyさん04/06/29 02:00ID:2uVjJIh2
<html>
<head>
<title>課題</title>
</head>
<body>

<center><h2>ワークシート4</h2></center>

<form action = "worksheet4.php"method = "POST">
<center>

お名前<input type="text" name="username">
<br>
メールアドレス<input type="text" name="mail">
<br>
郵便番号<input type="text" name="bango">
<br>
住所<input type="text" name="zyusyo">
<input type="submit" name="submit" value="登録!">
<br>

<input type = "hidden" name ="product" value="Apple"><br>
<input type = "submit" value = "かごに入れる">
<input type = "hidden" name ="product" value="Orange"><br>
<input type = "submit" value = "かごに入れる">

</center>
</form>

</body>
</html>
というふうにしたんですが、オレンジとりんごを選択するタグって何をつかうんですが?
0447nobodyさん04/06/29 02:08ID:9Mhdwhm6
質問です。
fgetcsvには文字化けするという問題があります・・・。

fgetcsvに相当する関数を自作すれば良いと言われましたが、
そんな事できませんです。

だれか fgetcsvに相当する関数作った事ある、知っている
という方 教えて下さい。
0448nobodyさん04/06/29 02:14ID:???
> fgetcsvには文字化けするという問題があります・・・。

へぇ、初耳。

> fgetcsvに相当する関数を自作すれば良いと言われました

ext じゃなくて PHP によるユーザー定義関数の自作、でしょ。
余裕で可能。
0449nobodyさん04/06/29 02:36ID:???
正規表現についてなのですが、掲示板にURLが張られた際に

ereg_replace("(https?|ftp) 〜〜

上記のようにURLを判定し、文字列をリンクするよう置換しています。
これに当てはまらない場合でよく見かける直リンク避けの「ttp」から始まるものも
違う文字列に置換したいのです。

ereg_replace("(ttp) 〜〜

このようにしてしまうと上に書いた通常リンクのものと衝突してしまいますし
ereg_replace("(^ttp) 〜〜
このようにすることでそれらの問題は回避でき、望みの動作をするのですが
本文の一番最初にURLが記載されないといけないので不都合です。

例えば 「あいうえおttp://hogehoge/」 という投稿があった際にも
置換処理を行いたいのですが、いい方法はないでしょうか?
0450nobodyさん04/06/29 02:37ID:???
>>447
>fgetcsvには文字化けするという問題があります・・・。
>fgetcsvに相当する関数を自作すれば良いと言われましたが、

その話が話題になったところで回答出てるだろ。
人づてで聞いたなら、聞いた人に訊け。
0451nobodyさん04/06/29 02:40ID:???
>>449
httpやttpが単語だってことを肝に命じてください
0452nobodyさん04/06/29 03:06ID:???
>>449
それら2つの違いを見比べれば、
hでは無い文字の次にttpが続く文字列 という条件に気づきそうなものだが?
0453nobodyさん04/06/29 03:14ID:???
>>449
とりあえずオライリー・ジャパン「正規表現デスクトップリファレンス」でも買っとけ。
良書だよ。
0454nobodyさん04/06/29 03:18ID:???
>>451
おっぱいソングの変な外人の声が聞こえてきたよ…
0455nobodyさん04/06/29 09:55ID:???
>>447
何ができないの?プログラムを作ったことがないのか?

0.前処理(ファイルオープン、DBトランザクション開始とか)
1.1行読み込む
2.ファイルエンドまで繰り返す
3. 読み込んだバッファをカンマ(,)をセパレータにして区切る
4. (必要に応じて、フィールド数が想定したものと違っていたらerrorとする)
5. (必要に応じて、フィールド後のチェックを行う)
6. (必要に応じて、DBテーブルに格納してもいいかも)
7. 1行読み込む、2のループへ
8.後処理(ファイルクローズ、DBコミットとか)

※1、フィールドのダブルクオート(")囲みを想定している場合、3.の処理でダブルクオート(")を
取り除く処理が必要、データ中にカンマ(,)ダブルクオート(")を許す場合はさらに複雑
※2、フィールド中に改行を許す場合は2.7.のと読み込み処理にも工夫が必要
0456nobodyさん04/06/29 13:12ID:???
>>455
> ※1、フィールドのダブルクオート(")囲みを想定している場合、3.の処理でダブルクオート(")を
> 取り除く処理が必要、データ中にカンマ(,)ダブルクオート(")を許す場合はさらに複雑
> ※2、フィールド中に改行を許す場合は2.7.のと読み込み処理にも工夫が必要

この条件が満たされないと、CSVを読み込めるとは言えないでしょう。
0457nobodyさん04/06/29 13:54ID:???
>>456
別にたいした事ではないと思うが・・・。初心者?
0458nobodyさん04/06/29 13:56ID:???
>>452
この方法で対処できました。有難うございます。
0459nobodyさん04/06/29 14:38ID:???
>>456
ところが、用途が限定されていれば、1行読んでカンマで切り分けるだけすむ場合も良くあるよ。
必要ないなら、わざわざ汎用的なCSV読み込みプログラムを作る必要もない。
どっちにしろ>>457の言う通り、大した事じゃない。
0460nobodyさん04/06/29 16:17ID:???
ああ、最近php-usersで流れてたfgetcsvの文字化けネタを
引っ張ってきたのかと思ってスルーしてたよ
0461nobodyさん04/06/29 16:30ID:???
>>460
いや、たぶんその人じゃないのかな?ファイルのコード変換してからやることにした
とか言った手前、もう訊けなくなったんじゃ?
0462nobodyさん04/06/29 16:45ID:8D9V5eyp
正規表現置換で、うまくいかないので教えてください。
+という文字が2回以上続いた場合、+一個にしたい。
+++→+
++→+
+→そのまま
0463nobodyさん04/06/29 16:49ID:???
正規表現スレにあるリンク集読んで調べろ。
質問の仕方もどうにかしてくれ。
0464nobodyさん04/06/29 17:10ID:???
最近PHPを勉強し始めたのですが、ちょっと困ってます。

Apache1.3.28とPHP4.3.7でオフラインでやっているのですが、html内に記述したPHPが実行されなくて
困ってます。
PHP単体だと問題なく動作します。

例えば、
//----------------
<?php print "テスト"; ?>
//----------------
これで **.phpとすれば問題なく表示されますが、

//----------------
<html><body>
<?php print "テスト"; ?>
</body></html>
//----------------
これだと何も表示されません。

何が原因として考えられますか?

インストールには下記のサイトを参考にしました。
ttp://www.dream-seed.com/server/php_apache.html
0465nobodyさん04/06/29 17:13ID:???
>>464
下の方のファイル名は **.phpですか?
それとも**.html or **.htm ですか?
046646404/06/29 17:18ID:???
あ、すいません。
書き忘れてました。
下の方は **.htmlです。
0467nobodyさん04/06/29 17:27ID:???
あははははは。
0468nobodyさん04/06/29 17:28ID:???
ちょっと気の利いた人間なら、>>465を読めば、
拡張子を.phpに変えてみようかな、とか思うものだが。
0469nobodyさん04/06/29 18:26ID:???
phpマニュアルでは.php以外のaddtypeについても触れられている。マニュアル最強。
0470nobodyさん04/06/29 19:00ID:???
PHPで携帯の固体情報の取得について質問させてください。

imodeはutnで問題無く取得できたのですが、
ezwebではうまく取得できません。
サブスクライバIDを取得すればいいというのは分かったのですが、
実機(auのwin)で検証してみると、「表示できません(未対応)」
というようなエラーがでてうまく動きません。
プログラムの書き方が間違っているのでしょうか?
プログラムは以下です。

if( ereg( "UP.Browser", $_SERVER['HTTP_USER_AGENT'] ) )
{
$headers=getallheaders();
$post['sub'] = $headers['x-up-subno'] ;
}

よろしくおねがいします。
0471nobodyさん04/06/29 19:34ID:???
$_SERVER['HTTP_X_UP_SUBNO']
0472nobodyさん04/06/29 19:47ID:???
えっと、初歩的な質問で申し訳ないです・・・

}else if(! is_numeric($YEAR) or is_numeric($MON) or is_numeric($DAY)){
print "<CENTER>生年月日を正しく入力してください。<BR>";
print "ブラウザの「戻る」で前のページにお戻りください。</CENTER>";

と、やってみたのですが、生年月日に半角数値を入力しても

「生年月日を正しく入力してください。」と表示されます。
これはいったい何が原因なのでしょうか?
0473nobodyさん04/06/29 19:54ID:???
>>472
初歩的というかだな・・・まあいいや
とりあえず面倒くさいんでcheckdate使っとけ
0474nobodyさん04/06/29 19:58ID:???
>>472
そもそも、$YEARだのなんだのにホントに値が入っているのか確認汁。
0475nobodyさん04/06/29 20:01ID:???
>>472
 
 書 い た コ ー ド を よ く 見 直 せ 


久々にこのスレ見てるけど、前に比べてさらに悪化してるよ、ママン _| ̄|◯
ちょっと試してみるか考えてみれば分かるだろうに、、全員釣り?
047647004/06/29 20:02ID:???
>>471
ありがとうございました〜!
無事取得できました!
047747204/06/29 20:02ID:???
タグはこれでつ
<TR>
<TD bgcolor="#0000ff" align="center"><FONT size="2"><B><FONT color="#ffff00">生年月日</FONT></B></FONT></TD>
<TD bgcolor="#ccccff"><FONT size="2"><INPUT size="5" type="text" maxlength="4" name="YEAR" VALUE="<?php echo
$YEAR ?>">年<INPUT size="5" type="text" maxlength="2" name="MON" VALUE="<?php echo $MON ?>">月<INPUT size="5" type="text" maxlength="2" name="DAY" VALUE="<?php echo $DAY ?>">日<BR>
生年月日を入力してください。</FONT></TD>
</TR>
0478nobodyさん04/06/29 20:09ID:???
>>472
ついでに、

if (条件式1 or 条件式2 or 条件式3)
{
処理
}

となっている場合、条件式 1 から順に真か偽をチェックし、
ある式が真を返した時点で残りの式のチェックをスキップし処理に入る。
これで見直してみそ。
それでもわからんかったら条件式を最初の一つだけにして、その後徐々に増やしながら確認してみろ。

>>472
タグはこれでつじゃなくてさ、、、

プログラムは正しく動いている。
おまいの意図した通りではなく、おまいの書いた通りそのままに。

あとついでに
> ブラウザの「戻る」で前のページにお戻りください
こんな処理組むのやめて、、キャッシュ効かなかったら入力全部飛ぶぞ。
QuickForm とか適当なライブラリ使うか入力値の継承しような。ちゃんとサニタイズしろよ。
0479nobodyさん04/06/29 20:27ID:???
>>472
ttp://jp.php.net/manual/ja/language.operators.php#language.operators.precedence
この辺読んどけ
0480nobodyさん04/06/29 21:06ID:szUQP7IW
PHPのjcode.phpsみたいな変換ライブラリの韓国語版ってないでしょうか?
韓国語文字のutf-8コードからiso-2022-krへの変換等を行いたいんですが。。

PHPのバージョンが4.2なので、mbstringが韓国語をサポートしていません。
どなたかご存知の方がいらっしゃったらよろしくお願いいたしますmm
0481nobodyさん04/06/29 21:50ID:???
>>480
あるよ。
ぶっちゃけ韓国のPHPコミュニティで訊くのが先
#前にも中国語版の似たようなの探してる人がいたけど。
0482nobodyさん04/06/29 23:09ID:bB0o4iTw
すいません。質問です。
渡された引数のファイルの更新を行うスクリプトがあるのですが、
30人程が更新を行う際に同じスクリプトを30人で使うのと、
引数を使わないで30個の専用のスクリプトを用意するのではリソースは変わりますか?

0483nobodyさん04/06/29 23:27ID:???
about.php?page=5
等として、about.phpを呼び出したときに、
about.phpから?以下のクエリを取得する方法はありますか?
0484nobodyさん04/06/29 23:53ID:???
('A` 釣り?

>>482
まずボトルネックが何かだろう。課題に対して解決の求め方が間違っている。

>>483
赤マンモスでも読んで一から勉強しる。
他の知識も欠落しているだろうから本かソース読んだ方で総合的に学習した方がいい。
048548304/06/30 00:03ID:???
あ、みっけた。
オメーよりはぁ〜〜
俺の方がぁ〜〜
スキルあるよ?>>484
0486nobodyさん04/06/30 01:25ID:???
確かに質問のレベルが急激に下がりつつあるな。
それだけPHPの間口が広がったと取るべきか。
0487nobodyさん04/06/30 01:32ID:???
新人さん変遷を語るの図
0488nobodyさん04/06/30 02:09ID:FZovrSyI
>>481

どうもありがとうございます。
あるだろうことはなんとなく分かるんですけどね。。
コミュニティよく分かりません。。
PHPファイル名だけでも分かればありがたいですが。
0489nobodyさん04/06/30 03:21ID:???
釣りの質問の方がレベルが高くて回答しがいがあるかもな
単なる低レベルな質問なんだか、そのレベルに合わせた釣りなんだか
判断付かん質問がマジ質問だったりする
掲示板で人に質問する前にすることがあるだろうと小一時間(ry
0490nobodyさん04/06/30 08:34ID:???
echo "小一時間"; ひさびさきいたー
0491nobodyさん04/06/30 09:58ID:???
>>490
parse error
0492nobodyさん04/06/30 10:25ID:???
echo "小一時間"; //ひさびさきいたー
0493nobodyさん04/06/30 10:44ID:???
>>492
小一時間
0494nobodyさん04/06/30 10:50ID:???
echo "> 小一時間";
echo "ひさびさきいたー ";
0495nobodyさん04/06/30 11:36ID:???
$小 = "小":
$一 = "一";
$時 = "時";
$間 = "間";
0496nobodyさん04/06/30 12:53ID:???
for($i = 0;;$i++)
{
if( !( $i % 2 ) )
print "<br>";
print "小一時間";
}
0497nobodyさん04/06/30 13:08ID:???
echo urldecode("%BE%AE%B0%EC%BB%FE%B4%D6");
0498こませ04/06/30 14:33ID:???
echo gzuncompress("\x78\x9C\xEB\x5F\xD3\xF1\xAA\x6F\x5E\xD7\x15\x00\x16\xF0\x05\x38");
0499nobodyさん04/06/30 14:51ID:???
変数を途中で作れるけど、作れないようにしたい。
どうしたらいい?
for($i=0;$i<4;$j++){
↑こういうのを防ぎたい
0500nobodyさん04/06/30 15:10ID:???
>>499
無理
過去MLで、変数は宣言必須に... って案も出てたけどなぁ。
0501nobodyさん04/06/30 15:28ID:???
>>499
どうでもいいけどなんで$j++なんだ?
050249904/06/30 15:34ID:???
>>501
$iと$jのタイプミス のサンプル

つまり、こういうタイプミスを事前検出する手段
まあ事前じゃなく実行時でもいいけど
とにかくこういう自動変数が認められるせいで
バグが増えてしまうのをなんとかしたいポヨ
0503nobodyさん04/06/30 15:34ID:???
>>501
だから、そういう間違いをおこさないような仕組みない?って聞いてるんだよ。
#!perl
use strict;
見たいなやつよ。
0504nobodyさん04/06/30 15:41ID:???
デバッグ慣れしてきたら typo で困ることもそうそう無いが、、

と言いつつさっき options が optoins になっていて 5min くらい迷ってた orz
まぁでもいちいち変数宣言なんてやっとられん罠。

>>503
全部 $vars['var_name'] とか配列に放り込んでおいたら E_NOTICE で警告出る。
そんな変態スクリプトもどうかと思うが。
0505nobodyさん04/06/30 15:47ID:???
>>503
オマイは質問の次のレスさえ読まないのかと小一時間(ry
そんなんだからキーミスをするのだと小(ry
php.iniの設定で変更できる形ででもあれば便利なんだけどなぁ。
050650304/06/30 15:48ID:???
perlでやっててちょっとphp触ってみようか、とテスト環境に入れたりしてたんだけど、
そうなんだ、phpってそういう自主規制の仕組みがないんだ。
なんかちょっと大きいやつの開発むかないんだね。
perlだってuse strict;つけないなんて考えられんもんな。
無駄なデバッグに時間とられたくないし。
050749904/06/30 15:52ID:???
冷静に考えると、宣言なしの変数利用を否定するということは
連想配列の要素追加なんかも否定しなきゃならなくなるのかも・・・
むずかしい
0508nobodyさん04/06/30 16:11ID:???
typoより分岐でバグる事の方が多いはずだけど
0509nobodyさん04/06/30 16:25ID:???
>>506

> なんかちょっと大きいやつの開発むかないんだね

探せばいくらでも事例やオープンソースのプロジェクトはあるワケだが。
いくつもの考え方が並列して成り立ちそれぞれに価値がある事を解しない香具師は一生 Perl の世界に閉じこもっとけ。


と釣られてみる。
0510nobodyさん04/06/30 16:26ID:bmKP74+o
投稿時の空欄をチェックするスクリプト書いたんですが
評価して下さいませ

<?
$r_a=array("name"=>"名前","tel"=>"TEL","email"=>"E-mail","age"=>"年齢","comment"=>"P

R","ginkou"=>"銀行名","siten"=>"支店名","namber"=>"口座番号","meigi"=>"口座名義");


while(list($key, $val) = each($r_a)) {
if(!$$key){$re .="${val}がありません<br>";}

}

if($re){echo"$re";exit;}


?>
0511nobodyさん04/06/30 16:27ID:???
error_reporting(E_ALL);
じゃたりない?
0512nobodyさん04/06/30 16:32ID:bfdTVs9y
初歩的な質問ですが・・・

'".$id."'

これがどういう意味なのかわからないのですが
どう解釈すればよいのですか?
0513nobodyさん04/06/30 16:39ID:???
>>512
<?php
$id = 1;
$str = '".$id."' ;
print $str;
?>
これで満足か?
0514nobodyさん04/06/30 16:51ID:???
>>510
HTML_QuickForm 使うと幸せ。
0515nobodyさん04/06/30 16:56ID:???
>>512
解釈も何も、シングルクオートで囲んだ場合は、そのまま文字列なのだが
0516nobodyさん04/06/30 17:07ID:???
はじめまして。質問させてください。
サーバー上のファイルをダイアログを出してダウンロードさせようとしています。
現在
a.php : ダウンロードするファイルを指定するスクリプト
b.php : a.phpからPOSTされた情報でダウンロードを実行するスクリプト
という構成です。
b.phpでheader指定やらreadfileやらして実際にダウンロードはできています。

お聞きしたいのは、a.phpだけでダウンロード処理を実行できないか、ということです。
a.phpでダウンロード実行するとブラウザ上でのロケーションは変更されず、
ダウンロードダイアログが表示されるようにしたいのです。
(今はb.phpが空っぽの状態で開いています)
header関数は、その前に空行を含むいかなるHTTP出力を含めてはいけない
とのことで、このような構成になっているのですが、なんとかできないでしょうか?
0517nobodyさん04/06/30 17:22ID:???
おまいらちょっといいですか。

error_reporting の影響範囲について伺いたいのですが、
set_error_handler によりユーザー定義のエラーハンドラ関数をセットすると error_reporting の設定に関係なくあらゆるレベルのエラーからエラーハンドラがコールされています。
これは仕様なのでしょうか。
エラーハンドラ関数の中でエラーレベルを識別し、処理をしろって事でしょうか、、

環境
WindowsXP PHP 4.3.4
FedoraCore1 PHP 4.3.7

sample1 -- 意図した通りに動作 (未定義のインデックスによるエラーはレポートされない)
--
$_error_reporting = error_reporting(E_ALL^E_NOTICE);

$array = array();
print $array['hoge'];
--

sample2 -- error_reporting の内容にかかわらずエラーハンドラがコールされている
--
$_error_reporting = error_reporting(E_ALL^E_NOTICE);
set_error_handler('myErrorHandler');

$array = array();
print $array['hoge'];

function myErrorHandler($level, $errstr, $errfile, $errline)
{
print "[$level] Line:$errline -- $errstr <br>\n";
}
--
0518nobodyさん04/06/30 17:28ID:???
>>516
a.phpだけでできるけど、見た目は今と変わらないかもね

if (isset($_POST["〜"])) {

0519nobodyさん04/06/30 17:31ID:???
>>518
途中で送信してもうた

a.phpをこんな感じにすれば
if (isset($_POST["〜"])) {
元々のb.phpのスクリプト

exit;
}
元々のa.phpのスクリプト
0520nobodyさん04/06/30 17:32ID:???
変数宣言の話だけどE_NOTICEを付ければいいんじゃないの?
052151704/06/30 17:37ID:???
>>520
すいません、もう少しヒントくれると嬉しです、、(´・ω・`) 変数宣言でマニュアルくぐっても何も出ずなので、、
0522nobodyさん04/06/30 17:38ID:???
>>521
レスありがっつぉございます。
やっぱexitしないといけませんですかぁ。
a.phpに複数ファイルを並べておいて、
順に落とせるようにしたいんですけど・・・
052351604/06/30 17:41ID:???
あ、間違えた。>>519さんでしたね。
強引にロケーションを戻すしかないかな。
0524nobodyさん04/06/30 17:50ID:???
>>510
糞コードで口座とか言ってるあたり、餌が安すぎるよなぁ。
0525nobodyさん04/06/30 17:56ID:???
>>522
何悩んでるのかよく分からんが、下のを実行しても「geko」が表示されることは無い。
(POSTだと長くなるのでGETで代用した。)
<?php
if(isset($_GET[file]) && $_GET[file] != ''){
header("Content-disposition: attachment; filename= test.txt");
header("Content-Type: application/octet-stream");
readfile($_GET[file].".txt");
}
?>
<html><body>
<a href="a.php?file=a">download</a>
<?php
if(isset($_GET[file]) && $_GET[file] != ''){ print "<p>geko</p>"; }
?>
</body></html>
052651704/06/30 17:58ID:???
>>520
って >>517 じゃなくて >>499 へのレスか。
勘違いした、、(´・ω・`)
052751604/06/30 18:16ID:???
>>525さん
あ、あれ・・・このサンプルでまさに意図していた通りの動きですよ?
強烈に何かを間違えている予感。
自分とコードを見つめ直します。
052851604/06/30 18:36ID:???
うぅっ。できました。えらい勘違いでした。申し訳ないです。
>>519さんので正解だったんですね・・・
スレ汚しすいませんでした。
0529nobodyさん04/07/01 00:31ID:???
>517
その通り。

>PHP の標準のエラーハンドラは完全にバイパスされることに注意して下 さい。
>error_reporting() の設定は影響せず、どの ような場合でもユーザが設定した
>エラーハンドラがコールされます。ただし、この場合でもハンドラで
>error_reporting() のカレントの値を読み、適当に動作させることは可能です。

と、PHP マニュアルの set_error_handler 関数のページに書いてある。
053051704/07/01 01:27ID:???
>>529
ありがとうございます。

見落とし杉、、_| ̄|◯||
0531nobodyさん04/07/01 14:28ID:???
http://jp.php.net/manual/ja/function.set-error-handler.php
にあるように
error_reporting(E_ALL);
set_error_handler("myErrorHandler");
をしても Parse error や Fatal error を捕まえられないわけですが、
どうしても捕まえたいです。別の方法、もしくはよいアイディアはないでしょうか?
# ob_get_contents() して Parse error などの文字を preg_match() させようとも思いましたが
# ユーザ側の入力で万が一でも Parse error と入力した場合も捕まえてしまいますし…。
0532nobodyさん04/07/01 15:39ID:???
>>531
そのページ内をparseで検索してみると、サンプルコードっぽいのが載ってるよ。
でもなんか強引すぎるような.....
0533nobodyさん04/07/01 16:28ID:???
>>532
ありがとうございます。
ob_* を使って「error</b>」で検索する方法や eval() ですよね。
eval() は怖いし、ob_* は万が一マッチしたら、という不安や、
長時間処理の時に ob_flush() が使えないのが困り者です。

PHP5 になったらプログラム全体を try ... catch で囲むとか…。
うーん。引き続き妙案募集です。
0534nobodyさん04/07/01 23:50ID:???
初歩的なことを聞いてすみません。
PHPでチャットを作ろうと思っているんですが、
発言内容をログファイル(log.txt)に
↓のように<>で一つの発言ごとに区切って保存してある場合

------ log.txt ------------------------------------------------
名前0 : メッセージ0<>名前1 : メッセージ1<>名前2 : メッセージ2<> ・・・・
---------------------------------------------------------------

次のように配列に代入するにはどうしたらいいですか?
$a[0] ‥‥ "名前 : メッセージ0"
$a[1] ‥‥ "名前 : メッセージ1"
$a[2] ‥‥ "名前 : メッセージ2"
      :
      :

$fp = fopen("log.txt", "r");から先がどう書いていいのかが分かりません。
よろしくお願いします。
0535nobodyさん04/07/02 00:14ID:???
>>534
fgetsで1行読み込んで、explodeで分割。
053653404/07/02 00:20ID:???
>>535
それはこういうことでしょうか?
$a = explode('<>', fgets($fp));
0537nobodyさん04/07/02 01:00ID:???
そいでもってデバッグのお約束print_r($a)を使うと、
あらまっ、奥さまっ
0538nobodyさん04/07/02 01:53ID:6/QnGsWt

オクサマッ534ミタ?( ´д)ヒソ(´д`)ヒソ(д` )アラヤダ
0539nobodyさん04/07/02 02:19ID:???
PHPでは文字列および1行の長さに制限は無いが、
デバッグとかでそれをファイルに書き出して見ようとすると
非常に見づらいので、適当に改行が入るフォーマットにするのが普通

ではないかと思ってみる
0540nobodyさん04/07/02 07:25ID:???
>>534
<>のかわりに改行で区切ったほうが楽だと思う。
それだと$a = file('log.txt');で終わり。
生のログファイルも見やすい。
0541nobodyさん04/07/02 13:29ID:???
汎用的なログイン機構を模索中なんだけど、模範解答ってある?
とりあえず認証成功したらユーザIDをセッションに保持するのを
書いたんだけど、動くんだけどどうにもしっくりこないです。
状況に応じて最適解は変わるってのは百も承知だけど
なんというか、基本的な部分だけに毎回車輪の再開発するのも
ちょっとイヤンな感じで。
0542nobodyさん04/07/02 13:41ID:???
PEAR::Auth とか LiveUser は?
0543nobodyさん04/07/02 16:56ID:???
>>541
模範解答という訳ではないが、何種類かのパターンの解説
「Web認証システムの作り方大全―Apache/IIS/PHP/Servlet&JSPそれぞれの場合」
http://www.amazon.co.jp/exec/obidos/ASIN/4797321490
0544nobodyさん04/07/02 20:57ID:proF8LyP
$a="[任意の長さの任意の文字列]●[任意の長さの任意の文字列]";
で最初の●より後に▲があったら全て×に置き換えたい(最初の
●のあとに再び●が出てくることも、出てこないこともある)

↑こういう変換をしたいのですが、どうしたらよろしいでしょうか?
かなり複雑なことをしないと無理ですか?
0545nobodyさん04/07/02 21:31ID:???
>>544
preg_replaceやereg_replace使えばできそうだけど?
054654404/07/02 21:45ID:proF8LyP
>>545
●より後の、▲以外の文字をそのまま残すということが可能でしょうか?
054754404/07/02 21:52ID:???
ああ、preg_replaceでならできそうですね。
やってみます。
ありがとうございました。
0548nobodyさん04/07/02 21:57ID:6Y75o+Jb
$new_text = nl2br($_POST[text]);
$fp = fopen("data.txt",a);
fwrite($fp,$new_text);
fclose($fp);
と改行コードを<br />に変換して出力したところ、<br />には変換されているのですが、改行されてしまっています。
代わりに str_replace("\n","<br />",$_POST[text]);とやっても同じでした。\r\nでもだめです。
0549nobodyさん04/07/02 22:21ID:???
>>544
preg_replace_callbackのほうが適任のような。

>>548
Windowsでは$fp = fopen("data.txt", "ab");としないと
テキストモードでファイルが開かれ、fwrite/fputsするたびに改行が入るわけだが、
OSは何をお使いで?
055054904/07/02 22:23ID:???
自己レス。"ab"の件は記憶違いだったかも・・・。
055154804/07/02 22:31ID:???
サーバはLinux(Vine2.6)です。プログラム作成・入力はWindowsです。
スクリプトはEUCを使用しています。
055254804/07/02 22:32ID:???
abでもだめでした。
055354404/07/02 22:41ID:proF8LyP
>>549
ありがとうございます。
難しそうですが、やってみます。
055454804/07/02 22:50ID:???
なぜか、出来ました。
str_replaceで。
055554404/07/02 23:16ID:proF8LyP
$a = preg_replace_callback ( "/^.*●.*▲.*$/" , "/^.*●.*×.*$/" , $a ) ;
return $a ;

こんな感じでやってみたら「第二引数が足りない」という趣旨のエラー
メッセージが出たのですが、どうしたらいいんでしょうか?
preg_replace_callback 関数の第二引数に他の関数かなにかを入れ
ないといけないのでしょうか?
055654904/07/02 23:34ID:???
>>555
たのむからマニュアルぐらい読んでよ。。。
ttp://jp.php.net/manual/ja/function.preg-replace-callback.php

お前さんのやりたいことはこのコードでできるはず。
function hoge($m) {
return $m[1] . str_replace("▲", "×", $m[2]);
}
$a = preg_replace_callback("/^(.*●)(.*▲.*)$/", "hoge", $a);

●や▲が半角英数字じゃないと期待通りには動かないこともあります。
055754404/07/02 23:45ID:???
>>556
どうもすいません。ありがとうございます。
0558nobodyさん04/07/03 00:04ID:???
>>556
"最初の●より後に▲があったら全て×に置き換える" ということなので、それでは
$a = 'test●▲●▲';
の時にはうまくいかないような・・・。

単純な置き換えだったら、preg_replace_callback() を使わなくても e オプションを使えば
いいような気がするので、以下のような感じでどう?

$a = preg_replace("/^(.*?●)(.*▲.*)$/e", '"\\1" . str_replace("▲", "×", "\\2")', $a);

マルチバイトを考慮したら mb_ereg_replace() を使うといいと思うけど。

$a = mb_ereg_replace("^(.*?●)(.*▲.*)$", '"\\1" . str_replace("▲", "×", "\\2")', $a, "e");
0559nobodyさん04/07/03 00:14ID:???
>>558
なるほどー。そういう手がありましたか。
自分はマルチバイトを含む文字列をトリッキーな置換するときは
UTF-8決め打ちでpreg_replace_callbackでuオプションを使ってますが
将来mb_ereg_replace_callback関数ができたらそっちも使ってみたい。
あとpreg_*でUnicodeプロパティーのサポートも希望したいですね。
0560nobodyさん04/07/03 01:02ID:???
DoCoMo/2.0 YYYY(c10;serXXXXXXXXXXXXXXX;
こっからserXXXXXXXXXXXXXXXだけを取り出したいのだがどうすればいい?
問題はYYYYが必ず同じ長さではない。
つまりser以降指定の文字数を得たいのだが…
0561nobodyさん04/07/03 01:07ID:???
>>560
すぐ上で正規表現がでてきてるのに、そんなこと聞きますか...
0562nobodyさん04/07/03 02:36ID:???
正規表現を使うまでもない。文字列関数で
0563nobodyさん04/07/03 02:59ID:???
>>561
スマン、正規表現でがんがったんだがさっぱりわからん、、、。

>>562
それも考えてみたんだが問題が。。。
FOMA
DoCoMo/2.0 N2001(c10;serXXXXXXXXXXXXXXX; iccxxxxxxxxxxxxxxxxxxxx)
PDC
DoCoMo/1.0/X503i/c10/ser***********
こんな風に違うんだよな…。
さらにVodaなんか
http://www.dp.j-phone.com/dp/tool_dl/web/useragent.php
J-PHONE/4.0/J-SH51/SN************ SH/0001a Profile/MIDP-1.0 Configuration/CLDC-1.0
Ext-Profile/JSCL-1.1.0
0564nobodyさん04/07/03 05:38ID:???
全部に対応する正規表現を書くより
機種によって振り分けた方がいいんじゃな?。
0565nobodyさん04/07/03 07:59ID:???
>>563
正規表現の書き方がわからんのなら、正規表現スレで抽出条件を詳しく書いて聞けばいい。
とりあえずDoCoMoの分だと、serに続く文字列で ; もしくは行末までって条件でいいのなら
(ser[^;$]+)
0566てふてふ04/07/03 11:22ID:Upkf89lK
すみません。質問です。phpdev5をwindowsXPにインストールして
日本語の文字化けがおきてる方っていませんか?
0567nobodyさん04/07/03 16:10ID:???
私も文字化けおきまくったのでPHPは捨てました。
0568nobodyさん04/07/03 16:52ID:wzmmIfWr
PHPで、自分のファイルの文字コードを参照するいい方法はありますか?
そのままファイル自体を読み込んで調べるしかないのでしょうか?
0569nobodyさん04/07/03 17:00ID:???
ファイルを読まずして文字コードを知れるか?
0570nobodyさん04/07/03 17:17ID:???
*参照*する以上、読まざるを得ないね。
*自分の*ファイルなんだから、PHPでそのファイルを読まなくても知る術はあるけど。
0571nobodyさん04/07/03 18:33ID:n3s5B9BG
http://www.aardvarkind.com/


ここのPHPの詳細おねがいします。英語読めません。
0572nobodyさん04/07/03 18:51ID:???
>>571
読めなかったら勉強するか翻訳サイトでも利用しろ
0573nobodyさん04/07/03 20:57ID:???
>>568
$encoding = mb_detect_encoding(file_get_contents($_SERVER['SCRIPT_FILENAME']));
0574>>571 です04/07/03 21:50ID:n3s5B9BG
>>572
ごめんなさい
0575nobodyさん04/07/03 22:28ID:???
>>573

うおーっ、ありがとうございます!!mm
mb_detect_encodingですか、勉強になりました。
0576nobodyさん04/07/04 00:34ID:fnOHrUgA
jcode.phpを使ってメールフォームを作ってるんだけど、
届いたメールの題名が文字化けします。

題名部分は $title = JcodeConvert("題名", 0, 3); で、
文字コード指定は1,2,3どれも化けます。
環境は、Win XP Pro + Apache + PHP4.2

どこがいけないの?
0577nobodyさん04/07/04 00:49ID:???
573の思考レベルと575の反応に驚愕した。
脳ミソの変わりにくらげとか入ってないか調べたい。
0578nobodyさん04/07/04 01:22ID:???
>>576
メールの件名は特別だから。
詳細をググって調べるべし。
↓と同じ感じでjcodeつかってできるようにがんがれ。
$title = "件名";
$title = "=?iso-2022-jp?B?" . base64_encode(i18n_convert($title, "JIS")) ."?=";
057957604/07/04 01:49ID:???
>>578
以下2行の追加で直りました。

$title = base64_encode($title);
$title = "=?iso-2022-jp?B?" . $title . "?=";

ありがとうございました!
0580nobodyさん04/07/04 06:26ID:???
>>573は釣りだろ。間違ってはいないけど、
「100円のものを1000個買いました。全部でいくらですか」
という問題を100を1000回足して答えを出すのに近いな
0581nobodyさん04/07/04 07:41ID:???
例えがおかしい。
釣りか?
なぜネストの話が
つーかALUでは加算の繰り返(ry
0582nobodyさん04/07/05 10:41ID:???
$encoding = mb_detect_encoding('美乳');
0583nobodyさん04/07/05 13:28ID:???
美乳コードキタ━━━━━━(゚∀゚)━━━━━━!!!!
0584nobodyさん04/07/05 16:02ID:???
<?php
$LV3 = $LV2 - $LV
$STR3 = ($STR2 - $STR) / $LV3;
$CON3 = ($CON2 - $CON) / $LV3;
$DEX3 = ($DEX2 - $DEX) / $LV3;
$INT3 = ($INT2 - $INT) / $LV3;
$LUCK3 = ($LUCK2 - $LUCK) / $LV3;
$CHA3 = ($CHA2 - $CHA) / $LV3;
?>


Parse error: parse error, unexpected T_VARIABLE

と出るのでしょうが・・・
T_VARIABLEというのは何でしょうか?
0585nobodyさん04/07/05 16:05ID:???
>>584
$LV3 = $LV2 - $LV
セミコロンがないです。
0586nobodyさん04/07/05 16:06ID:???
だぁぁ!しまった!こんな初歩的なミスを・・・
>>585様有難うございます><
058758404/07/05 16:09ID:???
教えて君すみません・・・
Division by zero in とはどういう意味なのでしょうか・・・ガクガクブルブル
0588nobodyさん04/07/05 16:11ID:???
0で割っただろ!
それくらいの英語読め
0589nobodyさん04/07/05 16:14ID:???
あれ?おかしいな・・・
$LV2に8、$LVに4入れても同じエラーが・・・
0590nobodyさん04/07/05 16:22ID:???
LV3の中身を確認しながら実行しれ
確認の仕方はマニュアル読んで調べろ
0591nobodyさん04/07/05 16:30ID:???
if($LV2 = 0 or $LV = 0){
print "レベルが入力されていません。";

}else if($STR2 < $STR or $CON2 < $CON or $DEX2 < $DEX or $INT2 < $INT or $LUCK2 < $LUCK or $CHA2 < $CHA){
print "入力した値がおかしいです。";

}else{

}

これを使ったあと全部に0が入ってた〜(なぜだ
0592nobodyさん04/07/05 16:34ID:???
>>591
あはははは。
0593nobodyさん04/07/05 16:36ID:???
某ゲームの作ってるんだが・・・
ttp://cgi.f44.aaacafe.ne.jp/~phpworld/002/seityo.php

値を出した後、ページが表示されない・・・
ソースを見ればHTMLがあるのに
0594nobodyさん04/07/05 17:13ID:???
>>591
最初の行
0595nobodyさん04/07/05 17:14ID:???
if($LV2 = 0 or $LV = 0){
もし$LV2=0で$LV=0なら じゃないんですか!?
0596nobodyさん04/07/05 17:18ID:???
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
★                                             ☆
☆ 質問者が返信する時は名前欄に「最初に質問したレス番号」を入れろ ★
★                                             ☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

>>595
お前はアホか・・・
$LV2=0、$LV=0にして>>584の計算をしてみろよ
0597nobodyさん04/07/05 17:20ID:???
>>595
"で"でつなぐならand
日本語の勉強もしなさい
0598nobodyさん04/07/05 17:28ID:???
>>584
比較演算子が間違ってますよ
くだらねー
0599nobodyさん04/07/05 17:31ID:???
>>593
<TITLE><TITLE>

<TITLE></TITLE>
とすれば解決。
何が原因が分からない時は問題の絞込みってやつをするといいyp。
0600nobodyさん04/07/05 17:56ID:???
今日はおもしろいですね
0601nobodyさん04/07/05 18:10ID:???
>>597
待て
0602nobodyさん04/07/05 18:19ID:???
っていうか、
>>584
>>587
>>591
>>593
が同一だったのか。
0603nobodyさん04/07/05 20:00ID:???
>>595
if文の時は == にしないとダメなんじゃなかったっけ??
0604nobodyさん04/07/05 21:01ID:???
「if文の時は」とか意味不明なことを言うなよな。

>>595
= は代入演算子だから比較の意味では使えない。
比較には == や === などを使う。詳しくは下記を読め。
http://www.php.net/manual/ja/language.operators.comparison.php
http://www.php.net/manual/ja/language.operators.assignment.php
0605nobodyさん04/07/05 21:01ID:???
>>603
if文というよりも、比較演算子'=='と代入演算子'='は別物。
0606nobodyさん04/07/05 21:02ID:???
一時間後でかぶるなYO ヽ(`Д´)ノ ウワァァン!!
0607nobodyさん04/07/05 21:07ID:???
おい!もまいら!
unexpected T_IF
ってなんだYO!
0608nobodyさん04/07/05 21:18ID:???
今日は変なやつが一匹紛れ込んでるな。
0609nobodyさん04/07/05 21:25ID:???
>>607
ファイルに保存されないぽ
これのエラーを直せたら教えてやる


if($action == "action"){
if(($NAME != "") && ($COMMENT != "")){
$NAME = htmlspecialchars($NAME);
$MAIL = htmlspecialchars($MAIL);
$COMMENT = htmlspecialchars($COMMENT);
$COMMENT = nl2br($COMMENT);
$COMMENT = str_replace("\r", "", $COMMENT);
$COMMENT = str_replace("\n", "", $COMMENT);
$input_msg = implode(",", array($NAME,$MAIL,$COMMENT,$time,$host));
$message = file($data);
$fp = fopen($data, "w"); //書き込みモードでファイルを開く
rewind($fp);
fputs($fp, "$input_msg\n");
if($data_max <= sizeof($message))
$msg_num = $data_max - 1;
else
$msg_num = sizeof($message);
for($i = 0; $i < $msg_num; $i++){
fputs($fp, $message[$i]);
}
fclose($fp);
unset($message);
}
}
061060904/07/05 21:30ID:???
スマン、普通にアホなミスしとったわい・・・
fputs($fp, "$input_msg\n");
これで保存したんだがデータが上書きされる・・・
0611nobodyさん04/07/05 21:43ID:dk5OZx2a
setcookieで書き込みはできるんですが
消す場合はどうしたらいいのでしょうか?
0612nobodyさん04/07/05 21:45ID:???
>>610
>$fp = fopen($data, "w");
あなたの書いた通りに動いているだけです。
PHPマニュアルのfopenのページをご覧あれ。
0613nobodyさん04/07/05 21:46ID:???
>>611
そんな時のためのマニュアルですよ?
0614nobodyさん04/07/05 21:47ID:???
>>603
もうちょっと勉強しようぜ
0615nobodyさん04/07/05 21:51ID:???
CGIでフレームがないけどフレームみたいなページできたよね?
あれってPHPでもできんのけ?
0616nobodyさん04/07/05 21:52ID:???
>>609
>fputs($fp, $message[$i]);
上書きされるのはwriteでファイル開いてるんだから当然として
とりあえず改行コードが抜けているぞ。
0617nobodyさん04/07/05 21:57ID:???
>>615
JavaのSiteMeshみたいな?
できるかできないかでいえば「できる」けど書くのが面倒なら
そのCGIに任意のHTMLやPHPスクリプトを読み込ませてもいいんじゃない?
プロキシみたいなもんで、ブラウザの代わりにURIにアクセスして
レスポンスボディをレイアウトし直したり、リンクのURIを書き換えたりしてるだけだと思うから。
0618nobodyさん04/07/05 21:58ID:???
T_VARIABLE や T_IF の意味がわからない人は

「PHP まぬある 付録 P. パーサトークンの一覧」
ttp://www.php.net/manual/ja/tokens.php

を読んでけれ。

"Parse error: parse error, unexpected T_VARIABLE" などという
エラーが表示された場合は、「私ってば PHP の構文解析をして
いるパーサですが、あなたの書いたソースを読んだら構文解析
に失敗しますた。予期せぬ位置に変数が表れたわよ。」と読む。

大抵の場合、パースエラーの出た変数の手前に問題があって、
セミコロン忘れてますた。括弧を閉じ忘れてますた。とかそういう
ことだたーりする。


だと思う。
061961804/07/05 22:04ID:???
「誤」
>大抵の場合、パースエラーの出た変数の手前に問題があって、
「正」
大抵の場合、パースエラーの出たイ "トークン" の手前に問題があって、

マチガエタ。サヨウナラ。サガサナイデクラハイ。
0620nobodyさん04/07/05 22:07ID:???
掲示板の多重投稿拒否はクッキー使わないとムリかな?
0621nobodyさん04/07/05 22:20ID:???
>>618
しってるよばーかマヌケ

>>620
スレとかんけーねーよ無能
0622nobodyさん04/07/05 23:00ID:???
>>620
多重投稿"ミス"なら、投稿履歴と照らし合わせて
「多重だったら」という処理をすることでもいい。
投稿履歴にはhiddenでユニークな投稿キーを埋め込んでおいて、
それを履歴リストに残して多重チェックするのが普通かな。
履歴リストの分量や、Webブラウザのキャッシュに入力フォームが
残らないようにするとか、細かいところは工夫してください。
0623nobodyさん04/07/05 23:37ID:???
form action="{$_SERVER['PHP_SELF']}"型の掲示板スクリプトで、
投稿後にリロードして再投稿するミスを防ぐなら、header("Location {$_SERVER['PHP_SELF']}")
で同一ページに飛ばすテクもある。
062462004/07/05 23:58ID:???
>>622-623
難しそうだったので表示と書き込みをPHPごとにわけますた・・・
あり><
062562004/07/06 00:16ID:???
これから出来たプログラムはここへ載せていくのでよろ><
ttp://cgi.f44.aaacafe.ne.jp/~phpworld/
0626nobodyさん04/07/06 00:25ID:???
それみろ馬鹿タレ供
0627nobodyさん04/07/06 01:20ID:???
>>623
HTTP仕様ぐらい準拠しようよ。
0628nobodyさん04/07/06 01:34ID:???
>>625
もっとがんがれ
0629nobodyさん04/07/06 02:02ID:???
>>625
phpworld/というアカウントにワラタ
随分と大きく出たものだw
0630nobodyさん04/07/06 03:48ID:???
winXPでApache2+phpモジュールな環境を作ろうと思ってます
すでにApache2はインストール済みなのでPHP4.3.7のWinバイナリをインストーラーの方でe:\phpにインストール
http://www.php.net/manual/ja/install.apache2.php に従って
php4ts.dllをwindows/system32に移動
LoadModule php4_module e:/php/sapi/php4apache2.dll
AddType application/x-httpd-php .php
をhttpd.confに追加しましたがApacheを起動しようとすると
Apache.exe: module "c:\php4build\snap\sapi\apache2filter\sapi_apache2.c" is not compatible with this
version of Apache (found 20020628, need 20020903).
Please contact the vendor for the correct version.
というエラーが出てしまいます。
そもそも c:\php4build\snap\sapi\apache2filter\sapi_apache2.c なんでパスは存在しないのです
LoadModuleの部分をコメントアウトするとApacheは起動します
原因に心当たりのあるかたいらっしゃいますか?
php4.3.7 Apache2.0.43です
0631nobodyさん04/07/06 04:28ID:???
>>630
>Apache2.0.43
が古くて、最近のSAPIの仕様とは違ってるんじゃないの?
Apche2.0.50+PHP4.3.7でやってみな。
0632nobodyさん04/07/06 07:53ID:???
for文を用いてIDチェックしたいんだが
for文から抜け出すことは可能だろうか・・・
0633nobodyさん04/07/06 08:02ID:???
>>632
>>613 RTFM
0634nobodyさん04/07/06 09:30ID:???
男ならPHP5だろ。
0635nobodyさん04/07/06 10:28ID:???
txtファイルなどに変数を書き込んで、phpで読み込む事は出来ますか?
includeだとphpファイルの変数しか読み込めないので、txtファイルの中の変数を読み込みたいのです。
よろしくお願いします。
0636nobodyさん04/07/06 10:39ID:???
>>635
txtファイルは
<?php
$baka = "試せ";
?>
これをincludeしてみ
0637nobodyさん04/07/06 10:46ID:???
>635
ttp://www.php.net/manual/ja/function.parse-ini-file.php

とか、どーですか。
063863004/07/06 10:56ID:???
>>631
インストーラバージョンをインストールしてたのが原因でした・・・。
英語ちゃんと読んでませんでした
レスどうもです
0639nobodyさん04/07/06 11:01ID:???
うーん
普通に<?phpとか書いてない txtファイルを読み込んで
その中に入ってる$hoge とか言う変数を読み込みたいのです
064063804/07/06 11:05ID:???
すみません。解決しました
0641nobodyさん04/07/06 11:08ID:???
>>639
その程度の問題を自分で解決できないならプログラム組むのやめた方が良いね
とりあえずマニュアルのファイルシステム関数ページを読めよ

ttp://www.php.net/manual/ja/ref.filesystem.php
0642nobodyさん04/07/06 11:46ID:???
ありがとう641 637 636
解決しました(^^
0643nobodyさん04/07/06 12:04ID:Rny+MH6z
▼index.php
<html>
<body>
<?php
print ("<a href = 'get.php?a=5'> Get</a>");
?>
</body>
</html>

▼get.php
<html>
<body>
<?= print($_GET['a']) ?>
</body>
</html>


上記のコードで、index.phpからget.phpへ移動すると、
ブラウザには「51」と表示されてしまいます。「5」と表示したかった
のですが、原因がわかりません。おわかりの方がいましたらご教授
お願いします。
0644nobodyさん04/07/06 12:11ID:???
>>643
<?php print($_GET['a']) ?> ではないの?
0645nobodyさん04/07/06 12:14ID:NBQAU1O/
<
0646nobodyさん04/07/06 12:15ID:NBQAU1O/
<
0647nobodyさん04/07/06 12:15ID:5MCxUUr8
<?= print($_GET['a']) ?>

<?php print($_GET['a']) ?>
では?
0648nobodyさん04/07/06 12:16ID:???
>643
質問の要旨とは関係ないけど、二重引用符と単一引用符を
入れ替えた方が良い。

どこに問題があるか見極めるには、静的な HTML を書いて、
get.php を呼びだしてみたりするとか。

とりあえず、index.php で生成される HTML を良く眺めることを勧める。
064964304/07/06 12:28ID:mpLQA1tZ
できましたm(__)m
みなさん、レスどうもです。
<?php print($_GET['a']) ?>が正しいようでした。

>>648
二重引用符と単一引用符を入れ替えてみました。
ソースを見るとこちらのほうがよさそうですね(実はあまり意味がわかって
いませんが・・)

それにしても1時間くらい悩んでいたので助かりました。
ありがとうございました。
0650nobodyさん04/07/06 13:12ID:???
なるほど、printはTUREを返すのか。
0651nobodyさん04/07/06 13:13ID:???
TRUE... orz
0652alvi04/07/06 13:14ID:A6zHoUWt
ど忘れしてしまったので教えて下さい。

includeされるファイル
function.php


実行する(function.phpをincludeさせる)ファイル
main.php
があるのですが、

万が一main.phpではなくfunction.phpにアクセスされた時にはfunction.phpがエラーを舶用に
htaccessは使わずにファイル名で判定できた筈だったのですが変数を忘れてしまいました。

function.phpをmain.phpに読み込んで$_SERVER["SCRIPT_NAME"]
とするとmain.phpになってしまいますが、これをfunction.phpと表示させる変数は何であるのか
教えて下さい。よろしくおねがいします。
0653nobodyさん04/07/06 13:28ID:???
<?=?>は出力だ。
<?="あいうえお"?>と<?php print "あいうえお"?>
は同じ結果が得られるわけだな。
0654nobodyさん04/07/06 13:31ID:???
>>652
何を訊きたいのかよく分からないんだけど
0655nobodyさん04/07/06 13:53ID:???
>>652
phpinfo
0656nobodyさん04/07/06 14:01ID:???
>>652
__FILE__
0657nobodyさん04/07/06 14:04ID:???
>>653
<?=[var]?>は<?php echo[var]?>のエイリアス。
<?="あいうえお","かきくけこ"?>はできても
<?php print "あいうえお","かきくけこ"?>はできない
0658alvi04/07/06 14:28ID:A6zHoUWt
簡単に言うと、
includeするファイルがあり、そのincludeされるファイルをincludeするファイルのなかで使用する為に
includeされるファイルへ何を書くとそのincludeされるファイルのファイル名を取得できるのでしょうか?

>>656
今、外出する直前で確認出来ないのですが、__FILE__ですか?
phpinfoでは分かりませんでした。(include等は使っていない為)
0659nobodyさん04/07/06 14:55ID:???
> <?php print($_GET['a']) ?>が正しいようでした。

こんな答え方をしている時点で、何も理解していない、理解する気もないって感じだな。
0660nobodyさん04/07/06 15:24ID:???
>>658
ごめんどういう意味かぜんぜん分からない。includeするほうをA、されるほうをBとして説明してくれないかな?
0661nobodyさん04/07/06 15:31ID:???
include($file)でincludeされた$fileのファイル名が知りたいと言っている
のだと想うのだが、そんな関数ありましたっけ?
0662nobodyさん04/07/06 15:42ID:???
ふざけた質問申し訳ないんだが
HTMLタグの<TD>〜</TD>の中にPHP構文を入れるとエラー出るのか?
0663nobodyさん04/07/06 15:43ID:???
>>658
ぜんぜん簡単に書かれてないぞw

includeされた場合はmain.php、直接動かした場合はfunction.phpで切り分けできるでしょ?
何か問題でも
0664nobodyさん04/07/06 15:45ID:???
>>662
ふざけた質問なら、誰も答えない
066566204/07/06 15:45ID:???
<?phpが<? phpになってた_| ̄|○
0666nobodyさん04/07/06 16:11ID:???
おい、質問なんだが
計算結果が4になるんだがこれを4.00と表示したい
こんな時どうするか教えやがれぬるぽ
0667nobodyさん04/07/06 16:21ID:???
>666
$値 = 4;
$桁 = 2;
echo number_format($値, $桁);
066866604/07/06 16:26ID:???
>>667
激しく感謝!
0669nobodyさん04/07/06 16:30ID:???
マニュアル嫁よ。。。
0670nobodyさん04/07/06 16:35ID:???
夢は長く見させてあげようよ。。。
0671nobodyさん04/07/06 17:18ID:???
マニュアルなんて読むかボケェ
お前らがマニュアル引き係じゃぁ


と思っている輩が質問してる訳です
0672nobodyさん04/07/06 17:22ID:???
まぁ、確かにそんな風な質問が多いなぁ。
0673nobodyさん04/07/06 17:22ID:???
>>671
あたりまえじゃん
0674nobodyさん04/07/06 17:51ID:???
>>671-673
目腐ってんじゃねーの。
どこにそんな高等な質問があるんだよ。
0675nobodyさん04/07/06 18:24ID:???
<?php
ob_start();
?>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h1 style="font-size:14pt;text-align:center;">
ログインtest
</h1>
<hr />
<form method="GET" action="index.php">
<table border="0" align="center">
<tr>
<th align="right">ユーザ名:</th>
<td>
<select name="id">
<?php
$db=mysql_connect("COMPUTER","root","root");
$rs=mysql_db_query("test_db","SELECT * FROM scheusr");
while($aryCol=mysql_fetch_array($rs,MYSQL_ASSOC)){
print("<option value='".$aryCol['id']."' ");
if(isset($id)){if($id==$aryCol['id']){print("selected");}}
print(">".$aryCol['nam']."</option>");
}
?>
</select>
</td>
</tr>
067667504/07/06 18:24ID:???
<th align="right">パスワード:</th>
<td>
<input type="password" name="passwd" size="10" />
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="sbm" value="ログイン" />
<input type="reset" value="取消" />
</td>
</tr>
</table>
</form>
<?php
if(isset($_GET['sbm'])){
print("if通過した");
$sql="SELECT * FROM scheusr WHERE id='".$id."' AND passwd='".
crypt($passwd,"ZZ")."'";
$rs=mysql_db_query("test_db",$sql);
if(mysql_num_rows($rs)==0){
print("<script language='JavaScript'>");
print("window.alert('パスワードが間違っています');");
print("</script>");
print("$rs");
}else{
$aryCol=mysql_fetch_array($rs,MYSQL_ASSOC);
header("Location: hello.php?id=".$id."&nam=".urlencode($aryCol['nam']));
}
}
print("</body></html>");
ob_end_flush();
?>
067767504/07/06 18:24ID:???
scheuserがテーブルで
id主キー
passwd
namです

テーブルに登録されているパスワードが入力されたときに
他のページに飛ぶようにしたいのですが、
パスワードが一致するようにならないみたいなんです。
どのように変えたらいいでしょうか?
よろしくお願いします。
0678nobodyさん04/07/06 18:28ID:???
そんなお前にもerror_reporting(E_ALL)とvar_dump()
0679nobodyさん04/07/06 18:32ID:???
PIのキモさ爆発
0680nobodyさん04/07/06 19:08ID:???
丸投げっすか
0681nobodyさん04/07/06 21:22ID:???
変数の中身が文字列か数列かを判断する場合はどうすればよいでつか?
0682nobodyさん04/07/06 21:36ID:???
>>681
http://jp.php.net/manual/ja/ref.variables.php
0683nobodyさん04/07/06 21:39ID:???
${file_name} = "test.csv";
header("Content-disposition: attachment; filename=${file_name}");
header("Content-type: application/octet-stream; name=${file_name}");

でcsvをダウンロードさせているのですが、なぜかNetscape(7.1)だけ
「test.csv.php」を開く になります。(中身は正常なcsv)
IE、Mozilla、Operaでは問題ないのですが、どなたか解決された方おられますか?
0684nobodyさん04/07/06 21:40ID:???
↑$file_name = "test.csv";
の間違いです。
0685alvi04/07/06 21:59ID:A6zHoUWt
本当に説明が下手ですみません。

前提
・A = main.php
・B = function.php
・Bには直接アクセスされたくない。だからといってhtaccessは使わないとする
・AはBをincludeする

いや、口で言うのは分かりづらいのでソース書いて実行した物をを付けます。

<?php
#A = main.php
include'function.php';
print_r($ABC);
?>

<?php
#B = function.php
$ABC[] = __FILE__;
$ABC[] = $_SERVER["SCRIPT_FILENAME"];
?>

そして、A = main.phpの出力結果は
Array
(
[0] => /home/****/public_html/function.php
[1] => /vhome/****/public_html/main.php
)

お騒がせしました。>>656さんの仰った方法で解決です。。
if ( __FILE__ == $_SERVER["SCRIPT_FILENAME"]) die('Forbidden!');
というコードが欲しかったのです。ありがとうございました。
0686nobodyさん04/07/06 22:53ID:???
>>685
確かど忘れだったんだよな >>652,658
0687nobodyさん04/07/06 23:36ID:???
あの偉大なるカポコン神が、
WepProg界に新たな政策を呼びかけています。
アンチ民主党。取り愛ず、藻前ら嫁。

ttp://mykit.jp/pc/kapokon/index.php3
0688nobodyさん04/07/07 02:38ID:+x8AlGbL
phpで 改行\n を含む変数の指定行(例えば10行目)に 別の変数を挿入したいのですが
どうしたらいいでしょうか?


0689nobodyさん04/07/07 03:32ID:???
>>687
自作自演?うざい。
0690nobodyさん04/07/07 08:17ID:???
output_bufferingがデフォルトで有効になっているサーバーって
結構あるものでしょうか?
また、ob_start();〜ob_end_flush();を使用した時の処理速度は変数
に放り込んでechoした時の処理速度と比較してどちらが早いの
でしょうか?
0691nobodyさん04/07/07 09:48ID:???
>>680
よけいなタグを取ることもできないとこを見ると、完全に丸投げですな
0692nobodyさん04/07/07 11:10ID:HKrq5OGL
すんません、php専門のウェブ雑誌ってありましたよね?
URLをどなたが教えて頂けないでしょうか?
0693nobodyさん04/07/07 11:22ID:???
>>688
if($i=="10"){$hensu = $kochinohensu; }
もし10行目になったらコッチの変数にするよ。
0694nobodyさん04/07/07 11:24ID:???
何冊かあるんだが。

PHP プログラマーズマガジンのことかね。
ついでにどうせ買うなら、2ch 系 PHP コミュのアフィリエイト通してやってくれ。
http://pear.sakura.vg/
0695nobodyさん04/07/07 11:26ID:???
なんか自演宣伝ぽい
0696nobodyさん04/07/07 11:57ID:???
>690
$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > /dev/null

real 0m7.346s
user 0m7.200s
sys 0m0.150s

$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > /dev/null

real 0m13.534s
user 0m12.800s
sys 0m0.730s

逐次書き出すより、ob_* を使用して「イッキ出し」した方が処理は早くなるようですよ。
0697nobodyさん04/07/07 11:59ID:???
>675
crypt($passwd,"ZZ");

の結果と、対象のテーブルの値を見比べてください。
069869404/07/07 12:02ID:???
>>695
言われるかなとは思った。
まぁ俺は俺で別のアフィリエイト ID もってるし、そもそも PHP|architect はあまり好きじゃないんで。。
最近はそうでもないかも知れないが、前までは業務用の堅実な記事が大半で面白みが無かった感じ。
0699nobodyさん04/07/07 12:50ID:???
>>696
こうやってテストするのですね。勉強になりますm(_)m。
私の環境ではphp -rというオプションが存在しないみたいなのですが、
これは環境によるのでしょうか?。

$ time php -r 'ob_start();for($i=0;$i<1000000;$i++){echo "hoehoe";}ob_end_flush();' > ./null
Error in argument 1, char 2: option not found r

real 0m0.186s
user 0m0.121s
sys 0m0.015s

$ time php -r 'for($i=0;$i<1000000;$i++){echo "hoehoe";}' > ./null
Error in argument 1, char 2: option not found r

real 0m0.471s
user 0m0.105s
sys 0m0.015s

$ time php -r 'for($i=0;$i<1000000;$i++){$k .= "hoehoe";}echo $k' > ./null
Error in argument 1, char 2: option not found r

real 0m0.171s
user 0m0.112s
sys 0m0.015s
0700nobodyさん04/07/07 12:50ID:???
>>694
1000円位するのか。高いような・・・
0701nobodyさん04/07/07 13:58ID:???
>699
CLI 版の PHP には acndefhilm"r"svwz というオプションを使用できる。CGI 版はわからない。
速さを求めるなら、出力制御するか、変数に格納して一発出力なのかな。
で、

ob_* を使うとメモリ使用量が違うらしい。

$ php -r 'ob_start();for($i=0;$i<1000;$i++){echo "orz";}echo memory_get_usage();ob_end_flush();'
orzorz...53736

$ php -r 'ob_start();$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();ob_e
nd_flush();'
orzorz...57136

$ php -r '$s="";for($i=0;$i<1000;$i++){$s.="orz";}echo $s, memory_get_usage();'
orz...16040

ちなみに、
$ php -r 'ob_start();echo memory_get_usage();ob_end_flush();'
52896
0702nobodyさん04/07/07 15:06ID:???
<?
$exp[1] = 2;

for ( $i = 2 ; $i > 100 ; $i++ ){
$X = $exp[$i-1];
$Y = $i;
$Z = 3*(floor($i/10)+1);
$exp[$i] = $Z * $Y + $X;
print $exp[$i];
}
?>

HTMLに表示されないです。
分かる方いませんか?
070370204/07/07 15:10ID:???
スマン、解決・・・
不等号反対だた
0704nobodyさん04/07/07 15:56ID:???
(;´Д`)
0705fushianasan04/07/07 17:06ID:???
うんこー
0706nobodyさん04/07/07 17:10ID:???
チャットを作る!

最低限入れる機能(評価:極小)
自動リロードする
表示は10行程度

入れたい機能(評価:普通)
いわゆる普通のチャットシステム
自動リロードの間隔が選べる
表示の行数が選べる
入室画面がある
切断者(ブラウザを閉じた奴)は退出させる
発言者の名前がわかる

あったらいいな機能(評価:極大)
チャット中にファイルをUP・交換ができる
0707nobodyさん04/07/07 17:13ID:???
>>706
ここはお前の日記(ry
0708nobodyさん04/07/07 17:25ID:???
>>706
ぼうや、大きな夢を持ってるねw
070970604/07/07 17:28ID:???
作ってぇ☆
オネガイオネガイ☆
0710nobodyさん04/07/07 17:43ID:???
>>709
丸投げスレに行けやドアホ
0711nobodyさん04/07/07 17:44ID:???
>>700
金が無いなら元になっている雑誌(英語)は安い。
http://www.phparch.com/
自分は先に英語読んでたクチだが、結局日本語版だけにした。
少なくても自分がやるより翻訳の品質と時間コストが安いため。
定期購読方式だと割り引きになるし、毎月買わされるんじゃなくて
購入が選べるので、そっちの方がお勧め。過去の号もそこから充当できるし。

他の有名どころでは
http://www.php-mag.net/
紙のメディアでも出版されている(最近はPHP|architectも) が、
昔取り寄せが上手く出来なかった。今はどうかしらんけど。

インプレスが発行予定の雑誌っていつ発売だっけ。
初稿原稿の締め切りはもう過ぎたようなので、今月末ぐらい?
0712nobodyさん04/07/07 18:04ID:???
>>710
丸投げスレに糞を捨てないように
0713nobodyさん04/07/07 18:43ID:???
ファイルを監視して新しく追加された行を読み込む
Unix系の tail のような機能を作りたいんですが
だれかそういう関数をつくっテイル人いますか?
0714nobodyさん04/07/07 18:44ID:???
山田君、一枚持っていって
0715nobodyさん04/07/07 18:46ID:???
>>711
php-mag、トラブル多いけどそれなりに届くよ。でも高いのよね。
PDF エディション出てるので、今ならそっちお勧めする、
0716nobodyさん04/07/07 19:23ID:???
腹を切って死ぬべきである
0717nobodyさん04/07/07 19:31ID:???
>>713
PHPのみじゃ監視は無理だからcronとか使えばいいんじゃないのけ。
0718nobodyさん04/07/07 19:45ID:???
行が追加されることまで分かってるならどうとでもできるだろうが・・。
トリガなしで汎用的に監視がしたいならFam関数+αだろう。
0719nobodyさん04/07/07 20:56ID:H1YWjpHJ
文字エンコードですが
ソース内で
mb_http_output("UTF-8");
mb_internal_encoding("UTF-8");
で指定してもサーバ側が別だとエンコードされません。
ソース内の指示よりphp.iniの方が優先順位が高いのでしょうか。
0720nobodyさん04/07/07 21:12ID:???
>>719
mb_http_outputはphp.iniで
output_handler = mb_output_handler
となっているか、ob_start('mb_output_handler')してからだろ。
mb_internal_encodingやmb_http_inputは既に読み込まれている
スプリクトや$_POST,$_GETの文字エンコードは変換されない。
0721nobodyさん04/07/07 22:22ID:uCG1B5VO
初心者な質問ですみません。

SESSIONを使って買い物カゴ的なものを作りたいのです。
・formのラジオボタンで選択したほうの商品名を表示する
・選択した回数に応じて個数を加算していき、それを表示する。(表示ページから入力ページには戻れるようにしてある。)
上記のようなものを実現するにはどのようにしたらよいのでしょうか?

抽象的な表現でもうしわけありませんが、是非よろしくお願いします・・・。
0722nobodyさん04/07/07 23:02ID:???
>>721
そこまで決まってるなら後はスクリプトを書くだけなのだが...
サンプルが欲しいなら「ショッピングカート php セッション」あたりでググってみたら?
0723nobodyさん04/07/07 23:13ID:H1YWjpHJ
>>720
つまり ob_start() 使うとエンコーディング出来ないって事ですか
072472004/07/07 23:29ID:???
>>723
逆。
php.iniでoutput_handlerを指定していない場合は
ob_start('mb_output_handler')としないと、出力時にコード変換は行われない。

実際、mb_output_handlerを使った変換はしたこと無いので、
大外ししているかもしれんが。
0725nobodyさん04/07/07 23:39ID:???
> ソース内の指示よりphp.iniの方が優先順位が高いのでしょうか。

マニュアルになんて書いてあるか知ってて言ってるんだろうな。
出力をバッファリングしたものをコンバートしてるって知ってて言ってるんだろうな。
0726nobodyさん04/07/08 00:22ID:YCLF39oi
phpで掲示板を作成しているのですがform method post で取得した文字列をlog.txtというファイルに書き込むところまではうまくいったのですが
過去の書き込みが消えてまったく新しいtextが出来上がってしまいlogとして使い物になりません。
ファイルにもともと書いてあった文章は残して追記するにはどうしたらよいのでしょうか?
またそれぞれの要素をファイルから変数に読み込ませるのはどうするのが最も効率がよいか教えてください。


$name = $_POST['name'];
$title = $_POST['title'];

$fl=fopen("./log/log.txt","w+");

fwrite($fl,$name,$namelen);
fwrite($fl,",",1);
fwrite($fl,$title,$titlelen);
fwrite($fl,",",1);

0727nobodyさん04/07/08 00:28ID:???
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)くぜんぶマニュアルのfopenに書いてあったでつ
     `ヽ_っ⌒/⌒c
072872104/07/08 00:40ID:VIhri8TS
うーん、見てみたけどよくわからない・・・。
ラジオボタンのvalueに各々、<? echo $_SESSION["商品名"]++; ?>を入れてみて実行してみたところ、
両方同時に増えていってしまうし・・・。うわーん・・・。
0729nobodyさん04/07/08 01:11ID:???
日記は他所で書け。
0730nobodyさん04/07/08 03:02ID:YCLF39oi
いくつかの掲示板のログファイル(dat)を見てみたのですがキホン的には各要素をカンマで区切っているだけですよね。
phpでそれぞれ区切られた要素を取り出すにはどのようにしたらよいのでしょうか?
たとえば書き込み本文に半角カンマなどが使われていた場合はそこで間違えて区切ってしまったりするのではないのでしょうか?

たとえば本文で 私は,〜〜です。と言う書き込みがあった場合「私は」と「〜〜です」の二要素に分かれてしまうのではないかと心配しています。

$const=readfile("./log/log.txt"); 
このようにファイル全体を呼び出したあと具体的にはどのような関数を使ってわければよいのか、ぜひともアドバイスをお願いいたします。
0731nobodyさん04/07/08 03:32ID:???
釣れますか?
0732nobodyさん04/07/08 03:45ID:???
もうね、phpBB 使えと、もしくは osCommers か OpenBazaar 使えと。
もしくはしっかりコード見て盗めyo!

>>721 なんて仕事でやってるんだろう、、それで自分の書いたコードに責任持てるのかと。
0733nobodyさん04/07/08 03:52ID:???
>>730
http://jp.php.net/manual/ja/function.fgetcsv.php
0734nobodyさん04/07/08 06:27ID:YCLF39oi
$fp = fopen("./log/log.txt", 'r');
// 終端に達するまでループ
while (!feof($fp)) {
// ファイルから一行読み込む
$line = fgets($fp);
// 読み込んだ行を出力する
print $line;
// <br>の出力
print "<br>\n";
}

この作業を逆に行うにはどうしたらよいのでしょうか?(log.txtの一番下の行から順番に出力させたい)
0735nobodyさん04/07/08 09:00ID:???
>>730
CSVファイルの構成も知らないの?
PHP以前の話だよボケ
0736nobodyさん04/07/08 09:02ID:???
>>734
fileで読んでリバースかけてforeachとか
マニュアル読まずに書き込むなよボケ
0737nobodyさん04/07/08 09:03ID:???
 
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 こ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ    
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
073869204/07/08 09:03ID:BnTCTIrC
>>694
ありがとうございます。というかここもうちょいちゃんとSEOやってくれ…
[php マガジン]でも[php (ウェブ)雑誌]でもひっかからんからどうしようかと思いました。
0739nobodyさん04/07/08 10:06ID:???
マニュアルむず
0740nobodyさん04/07/08 10:11ID:???
$_REQUEST['url']に存在するページはEUC-JPなのですが、
$codeにはUTF-8が返って来てしまします。この結果に
従いmb_convert_encodingすると拾得ページが文字化け
してしまうのですが、どうしたら良いのでしょうか^^;。

if ($file = @fopen($_REQUEST['url'],'r')){
if ($file) while(!feof($file)) $page .= fgets($file,4096);
fclose($file);
}
$code = mb_detect_encoding($page);
$page = mb_convert_encoding($page,'EUC-JP',$code);
074174004/07/08 10:15ID:???
$_REQUEST['url'] = 'http://www.yahoo.co.jp/'を放り込むと
$codeが空白に・・あれ・・・
0742nobodyさん04/07/08 10:39ID:???
$code = @file_get_contents('http://www.yahoo.co.jp');
print $code;

EUCで読み込めてますけどね
0743nobodyさん04/07/08 10:45ID:???
include("http://www.yahoo.co.jp");
完璧。
0744nobodyさん04/07/08 10:59ID:???
>>740
mb_detect_order() でエンコード検出リストを確認してみたら?

php.ini で
mbstring.language = Japanese
にして Apache を再起動するとか、スクリプトの最初に
mb_language('Japanese');
を入れてみるとうまくいくかもしれない。

詳しくはマニュアルで。
0745nobodyさん04/07/08 11:05ID:???
$obj = new HTTP_Client;
$code = $obj->get('http://www.yahoo.co.jp');
最強。
0746nobodyさん04/07/08 11:38ID:???
> というかここもうちょいちゃんとSEOやってくれ…
> というかここもうちょいちゃんとSEOやってくれ…
> というかここもうちょいちゃんとSEOやってくれ…


是非 >>738 の会社からアシアルに売り込みにいって、顛末記でも書いてくれ。
0747nobodyさん04/07/08 11:39ID:???
マニュアルしょぼ
074874004/07/08 11:47ID:???
>>742,743,744,745
以下の方法にする事にしましたm(_)m
先にUTF-8で認識されてしまったのが問題みたいでした。
これから、あちこちのページでもテストしてみたいと想います。
貴方のページにもきっと・・・^^w。

$page = @file_get_contents($_REQUEST['url']);
mb_detect_order('eucjp-win,sjis-win,UTF-8');
$code = mb_detect_encoding($page);
0749nobodyさん04/07/08 11:48ID:???
マニュアル使えてる奴はネ申!
0750nobodyさん04/07/08 11:54ID:???
あんな親切なマニュアル無いと思うけどね
0751nobodyさん04/07/08 12:10ID:???
いい本教えてくれ
0752nobodyさん04/07/08 12:11ID:???
赤マンモスでも読め
pdfで無料配布してるから

「赤マンモス pdf」でぐぐれ
0753nobodyさん04/07/08 13:00ID:???
マニュアルみたいな本を
0754nobodyさん04/07/08 13:19ID:???
PHP関連の書籍(但しPHP出版系お断り)
http://pc5.2ch.net/test/read.cgi/php/985315574/l50
0755nobodyさん04/07/08 13:20ID:???
PHP のマニュアルの目次の関数リファレンス。
アルファベット順なのがちょっといや。

Math、 BCMath と GMP 関数 なんかは「数学関数」っていう分類
を作って、そこに列挙してほしい。

DB 関連の関数なんかも別に括っておいてほしい。と思たりする。

0756nobodyさん04/07/08 13:23ID:???
PHPのマニュアルはほんと便利だよな
欲を言えばfunction searchのほかに
googleではないサイト内検索がほしいが
$_SERVERとか検索するときに困る
0757nobodyさん04/07/08 13:41ID:Bp5irib3
PHPのなかに
<?xml version="1.0"?>
この記述を入れるとエラーが出てしまいます。
どのように回避したら良いでしょうか?
0758nobodyさん04/07/08 13:42ID:???
<?php ?>
0759nobodyさん04/07/08 13:56ID:???
>>756
win なら chm、
うにっくすならどうにでもなる

ってのでどうよ
0760nobodyさん04/07/08 14:00ID:axDKGDjf
PHPの命令でhttpサーバーの403エラーや404エラー等を起こす方法を教えてください。
0761nobodyさん04/07/08 14:06ID:???
>>760
まずはどうやったら出来そうか自分の見解を書けよ
0762nobodyさん04/07/08 14:59ID:???
header("Location: >>760 is fool");
0763nobodyさん04/07/08 15:00ID:???
>757
php.ini か .htaccess あたりに ”short_open_tag = Off” を設定する。

詳しくは、
ttp://jp.php.net/basic-syntax
0764nobodyさん04/07/08 15:02ID:???
PHPってサーバーに自分で追加した環境変数の取得できるの?
0765760(・∀・)04/07/08 15:05ID:???
>762さんのを実行するとNot Foundが出るようになりました。ありがとうございます。
0766nobodyさん04/07/08 15:05ID:???
>>757
普通に出力。
<?php echo '<?xml version="1.0"?>' ?>
0767nobodyさん04/07/08 15:56ID:???
>764
phpinfo() を眺めればわかるかも。
076876404/07/08 16:02ID:???
うーん、phpのグローバル変数じゃ、
最初から設定されている変数しか取得できないのかなぁ。
0769nobodyさん04/07/08 16:30ID:???
>768
「最初から」の意味がよくわからないんだけど。CLI だと以下のようになる。

$ OTL=9 php -i | grep OTL
OTL => 9
_SERVER["OTL"] => 9
_ENV["OTL"] => 9
0770nobodyさん04/07/08 16:55ID:???
前から思ってたんだが
>幸せになれるかと思います。
この表現キモイ
0771nobodyさん04/07/08 16:55ID:???
>>770
幸せになりやがれ
077276404/07/08 16:57ID:???
ごめんなさい、質問があいまいでした。
Linux上で
# export TEST=1234
として
php上でTESTと言う名前を指定して、
1234という数字が取得できるかが知りたかったんだ。
0773nobodyさん04/07/08 17:15ID:???
>772
とれる。$_SERVER か $_ENV に格納されているはず。

$ export TEST=1234
$ php -r 'echo $_ENV["TEST"];'
1234
0774nobodyさん04/07/08 17:18ID:???
>>770
過去ログ見たけど、
> 幸せになれるかと
なんて発言見あたらないyo!
077577004/07/08 17:24ID:???
誤爆スマソ

MLスレに書くつもりだった
0776nobodyさん04/07/08 17:29ID:???
>>775
不幸せになるかと思います。
0777nobodyさん04/07/08 17:31ID:???
>>773
$_ENVかgetenv()でとれるのは確かだけどモジュール版の場合は
httpdを起動させたユーザーの環境変数が引き継がれるので
サーバー起動と同時にhttpdを立ち上げる設定の場合は無理ぽ。
0778nobodyさん04/07/08 17:37ID:???
>777
なるほど、httpd の起動スクリプトに環境変数を書いておけばいいのかな。

で、764 さんは環境変数を読み込んで何をしたいのか気になります。
077976404/07/08 17:50ID:???
みなさん、ご助言いただきありがとうございました。
サーバー起動時にモジュールApacheを立ち上げてていたので、
それが問題になっていたようです。

>>778
バッチ処理で発生した日時データの必要部分を環境変数に保存し、
それをPHP側で利用しようとしていました。
0780nobodyさん04/07/08 18:01ID:???
>779
環境変数じゃなくてファイルに書きこむのではだめですか?
0781nobodyさん04/07/08 22:29ID:YCLF39oi
$_POST['text'];  が

test
test
test
test


以上のような改行を含んだ文字列の場合最終的には
test<br>test<br>test<br>test<br> このような形へと変更したいのですが

$text = $_POST['text'];
$text = nl2br($text);
$text =rtrim($text);

以上の処理では

test<br />
test<br />
test<br />
test<br /> 

このように改行コードが取り除かれていないような形になってしまっています。
どのようにすればよいのでしょうか?
0782nobodyさん04/07/08 22:44ID:???
>>781
SJISと改行コードでぐぐれ
後は考えろ
0783nobodyさん04/07/08 22:52ID:YCLF39oi
str_replaceで解決でした どうもです
0784カポコン04/07/09 01:28ID:???
前スレをHTML化しました。
質問の回答などに使ってみてください。
いずれ、リスト化させます。

ttp://cgi.f13.aaacafe.ne.jp/~mugen/2ch/
0785nobodyさん04/07/09 01:53ID:???
>>784
ブラクラ
0786nobodyさん04/07/09 13:27ID:???
>>784
これ開いた時からずっとFDDがガリガリ音鳴らしてる。何なのこれ?
0787nobodyさん04/07/09 13:54ID:???
>>786
ブラクラ
0788nobodyさん04/07/09 14:06ID:rjBtiSrj
Web上の任意のページからHTMLファイルを読み込んで
その中の<a>タグのHREF属性にあるURLを取得したいのですが
HREF属性は相対URLで書かれている可能性もあるため、上手く処理できず困っています。

HTML中の相対URLを絶対URLに変換するにはどうすればよいのでしょうか?
0789nobodyさん04/07/09 14:13ID:???
>>788
2chで質問して教えてもらう
0790nobodyさん04/07/09 14:37ID:rjBtiSrj
>>788 すみません、どの板で質問するのが適切なのでしょうか?
PHP関連はこの板かと思ったのですが・・・
0791nobodyさん04/07/09 14:39ID:???
(・∀・)ニヤニヤ
0792nobodyさん04/07/09 14:44ID:???
parse_url() でプロトコルとホストとパスを取得して
httpやftpで始まっていなかったらそれらとくっつける。
始まっていたらそのまま利用する。
./ や / で始まっていたらその部分を削除して、
../ で始まっていたら先ほど取得したパスを ../ が連続する分遡るようにパースしてくっつける。

こんな感じか。
0793nobodyさん04/07/09 15:31ID:???
( ´,_ゝ`)プッ
0794nobodyさん04/07/09 15:43ID:???
正規表現で一発さ!
そんなことより最近、電動ナナシさそを見かけないけどどこいったんだろう。
0795nobodyさん04/07/09 16:18ID:???
下手な自演だなぁ
0796nobodyさん04/07/09 16:45ID:???
PHPを最近お勉強してるのですが?ってなんですか?
$year = (!isset($year)) ? date("Y") : $year;
上の?の意味がわかりません。
どなたかご教授よろしくお願いします
0797nobodyさん04/07/09 16:48ID:???
>>796
PHPに限らず他の言語でも利用出来るものもあるんだが、
if( !isset( $year ) ){
$year = date("Y");
}else{
$year = $year;
}
と同義な。
0798nobodyさん04/07/09 17:01ID:9qX+1d8A
すいません、phpdevを使ってWindows2000php4.23を入れたのはいいんですが
php.iniを編集して
;extension=php_mbstring.dll
を有効にすると

プロシージャ エントリ ポイント spprintf がダイナミックライブラリ php4ts.dll から見つかりませんでした。
Unable to load dynamic library '*****php/extension/php_mbstring.dll'-指定されたプロシージャが見つかりません。

と。上記の2つのメッセージが2回づつ出て、php_mbstringも有効になりません。
extension_dir =の指定は間違っていなくて、php_mbstring.dllも確実にあるのですが・・・
検索しても分からずお手上げ状態
0799nobodyさん04/07/09 17:26ID:???
>>797
ありがとう!!
0800nobodyさん04/07/09 17:55ID:/g6zLd9Z
800ついでにこれもあまり言語に依存しない質問です

ある数値が奇数か偶数かを調べるのに一番最適な方法って何でしょうか?
現在は数値を2で割って余りがあるかどうかで判別してます
0801nobodyさん04/07/09 18:04ID:???
同じと思うが
print ( $n % 2 ) ? "奇数": "偶数";
0802nobodyさん04/07/09 18:05ID:???
その質問で何が最適かというのは、結構言語に依存する話だと思うんだがどうだ?
0803nobodyさん04/07/09 18:06ID:???
そうですね。ではphpでお願いします
080479704/07/09 18:14ID:???
print ( $n & 1 ) ? "奇数": "偶数";
0805nobodyさん04/07/09 18:18ID:???
$a = 12345678901234567;
print $a&1?'奇数':'偶数';
print $a%2?'奇数':'偶数';

うちの環境じゃ両方とも偶数と吐きやがる
080680004/07/09 18:20ID:???
>>804
なるほど、ビット演算子を使うんですね
今までややこしいから使わなかったんですけど、それでやってみます
ありがとうございます
080779704/07/09 18:27ID:???
>>805
オーバーフロー対策もしろと。・゚・(ノ∀`)・゚・。
0808nobodyさん04/07/09 18:42ID:???
$a = '12345678901234567';
print preg_match("/[13579]$/",$a)?'奇数':'偶数';

奇数だ。文句あっか?
0809nobodyさん04/07/09 19:07ID:???
>>808
一本!!
0810yoshi04/07/09 22:15ID:UYWtgnDg
w2k上でiisを動かしwebを立ち上げていますが、
web上にエクセル文書(.xls)を置きhtmlの中で
リンクを張りダウンロードできるようにしています。
とくにパスワードなどは何も設定していないのですが、
このファイルをIEからダウンロードしようとすると
IDとパスワードの入力をうながすダイアログが
表示されるという現象が起こっています。
これは何故なのでしょうか?
希望する動作としては何もダイアログなど表示されずに、
ダウンロードできることなのですが。
よろしくお願いします。
0811カポコン04/07/09 22:58ID:???
$a = '12345678901234567';
print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
0812nobodyさん04/07/10 00:30ID:???
$a="(´∀`)";
は偶数らしいです。
0813nobodyさん04/07/10 00:48ID:???
>>811
カポコンファンは黙っていない。バグってるぞ!!!

<?php
$a = 1e99;
print preg_match("/[^02468]$/",$a)?'奇数だ。文句あっか?':'偶数だ。文句あっか?';
?>
0814nobodyさん04/07/10 01:26ID:???
>>62
0815nobodyさん04/07/10 01:42ID:89QqCOpO
>>792さん、ありがとうございます。
そのやり方で現在のURLの最後が/でない場合、それがディレクトリなのか
ファイルなのかを判別する方法はあるのでしょうか?
例:
現在のURL=http://aaa.co.jp/bbb/ccc
抽出したURL= ../test.html

この場合、cccがファイル名である可能性はないのでしょうか?
そうなると絶対パスが以下のどちらになるのか判定できず困っています。
cccがファイルの場合 http://aaa.co.jp/bbb/test.html
cccがディレクトリの場合 http://aaa.co.jp/test.html


>>793 正規表現で一発で相対パスを置き換える方法があるんですか!
できれば教えていただきたいです。
0816nobodyさん04/07/10 02:12ID:???
>>810
なぜここで聞く?
自宅鯖板へ行け
0817nobodyさん04/07/10 03:27ID:???
>>815
実際にアクセスするまで分からない。
ディレクトリならサーバのレスポンスコードが教えてくれる。
HTTP/1.0 301 Moved Permanently
Location: /を付加したパス
0818nobodyさん04/07/10 08:09ID:???
>>815
>>817のいうとおり。ちょっとかみくだいて書くと、

cccがディレクトリの場合は、http://aaa.co.jp/bbb/ccc にアクセスすると
http://aaa.co.jp/bbb/ccc/ にリダイレクトするようレスポンスが帰ってくる。
それに従って読み先を変えて読めばいい。
現在のURL=http://aaa.co.jp/bbb/ccc/
抽出したURL= ../test.html
→答え=http://aaa.co.jp/bbb/test.html
になる。

cccがファイルの場合はアクセスすると普通に読めて、
現在のURL=http://aaa.co.jp/bbb/ccc
抽出したURL= ../test.html
→答え=http://aaa.co.jp/test.html
になる。

だから、相対パスから絶対パスへの変換はどちらも同じやり方でできる。
0819nobodyさん04/07/10 08:11ID:???
>>818
../../a/../a/../../b

とかに対応できますか?
0820nobodyさん04/07/10 09:31ID:9IEmUTDP
ディレクトリにある画像ファイル一覧を表示したいのですが
このときあるサイズ以上の大きさには表示させないようにできますでしょうか?
<IMG>タグのwidthやheightで指定すると小さい画像もそのサイズに拡大されてしまうので・・
082182004/07/10 09:46ID:9IEmUTDP
えっと自己レスです。
getimagesizeでいけますね、すみません。
0822nobodyさん04/07/10 10:43ID:???
たとえば、

1,りんご,200円
2,みかん,100円
3,ぶどう,500円
(data.txt)

というファイルがあったとして

「2,みかん,100円」

を表示させるとしたら、

$lines = file("data.txt");
print $lines[1];

というように出来ると思うのですが、
「みかん」だけを表示させるとしたらどうすればいいか分かりますか?

$lines = file("1.txt");
$ary = fgetcsv($lines[2],1000,",");
print $ary[1]

まず行を読み込んで、カンマ区切りで読み込むというのを考えたのですが、
これはfgetcsvの機能的に無理みたいでした。
0823nobodyさん04/07/10 10:48ID:???
>>822
とりあえず、マニュアルでも読めば?
ttp://www.php.net/manual/ja/function.fgetcsv.php
0824nobodyさん04/07/10 11:01ID:???
ありがとうございます
fgetcsvがfopen()、 popen()、fsockopen()以外では使えないことはわかったんですが、
結局のところどうすればいいんでしょうか
fopenでオープンして、ポインタを2行目に持っていって
fgetcsvを使えればいいと思うんですが、そういうことはできますかね
0825nobodyさん04/07/10 11:30ID:???
>>819
こんな感じかな。
<?php
function 絶対URL($現在のURL,$相対URL){
$p=array('@/\.(?=/|$)@', '@^(.+//.+)/(?!\.\./)[^/]+/\.\.(/.*|)$@e');
$r=array('','preg_replace($p,$r,str_replace(\'\\\\"\',\'"\',\'\\1\\2\'))');
return preg_replace($p,$r,substr($現在のURL,0,strrpos($現在のURL,'/')+1).$相対URL);
}
$a='http://aaa.co.jp/bbb/ccc/ddd/eee/fff';
$b='././../.././././a/../a.a/../a/b/../../../b/.';
print "$a\n$b\n";
print 絶対URL($a,$b);
?>
0826nobodyさん04/07/10 11:42ID:???
$hosts = array('hoge','moge');

array_map('deny_host',$hosts);

function deny_host($str){

$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);

if( mb_ereg($str,$host) ){
echo "<html>\n<head>\n<title></title>\n</head>\n<body>\n</body>\n</html>";
exit;
}

}


このようなアクセス拒否(というか空白を表示する)スクリプト使ってるんですが
自分でもちょっとトリッキーかな、と思ったりするのですが普通はどうしてますか?
0827nobodyさん04/07/10 11:51ID:???
.swfファイルからFlashの画面サイズを取得することはできますか?
0828nobodyさん04/07/10 12:11ID:???
まぬあるより
> PHPのイメージ関数により JPEG、GIF、 PNG、SWF、 TIFF、JPEG2000イメージの 大きさを知ることができます。
0829nobodyさん04/07/10 12:34ID:???
>>827
ブラウザでswfファイルを開いてウィンドウの大きさを変えてごらん。どういうことか分かっただろ?
0830nobodyさん04/07/10 14:53ID:???
>>824
できる。
fopen() で開いてから fgetcsv() で1行目を読んで無視しして、再度読み込んだら2行目。

>>826
わざわざ array_map() を使う意味がわからない。
普通に以下のように処理したら駄目なのか?

$regex = 'hoge|moge';

$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

if (eregi($regex, $host)) {
    exit;
}
0831nobodyさん04/07/10 16:39ID:???
>>830
そうですよね・・・
0832nobodyさん04/07/10 17:43ID:???
>>824
explode使わないのは理由があるのか?

1,"みかん,リンゴ","500円"
とか""で括られたデータも扱いたいなら
Stream_Var使え。

require_once('Stream/Var.php');
stream_wrapper_register("var", "Stream_Var");

$lines = file('fruits.dat');
$fp = fopen('var://GLOBALS/lines/2', 'r');
$fruit = fgetcsv($fp, 1024);
print_r($fruit);
fclose($fp);
0833nobodyさん04/07/10 18:38ID:???
PEARって結構使われているものなのですか?
どのサーバーでもたいがいインストールされてるのかなぁ
0834nobodyさん04/07/10 18:53ID:???
>>833
そんな質問投げてる時点で素人
まず PEAR のなんたるかを勉強しる!

http://phphp.net/pearwiki/?%5B%5BAN_INTERVIEW_OF_STIG_BAKKEN%5D%5D
http://pear.sakura.vg/index.php?%5B%5BPEAR%A5%DF%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0%CD%D7%CC%F3%5D%5D
0835nobodyさん04/07/10 19:48ID:???
>>834
ふむふむ・・・そういうものだったのか
全部、自分で書いてて気づかなかった^^;
0836nobodyさん04/07/10 19:57ID:???
変数の中身が半角整数時のみTRUEしたいのですが、
is_numericを使うと数値しか判断されないんですよね?
半角英数字を判断する命令文はあるのですか?
0837nobodyさん04/07/10 20:10ID:???
>>836
とりあえずpreg_matchでも使っとけ
0838nobodyさん04/07/10 20:10ID:???
index.php?mode=abc
このように取得して処理する場合 $_GET['mode'] でよいのは分かるのですが

index.php?abc
として処理をさせたい場合、どのように記述すればよいのでしょうか?
0839nobodyさん04/07/10 20:26ID:???
PATH_INFOから取得汁
0840nobodyさん04/07/10 20:27ID:???
>>832
PEAR を使うのも悪くないけど、今回のような場合は使わなくても簡単にできるような気が・・・。
質問者はあまり考える気はなさそうなのでどうでもいいけど。

$line  = 2;
$fp = fopen('data.txt', 'r');
while (--$line) fgetcsv($fp, 1024);
$fruit = fgetcsv($fp, 1024);
fclose($fp);

print_r($fruit);
0841nobodyさん04/07/10 20:27ID:???
>>838
phpinfo()を眺めて探す
084283404/07/10 21:02ID:???
>>840
あー、、流れ読んでなくて 833 が独立した質問かと思ってた。
PEAR 使わなくても一緒なら使わなくていいやね。
0843nobodyさん04/07/10 22:13ID:???
$valが空白の時にはisset($val) || と$val || で判断しないといけないですよね
変数毎に2行書くのはなんか嫌だなと・・・・
php.iniのdisplay_errorsはoffにして気づかない事にするべきかなぁ
みなさんは変数毎に両方のチェックをしていますか?
0844nobodyさん04/07/10 22:54ID:???
>>839
なぜ$_SERVER['QUERY_STRING']じゃないのか
0845nobodyさん04/07/10 22:56ID:???
>843
!empty($val)は?
0846nobodyさん04/07/10 23:03ID:???
perlでいつも@ARGV使ってたから、
PHPでも$_SERVER["argv"]使ってる。
0847nobodyさん04/07/11 00:38ID:???
PHPのページで訪問した人のIPアドレスを調べたいのですが、どうやればできますか?
0848nobodyさん04/07/11 00:41ID:???
うm
084984704/07/11 00:48ID:???
すみません・・
$_SERVER['REMOTE_ADDR']でできますね・・。
0850nobodyさん04/07/11 03:22ID:???
ところでGDってGIF使えるようになったの?
0851nobodyさん04/07/11 03:44ID:???
>>850
ところでFAQを読まないの?
0852nobodyさん04/07/11 04:06ID:???
>>852
FAQには書いてないよ
0853nobodyさん04/07/11 04:08ID:???
>>852
http://www.boutell.com/gd/faq.html
0854nobodyさん04/07/11 05:16ID:???
ぶっちゃけ、もうGIFって使えなくても問題なくない?
0855nobodyさん04/07/11 05:39ID:???
php スクリプトの中からwebサーバにgetリクエストを出して、
ファイルに保存するのにはどうしたらいいですか?

`wget www.hoge.com/file`;

という行を、wget を使わず、phpの機能だけで実現したいのです。
0856名無しさん@そうだ選挙に行こう04/07/11 06:54ID:???
>>854
で何を使う?
0857名無しさん@そうだ選挙に行こう04/07/11 09:02ID:???
>>855
open
0858名無しさん@そうだ選挙に行こう04/07/11 12:33ID:???
$val = '<!--abc-->';
$val = ereg_replace("<!--([0-9a-z._-])-->","\\1",$val);

の「>」がマッチ出来ないのですが何故でしょうか?
0859名無しさん@そうだ選挙に行こう04/07/11 12:51ID:???
>>858
abcとしたいのなら、
$val = ereg_replace("<!--([0-9a-z._-]+)-->","\\1",$val);
0860名無しさん@そうだ選挙に行こう04/07/11 13:05ID:???
>>859
ありがとうございますm(_)m
0861名無しさん@そうだ選挙に行こう04/07/11 17:26ID:0oJHpIPm
PerlのInline系モジュールみたいに
PHP内でPerlのコードを記述することは可能でしょうか?
どうしてもPHP使いたくないもんで。
よろしくお願いします。
0862nobodyさん04/07/11 18:19ID:???
`perl -e ""`;
0863名無しさん@そうだ選挙に行こう04/07/11 18:19ID:fHFfT4lG
ブラウザからリクエストを受け取った後、

echo('今から処理します');

と返して、httpコネクションを切ってから
重たい処理をさせたいのですが、
どうやったらhttpコネクションを切れますか。
0864名無しさん@そうだ選挙に行こう04/07/11 18:21ID:???
httpはコネクションレスです
0865nobodyさん04/07/11 18:33ID:???
>>863
register_shutdown_function() を使ってみるとか。
ttp://www.php.net/manual/ja/function.register-shutdown-function.php
0866名無しさん@そうだ選挙に行こう04/07/11 19:01ID:???
>>855
copy('http://www.hoge.com/file', 'file');

こういう機能を使うときに
ああ、phpって幸せだな
と思う。
0867名無し募集中。。。04/07/11 21:56ID:/oo9N7Gm
コンパイル結果をメモリにキャッシュする無料ソフトって
どれが一番いいの?
0868カポコン04/07/11 22:50ID:???
【北海道】<?=鈴木?>@<?=ムネオ?>【不死鳥】
0869nobodyさん04/07/11 22:59ID:???
> コンパイル結果をメモリにキャッシュする無料ソフト

そんなもの存在しません。終了。
0870nobodyさん04/07/11 23:03ID:???
>>867はいったい何を言ってるんだ?
0871nobodyさん04/07/11 23:20ID:???
>>867
性能で言うならAPC, PHPA, MMCacheの中ではMMCacheが良いと思う。
対応しているアーキテクチャも多いし。
ただ現在は開発が停止中なので最新のPHPと組み合わせて使うにはちょっと不安がある。
まれにスクリプトを更新したとき期待通りに動かなくなって、
/tmp/mmcahe-*を削除したら直ったりするので。
開発再開を期待して待ちましょう。

>>869,870
知らないなら余計なことは言わない方が...
0872nobodyさん04/07/11 23:21ID:???
いや、意図はくみ取れるけどな、、
釣りか?
いっそ PHP 自体使うなと言いたい。
0873nobodyさん04/07/11 23:24ID:???
>>871
それ全部ライセンスで 「無料」 でなければならないとは定められていない。

メモリ上に直接キャッシングを行うのって、MMCache だけだと思ってたけど、
APCやPHPAもそうなの?
0874nobodyさん04/07/12 00:49ID:qiJhhqFo
これだろ?
http://www.stackasterisk.jp/tech/php/apc01_01.jsp
0875nobodyさん04/07/12 05:45ID:Q0IoRcBp
ヒアドキュメントで複数行表示したいのですが、うまくいきません。

<?php
print <<<EOF
古池や
蛙飛び込む
水の音
EOF;
?>


このソースで 古池や蛙飛び込む水の音  と一行につながって表示されてしまいます。
どの変が間違っているのでしょうか。php4.3.7です。
0876nobodyさん04/07/12 06:49ID:c+JkP+le
$aryCnt=file("./".$datname[$l],1);
print($aryCnt[1]);

の出力結果が
2 test2 title2 degree2 2004 7 10 23 40 mail2 home2 1 0 1 test2 uchi-mmkmldegej

なのですがこの文字列に対して
list($num[$j],$name[$j],$title[$i],$degree[$j],$year[$j],$month[$j],$day[$j],$hour[$j],$minute[$j],$mail[$j],$url[$j],$mem[$j],$lang[$j],$br[$j],$text[$j],$host[$j],$browser[$j])

=explode("\r",$aryCnt[1]);

以上の処理でここの変数に値を格納したいと考えているのですが何故かうまくいきません。

ファイルへの書き込み形式は
fputs($fl,$Cntary,$Cntarylen);
fputs($fl,"\r",2);
fputs($fl,$name,$namelen);
fputs($fl,"\r",2);
fputs($fl,$title,$titlelen);
fputs($fl,"\r",2);
fputs($fl,$degree,$degreelen);
fputs($fl,"\r",2);
・・・・・


出力結果は以下のとおりです。
print(count($title));        →1
print_r(array_values($title));  →Array ( [0] => )

どこに問題があるかご教示ください。よろしくお願いします。

0877nobodyさん04/07/12 08:17ID:???
>>875
ブラウザ出力のソースを表示させると、改行されてませんか?
textとして改行していても htmlとして解釈した場合には改行されません。
0878nobodyさん04/07/12 10:20ID:ntR1QL+F
<input type='text' name='hoge' value='foo1'>
<input type='text' name='hoge' value='foo2'>

 一つのフォームで同じnameの値をPOSTでCGIに渡すと、受け取った値には
'foo1 foo2'と入ります。
 これを<textarea>内に表示させてると'foo1 foo2'が表示されますが、
コピー&ペーストをすると'foo1'だけしかペーストされません。
 foo1とfoo2の間に区切り文字が入っているのでしょうか?
 これを一つの値としたいのですが妙案がありましたらご教授ください。
087987804/07/12 10:31ID:???
すみません。
散々調べた後に質問したのですが、検索を続けていたら解決方法を見つけました。
区切りに\0が入って値が渡されることを見つけました。
お騒がせしました。
0880nobodyさん04/07/12 14:57ID:???
>>876
fputsで、長さを指定するのをやめろ。
0881nobodyさん04/07/12 15:13ID:???
>>877
875です。その通りでした。ありがとうございました。
0882nobodyさん04/07/12 18:57ID:sEDp1Uf0
copy関数を使ってファイルをアップロードしたいのですが
日本語名のファイルが化けてしまいます。
日本語を使う方法ってなにかありませんでしょうか?
0883nobodyさん04/07/12 19:03ID:???
copy関数を使ってファイルのアップロードってどうやってやるんですか?
0884nobodyさん04/07/12 19:22ID:???
http://www.xored.com/download.phpからダウンロードできないよー!
xws-core-0.3.4.zipがほしいのですがどこに落ちてますか?
ぐぐっても落ちてません。
0885nobodyさん04/07/12 19:33ID:c+JkP+le
>880
fput長さ指定なしにしましたが何も変わりませんでした・・・・
0886Imo ◆.jC7ANgFY. 04/07/13 00:14ID:???
>>885
$title[$i],
$jの間違いでしょ?
0887nobodyさん04/07/13 02:37ID:AiceQq3q
プログラミング初心者です。
formから入力したマルチバイト文字のデータをphpにとおすとき、
shift_jisの場合は、0x5cの関係で文字化けが発生してしまいますよね。
そのため、euc-jpでformに入力する必要があると思うのですが、
最終的には shift-jis でデータを送りたいのです。
この場合、一体どのような方法を取ればいいのでしょうか?
euc-jpでform入力後、jcode.php 等でeuc-jpからshift-jisに
変換するというのが一般的な方法なのでしょうか?
他に方法はありますでしょうか?

よろしくお願いしますm(__)m
0888nobodyさん04/07/13 03:03ID:???
>>887
http://jp.php.net/manual/ja/ref.mbstring.php
0889nobodyさん04/07/13 04:38ID:???
>>887
・mb_convert_encoding関数による方法
・jcode.phpを使う方法
・mb_output_handler関数による方法
・mbstring.http_outputの設定で行う方法

それぞれの利点/欠点を比較して採用を考えましょう。
0890nobodyさん04/07/13 08:57ID:???
> プログラミング初心者です。
こういう余計な前置きは嫌われるからヤメロ
0891nobodyさん04/07/13 10:58ID:???
>>890
自治?
0892nobodyさん04/07/13 11:39ID:???
>>890
ゴトータン、乙。
0893nobodyさん04/07/13 11:43ID:???
ひろゆきじゃないのか?
0894nobodyさん04/07/13 14:02ID:???
>894
ラム爺タソ、乙。
0895nobodyさん04/07/13 14:34ID:???
自作自演?
0896nobodyさん04/07/13 14:34ID:???
>>884
0.3.4 なら eclips のプラグインマネージャから直でインストール出来た気がする (うろ覚え
そっちからなら取れるかも知れないし、まぁ試してみては。
0897 ◆Vmtd5Gm/qU 04/07/13 16:25ID:???
>>887
文字化けっていうのが表示が表\示となるようなものなのなら
stripslashesを通せばよろし。
変換については>889にあるとおりどぞ。
0898nobodyさん04/07/13 21:25ID:???
アップロードされた画像をサムネイル化してDBに格納するスクリプトを
作ろうとしているところなのですが、
画像をDBに格納する際に、いったんファイルとして
保存しなければならない点が何となくいやなので
できればそのまま直接DBに格納したいと思っているのですが、
方法がよくわかりません。
どなたか教えてくだされ。
0899nobodyさん04/07/13 21:44ID:???
>>898
そのDBとやらに聞いてみたまへ
0900nobodyさん04/07/14 01:08ID:???
>>898
普通にバイナリで突っ込んでくださいッ!
残念ッ!
0901nobodyさん04/07/14 05:11ID:???
つか逆にDBに直でぶち込む方がなんか嫌じゃね?
0902nobodyさん04/07/14 09:50ID:???
画像なんてDBで管理する意味あるの?
画像ディレクトリ作ってファイル名だけDBへ格納すりゃいいじゃん
0903nobodyさん04/07/14 10:20ID:???
xoopsモジュールとして配布するため、
画像ディレクトリを作ろうとすると
ユーザーに対してパーミッションの変更など
よけいな操作を強いることになります。
したがって、画像をDBで管理したいと考えています。
0904nobodyさん04/07/14 10:31ID:???
DBにぶちこむならPostgreSQLのラージオブジェクトとか
そのへん使わないといけないなぁ。
ラージオブジェクト使うと色々と面倒なことが起きる場合があるから
>>902のように普通に保存するようにすればいいと思うよ。
0905nobodyさん04/07/14 10:53ID:???
ob_start()
ob_get_contents()
ob_clear()
でできました。
0906nobodyさん04/07/14 14:33ID:???
報告するレベルのことかよ
0907nobodyさん04/07/14 14:33ID:???
画像をDBに登録したかったらbase64エンコードしてからDBに流し込みなさい
0908nobodyさん04/07/14 15:09ID:k/PvMH0M
touch("./log".$datcountr.".dat",mktime());
chmod("./log".$datcountr.".dat",0777);
fopen("./log".$datcountr.".dat","a+");
//fputs("./log".$datcountr.".dat","\r\n");


上記のファイル作成から書き込みの流れでfputs部をコメントアウトするとエラーは出ませんが
コメント外すとエラーが出ます

ファイル作成まではできているのでパスの指定が間違っているわけではなさそうなのですが
よろしくお願いいたします。
0909nobodyさん04/07/14 15:21ID:???
>>908
fputsの行を穴が空く程よく見ろ
0910nobodyさん04/07/14 15:22ID:???
つうか最低限のエラーメッサゲを見せろよ
とりあえずfopenで拾ったハンドルをfputsのリソースとして使ってみなさい


$handle = fopen("./log".$datc(略
fputs($handle,"\r(略

こんな具合に。


参考までに
http://www.php.net/manual/ja/function.fputs.php
0911nobodyさん04/07/14 15:22ID:???
間違えた

fputsの行とマニュアルのfputsのページを穴が空く程よく見ろ
0912nobodyさん04/07/14 15:33ID:???
PHPを勉強しようと思うのですが、やはり自宅にサーバを持たないと
無理なのでしょうか?目標はデータベースとのやり取りを考えています
0913nobodyさん04/07/14 15:37ID:???
テスト環境は自前であったほうがいいね
最終的にレンタルサーバかなにか知らないけど、他人に迷惑かける環境でのテストは感心しない
0914nobodyさん04/07/14 15:39ID:???
>>913
やはりそうなのですか・・。困った。
現在プロバイダスペースしか持っていません。
0915nobodyさん04/07/14 15:41ID:???
winでもmacosxでもテスト環境は用意できるよ
0916nobodyさん04/07/14 15:42ID:???
>912
やってほしくないのは、
-全世界に公開しているサーバーでテストすること。
-共用サーバーでテストすること。
理由は自分で考えて。

別にサーバーに特化したマシンが無くてもテストはできる。
とりあえず、手元のマシンに PHP と httpd をインストールしてみたらどうか。
勉強するには十分。
0917nobodyさん04/07/14 15:47ID:???
>>916
意図せずテスト環境が全世界に大公開されてるってのはありがち
0918nobodyさん04/07/14 15:49ID:???
>>915-916
以前手元のマシンにPHP(最新版)をインストールしたところ
特定のサイトでPHPの初期画面(?)が表示されるようになり
閲覧が出来なくなってしまったんです。
その際は確か簡単にインストールが出来るという、パッケージを使いました。

それからPHPは専用のサーバが無いと無理なのかと考えてしまってたんです。
もう少し調べてみようと思います。ありがとうございました。
0919nobodyさん04/07/14 15:54ID:???
>>918
PHPマニュアルのインストールの項を熟読しろ
http://www.php.net/manual/ja/getting-started.php
0920nobodyさん04/07/14 17:06ID:???
>>918
> 特定のサイトでPHPの初期画面(?)が表示されるようになり
> 閲覧が出来なくなってしまったんです。

ん?もうちょっと分かりやすく書いてくれ
0921nobodyさん04/07/14 17:48ID:tmsEgaLN
>>866
こういう命令を見ると、
ああ、phpって本当にキモイなぁ
と思う。

HTTPリクエストによるファイルの取得を
ファイルのコピー風にするなボケ言語。
0922nobodyさん04/07/14 18:01ID:???
>>921
こういうカキコを見ると、
ああ、アンチphpユーザって本当にキモイなぁ
と思う。

ファイル空間をHTTPまで拡張して一元化・隠蔽しただけなのに
利便性などのメリットを語らずキモイとかゆうな似非原理主義者。
0923nobodyさん04/07/14 18:08ID:???
ファイルやアドレスなどを一元化して透過的に使えるのが良いんだよ。
嫌ならそんなロジックにしなければ問題ない。
0924カポンコ04/07/14 18:15ID:???
どうしたどうした!
質問は無いのかー!!
0925nobodyさん04/07/14 18:18ID:???
pearってどう? 安定した?
0926nobodyさん04/07/14 18:20ID:???
PHP5.0.0がリリースされたのになんで誰も騒いでないの?
0927nobodyさん04/07/14 18:22ID:???
人柱の体験談待ち
0928nobodyさん04/07/14 18:27ID:???
*.0.0っていうバージョンは実用するにゃ怖いわなぁ
0929nobodyさん04/07/14 18:43ID:???
PHP5ってPHP-ファイブって言えばいいの?
0930nobodyさん04/07/14 18:48ID:VoMOFkAb
掲示板のスクリプトで、入力フォーム<textarea>の表示部分で、レスの引用なんだけど

>あいうえお
>かきくけこ

って表示させて、実際にログに記録するときは

<blockquote>あいうえお<br />かきくけこ</blockquote>新規入力文章ほにゃらら

とさせるのは無理矢理なんとか出来るのですが、

>>あいうえお
>>かきくけこ
>新規入力文章ほにゃらら

と引用部分が、どんどん入れ子状態になると出来ません。
なにか良いアイデアないでしょうか?
0931nobodyさん04/07/14 18:52ID:???
1行ずつ>を入れてやりゃいいじゃん
0932nobodyさん04/07/14 18:54ID:???
>>930
ログに保存する時は

>>あいうえお
>>かきくけこ
>新規入力文章ほにゃらら

のままにして、htmlに展開する時に行頭の>を頼りに、
タグをくっつけていくのが賢いと思います。
0933nobodyさん04/07/14 18:55ID:???
>
0934nobodyさん04/07/14 18:59ID:0gUuBq5C
>>930
スタイルシート使えば?
0935nobodyさん04/07/14 19:01ID:???
PHP5が使えるレンタル鯖を俺にだけこっそり教えれ
0936nobodyさん04/07/14 19:19ID:???
>>935
自分で立てた方が早いと思う
0937nobodyさん04/07/14 19:22ID:???
そんなにPHP5って魅力あるか?
0938nobodyさん04/07/14 20:29ID:???
そんなにないね。しばらく様子見
そんなことより4.3.8が
093993004/07/14 22:01ID:???
>>932
アドバイスの通り、ログ保存は
>>>第一の引用>>>改行で続く>>第二の引用>第一の引用>改行で続く
みないな書式で、表示時に
<blockquote>
 <blockquote>
  <blockquote>
   第一の引用<br />
   改行で続く
  </blockquote>
  第二の引用
 </blockquote>
 第一の引用<br />
 改行で続く
</blockquote>
としようとしたのですが、どうしても</blockquote>で閉じることが出来ません orz
0940nobodyさん04/07/14 23:06ID:???
>>939
どういうアルゴリズムでやってるのか分からんけど、
再帰を使ってみてはどうか?
094193004/07/15 01:52ID:???
これでなんとか出来ました。凄く簡単な事でした。スレ汚しすいません。
$value = "> > > てすと\n> > > 開業ですわ\n> > 2段目\n> 1段目";
$value_array = explode("\n",$value);
$flag = 0;
foreach($value_array as $value_line){
 if(preg_match_all("/> /m",$value_line,$match)){
  $match_num = count($match[0]);
  if($flag == 0){
   $line = substr($value_line,$match_num*2);
   for($i=0;$i<$match_num;$i++){
    $msg .= "<blockquote>";
   }
   $msg .= $line;
   $flag = 1;
   $match_num_oya = $match_num;
  }elseif($flag == 1 && $match_num == $match_num_oya){
   $line = substr($value_line,$match_num*2);
   $msg .= "<br>" . $line;
  }elseif($flag == 1 && $match_num < $match_num_oya){
   $line = substr($value_line,$match_num*2);
   $msg .= "</blockquote>" . $line;
   $match_num_oya = $match_num;
  }
 }
}
$msg .= "</blockquote>";
0942nobodyさん04/07/15 05:11ID:???
コード読んでないけどとりあえず無駄なことしてるってのは伝わったよ
0943nobodyさん04/07/15 07:37ID:???
うごけば
0944nobodyさん04/07/15 09:02ID:???
PHP5は面白そうだが。デストラクタ搭載とかありがたいな。
0945nobodyさん04/07/15 10:01ID:???
使う前から文句言ってる奴って救えない
使ってから文句イエーイ
0946 ◆.jC7ANgFY. 04/07/15 10:14ID:???
>>941
私のもはりつけてみましょっかね。
昨日はろうとしたらアク禁でorz
0947nobodyさん04/07/15 10:20ID:???
php5のrpm作ってみたのですがインストールしようとすると、
php4が邪魔だぁ!!と文句を言われます;;
共存させる事は出来ないのでしょうか?
0948 ◆.jC7ANgFY. 04/07/15 10:32ID:???
改行を消したり入れたりして見やすいように変更してください。

$value = ">>> てすと\n>>> 開業ですわ\n>> 2段目\n> 1段目";
echo block_quote($value);

function block_quote($v) { bq_match(); $v =
preg_replace_callback('/^(>*)(.*)$/m', 'bq_match', $v);
return str_replace("\n", '<br>', $v . bq_match()); }
function bq_match($m = false) { static $i; $i2 = $i;
return str_repeat('<' . (0 < ($i = strlen($m[1])) -
$i2 ? '' : '/') . 'blockquote>', abs($i - $i2)) . $m[2]; }
094993004/07/15 14:27ID:???
>>948
ありがとうございます。
これを使って、さらに勉強しようと思います。
ぱっと見、全然理解出来てないですがorz
0950nobodyさん04/07/15 15:05ID:???
PHP 4.1.1 から 4.3.8 にアップデートしたら
pg_connect が動作しなくなった
マニュアル見たら 引数が変ってる

なんてこったい _| ̄|○
0951nobodyさん04/07/15 15:15ID:???
DBのラッパークラスみたいなので管理してたらそんな変更は屁みたいなもんでそ。
0952nobodyさん04/07/15 15:18ID:???
なにー?
4.3.8または5.0.0にバージョンアップするかmemory_limit機能を無効にしろだと?
うちは4.2系だから辛いなぁ・・・
ここは漢らしく一発memory_limit OFFでいくか?
誰か俺もmemory_limitで対処するぜっという仲間はいない?←と同志を募るあたり女々しい
0953nobodyさん04/07/15 17:08ID:???
>>951
DB関係の変更だけで済むのならいいんだが、順次対処していって、どつぼにはまるのは嫌嫌嫌嫌

>>952
> うちは4.2系だから辛いなぁ・・・
4.1系のおいらは もっと辛い
> ここは漢らしく一発memory_limit OFFでいくか?
うーむ・・・
0954nobodyさん04/07/15 17:17ID:IpnLix62
バージョンうpって普通に上書きするだけでいいんだっけ?
ちなみにPHPバージョンは4.3.7
削除してインストールし直さなきゃならないなら5.0.0にしようかな
0955nobodyさん04/07/15 17:53ID:At3KjVK/
>>954
make dist
make cleandist
した後に普通に上書きしていけば良いよ。
Linuxの話だが。
0956nobodyさん04/07/15 17:57ID:IpnLix62
>>955
すいません
Windowsの話でした_| ̄|○
0957nobodyさん04/07/15 18:51ID:???
>>956
windowsバイナリなら漏れはいつも上書きしてる
今まで問題起こったこと無いから多分大丈夫だ
ってか、削除後に上書きでも対して面倒じゃない気がするが
0958nobodyさん04/07/15 19:19ID:IpnLix62
>>957
d!
アパッチのサーバーモニターのバージョン表示では4.3.8になってるけど…
<?php phpinfo(); ?>で表示した画面のバージョンはまだ4.3.7…
う〜ん…アパッチでは4.3.8と認識してるからこのままでいいのかな
0959nobodyさん04/07/15 19:21ID:???
つーか鯖アプリ入れ替えの際にOSを再インストールすれば調子よくなるのがWindowsの特徴だな
0960カポ04/07/15 19:52ID:???
net stop apache
net start apache

コレで十分だろ
0961nobodyさん04/07/15 19:55ID:IpnLix62
>>960
もちろんやりましたよ…
っていうか上書きはサーバーストップしないとできなかったですし
0962nobodyさん04/07/15 20:57ID:+fR0HFAV
画像ファイルをアップロードする前に一度
プレビュー画面を表示させたいのですが
どうすればよいのでしょうか?
0963nobodyさん04/07/15 21:03ID:???
>>962
どう考えてもムリだろ
サーバにアップロードされなくてはPHPから手の出しようがない
どうしてもというならJavaか何かでクライアントサイド処理の話で板違い
0964nobodyさん04/07/15 22:20ID:???
PHPで独自ドメイン検索窓ってどうやってできますか?
checkdnsrrですかね?
使い方おしえてください
よろしくおねがいします
0965nobodyさん04/07/15 22:29ID:???
「"独自ドメイン検索窓"に該当するページが見つかりませんでした」 _| ̄|○
ちょっと待ってね、考えてみる。
096696404/07/15 22:33ID:???
>>965
ありがとうですっ
0967nobodyさん04/07/15 22:37ID:???
「"独自ドメイン" "サイト内検索" checkdnsrrに該当するページが見つかりませんでした。」 _ト ̄|○
ごめんね。頑張ってはみたの。
0968nobodyさん04/07/15 22:38ID:fzsAP17J
>>962
Javascriptがあんだろうが!
096996404/07/15 22:42ID:???
そうですか・・・
無理ですかね^^;;
0970nobodyさん04/07/15 23:06ID:dhGDtDFU
preg_match関数を使って日本語の検索を行うと
ー ←これがあるとエラーになるんです。
UTF-8でエンコーディングをしても駄目です。
知恵をお貸し下さいます様お願い致します。
0971nobodyさん04/07/15 23:32ID:???
−これにしとけ
0972nobodyさん04/07/15 23:35ID:dhGDtDFU
>>971さん
自動リンク集の様な物を作っててキーワード検索で入力した時にエラーになるのです。
それは登録の際にーを−に変換し
検索時も−に変換すれば?って事でしょうか?
0973nobodyさん04/07/15 23:52ID:???
たちまちアン

文字コードは何使ってん? 状況よろ。
0974 ◆.jC7ANgFY. 04/07/15 23:55ID:???
preg_quoteを使いましょう。
0975nobodyさん04/07/15 23:56ID:dhGDtDFU
>>973
内部の文字コードはEUC-JPです。
0976nobodyさん04/07/16 00:13ID:???
>>975
ととおるが・・・ 
$string= "キッコーマン";
if(preg_match("/コーマン/",$string)){
echo $string;
}//こういうことじゃない?詳しく状況キボンヌ 
0977nobodyさん04/07/16 00:24ID:???
>>974さん
有難う御座います。今から調べて試してみます。
>>976さん
$data = file($logfile);
foreach($data as $val){
list(123) = explode("<>",$val);
if(preg_match("/$word/",$val){
$flag=1;
}
}
こんな感じです。php_iniの設定が何か間違ってるのでしょうか…
0978nobodyさん04/07/16 00:27ID:???
>>958
古いphp4ts.dllが読み込まれてねぇか?
ちゃんと新しいので置換したか。
0979nobodyさん04/07/16 00:35ID:???
--enable-memory-limitで作成されているPHPに対してデータをPOSTするだけで、
任意のコードを実行できる脆弱性が発見された模様。 PHP実行プロセスのメモリ使用量を制限する
memory_limit機能のバグをついたものだ。対象となるPHPのバージョンは

4.3.7以前のすべてのバージョン
5.0.0RC3以前のすべてのバージョン
0980nobodyさん04/07/16 00:35ID:???
スクリプトの中で、「ユーザーから送られてきた情報によって、ある条件が満ちると
処理が増える上、一気に複数の情報をDBに出し入れ、削除する」って部分があるんですが
(ちなみに、そのユーザーには直接関係ない処理ばかり)
こういう処理中ってユーザー側の行動(ブラウザ閉じたり)で
データに破損があったりするんですか?

ないと思ってたんですが…system関数調べてたらよく分からなくなってきちゃって……
アホな質問ですいません。
0981nobodyさん04/07/16 00:38ID:???
$word = "コーマン";
$data = array("ヤッターマン","キッコーマン","仮面ライダー");
foreach($data as $val){
if(preg_match("/$word/",$val)){
echo $val;
}
}

php_iniの設定は関係なく 
保存されてるファイルの文字コードが違ってたりは? んーなんでかねー。
0982nobodyさん04/07/16 00:47ID:???
list(123) = explode("<>",$val);

この部分ってどういう意味なんだろう? んー。
0983nobodyさん04/07/16 00:49ID:???
Warning: Compilation failed: missing terminating ] for character class at offset 8 in C:\www\home\99.php on line 5
こんなエラーになります。

(123) = explode("<>",$val);は特に意味がないです。通常のデータが入ってる配列です。

0984nobodyさん04/07/16 00:56ID:???
if(preg_match("/$word/",$val){
)が足りないとか・・・
0985nobodyさん04/07/16 00:57ID:???
んなー。
0986nobodyさん04/07/16 00:58ID:???
$word = "コーマン";
$data = array("ヤッターマン<>53才","キッコーマン<>17才","仮面ライダー<>56才");
foreach($data as $val){
$list = explode("<>",$val);
if(preg_match("/$word/",$list[0])){
echo $list[0]."は".$list[1];
}
}//んー。
0987nobodyさん04/07/16 01:05ID:???
何故でしょうか。
>>986さんのソースのまんまでもエラーです。
Warning: Compilation failed: missing terminating ] for character class at offset 8 in C:\www\home\99.php on line 6
0988nobodyさん04/07/16 01:13ID:???
php_ini関係ないって言ったけど、
mbstringだか、設定やったかい?     残念、これくらい。
0989nobodyさん04/07/16 01:14ID:???
>>987
そりゃあんさんSJISになってまっせ
0990nobodyさん04/07/16 01:16ID:???
ところであんさん990でっせ
0991nobodyさん04/07/16 01:18ID:???
>>988 >>989
大至急確認してみますです。
こんな夜中に有難う御座いますです。
986さんは優しい人ですね。本当に有難うです。
0992 ◆.jC7ANgFY. 04/07/16 01:24ID:???
$word = preg_quote("コーマン");
$data = array("ヤッターマン<>53才","キッコーマン<>17才","仮面ライダー<>56才");
foreach($data as $val){
$list = explode("<>",$val);
if(preg_match("/$word/",$list[0])){
echo $list[0]."は".$list[1];
}
}//
0993nobodyさん04/07/16 01:34ID:AqvvA+DF
>>922の◆.jC7ANgFY. さん…
出来ました!! 本当に有難う御座いました!
もっともっと勉強します。
優しい人ばかりで今日はとても嬉しいです 涙
0994nobodyさん04/07/16 02:48ID:KvHeypq/
sendmailの.forwardでPHPのスクリプトに渡しているんですが
librariesが無いと返されます
PHPのバージョンは4.3.8です

configure
./configure --with-pgsql --with-apxs2=/usr/local/apache2/bin/apxs
--enable-versioning --enable-mbstring --enable-mbstr-enc-trans
--with-zlib --with-gd --without-mysql --with-openssl
--with-curl --with-curlwrappers --enable-bcmath
--with-jpeg-dir=/usr/local
.forwardの中身
"| /usr/local/bin/php /home/script/test.php"

------------------エラーメール-------------------------
The original message was received at Fri, 16 Jul 2004 02:20:40 +0900
from *****

----- The following addresses had permanent fatal errors -----
"| /usr/local/bin/php /home/script/test.php"
(reason: 127)
(expanded from: <test@test.com>)

----- Transcript of session follows -----
/usr/local/bin/php: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
554 5.3.0 unknown mailer error 127
-------------------------------------------------------
もう何がなにやらワケワカメ
どなたかヘルプミーorz
0995nobodyさん04/07/16 05:02ID:???
"| /home/script/test.php"

これでもだめ?
099699404/07/16 06:41ID:KvHeypq/
スクリプトの先端に
#!/usr/local/bin/php
と付けてもメールを送ってもダメです
コマンドラインではちゃんと動くんですが・・・
------------------エラーメール-------------------------
The original message was received at Fri, 16 Jul 2004 02:20:40 +0900
from *****

----- The following addresses had permanent fatal errors -----
"| /home/script/test.php"
(reason: 127)
(expanded from: <test@test.com>)

----- Transcript of session follows -----
/usr/local/bin/php: error while loading shared libraries: cannot open shared object file: cannot load shared object file: No such file or directory
554 5.3.0 unknown mailer error 127
-------------------------------------------------------
環境はLinuxです
0997nobodyさん04/07/16 06:51ID:G5BXIcyS
掲示板作成にて
>>995 このようなレス番号にカーソルを合わせると過去レスの書き込みが見えるような機能を搭載したいと考えております。
(2chブラウザなどによくある奴)

">num" このような文字列を取得し <P title="<?php print("説明文"); ?>">文字</P>
このように置換するのがもっとも適当かと考えているのですが 

">num" この数字部分の取得ってどうすればいいのでしょうか?
たとえば ”>” のあとが文字列だった場合や数字の桁数が上がっていった場合などの対処法が考えつきません。
「ここからここまでの文字列は数字です」的な判別をさせるにはどのようにすればいいのでしょうか?
099899404/07/16 07:03ID:KvHeypq/
>997
preg_replace_callbackを使うと楽に置換出来ると思いますよ

preg_replace_callback('/>([0-9]+)/','henkan',$body);

function henkan($str) {
$int = $str[1];
//--取得された数字で処理
return $int;
}

http://www.zend.co.jp/products/studio/ZendInformationCenter/php_manual/php_function_refrence/function.preg-replace-callback.html
099999404/07/16 07:14ID:???
もう少しで1000ですので新スレ立てました
新スレでお願いしますorz
【PHP】質問スレッドpart19【php】
http://pc5.2ch.net/test/read.cgi/php/1089929550/
1000tks04/07/16 07:24ID:???
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。