【PHP】質問スレッドpart23【php】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
04/10/05 17:36:38ID:???・新規質問の方は上げてください。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
0831nobodyさん
04/10/28 07:25:46ID:???http://pc5.2ch.net/test/read.cgi/db/1096838301/178
条件の下、別の配列に格納しようとします。
例えば、Fileから読み込み格納した配列が
(A,B,5,D,1,A,B,A,B,10,23,A,40,A,B,C)
と並んでるとします。
この中から
DATA(10,23,40)を別に取り出したい(数字10以降から表れるn=3個の数字)
時は、どう考えたら良いのでしょうか。
0834nobodyさん
04/10/28 18:31:34ID:???(A,B,5,D,1,A,B,A,B,10,23,A,40,A,B,C)
と並んでる配列の中から数字10以降から表れる3個の数字を
別に取り出せばいいんじゃないかな?
つか何を悩んでいるのかさっぱり判らん。
0835nobodyさん
04/10/28 18:58:57ID:???太郎
花子
太郎
次郎
三郎
太郎
・・・
のようになっているとして、「太郎」を含む行だけを消したいです。(消したところは詰める)
fopen("log.log","w+")で開いて、forを用いpreg_matchで該当するモノを「""」に置き換えて消しては
fwriteでlog.logに書き込むという方法を使っていますが、ログが何メガとでかくなっていると
なんとなくデータが吹っ飛びそうで怖いです。
安全に、速く消していける組み方ってどんなもんでしょうか?
0836835
04/10/28 19:03:17ID:???$list=file("log.log");
$logfile = fopen("log.log","w+");
flock($logfile,LOCK_EX);
for ($i=0;$i<count($list);$i++) {
if(preg_match("/太郎/",$list[$i])) {$list[$i]="";}
fwrite($logfile,$list[$i]);
}
fclose($logfile);
0837nobodyさん
04/10/28 19:17:48ID:???から
flock($logfile,LOCK_EX);
の間で書き込みがあったら壊れるな
0838nobodyさん
04/10/28 19:28:04ID:???テンポラリファイルでやれば途中で止まっても大丈夫。
$fpt = fopen('tmp', 'w');
$fp = fopen('log.log', 'r');
flock($fp, LOCK_EX);
while($buf = fgets($fp, 1024)){
if(!preg_match("/太郎/", $buf)) {
fwrite($fpt, $buf);
}
}
fclose($fp);
fclose($fpt);
copy('tmp', 'log.log');
0839nobodyさん
04/10/28 20:19:32ID:???$Test="_POST";
$$Testと指定して$_POSTにしformの中身を持ってきてるんですが
$$Testのなかみを無理やり、
$$Test="abc";
echo("$$Test");
としてもechoの結果Arrayとでて中身が表示されんです
"abc"を$$Testと関連付けするためにはどうしたらええんでしょうか?
0840nobodyさん
04/10/28 21:55:43ID:???mb_convert_encodingが使えませんorz
どこか設定ファイルを書き換えれば使えるんでしょうか。。
0841nobodyさん
04/10/28 22:18:32ID:???http://www.php.net/manual/ja/ref.mbstring.php
0842nobodyさん
04/10/28 22:19:23ID:???設定ファイルの中に書いてあるよ。
mbstring や mb_ で php.iniやphp.ini-distの中を探してみる。
さらにマニュアルのマルチバイト文字列関数のところを熟読すると、
先々でつまらないミスをしなくて済む。
0845nobodyさん
04/10/28 23:46:09ID:kVaGnhG6ちょっと自分ではどうしようもないので質問させて頂きます。
index.phpがあり、その中から、http://host.dom/print.cgiを呼び出し、且つ
その表示結果を変数に入れたいのですが、可能でしょうか?
アドバイスでも何でも結構ですので、頂ければうれしいです。
一応こういう風にすればできる。
$var = file_get_contents('http://host.dom/print.cgi');
$Arrayと出ていませんか?ちゃんと細かく出力結果は書くべきですよ。
それはさておき、これは(${$Test})として変換されたのではなく('$' . $Test)
として変換されたからこうなったのです。代入はうまくいきます。
最後の出力行をecho $$Test;又はecho "${$Test}";に変えてみてください。
チェックしてないけどこれもいけるかも。
$fn = fopen('log.log', 'r+');
if (flock($fn, LOCK_EX)) {
$fn2 = fopen('log.log', 'r+');
while ($buf = fgets($fn, 4096))
if (strpos($buf, '太郎') === false) fwrite($fn2, $buf);
}
ftruncate($fn2, ftell($fn2));
fclose($fn2); fclose($fn);
テンポラリファイルを固定してしまうならばテンポラリファイル
にもロックかけたほうがいいかも。whileループ中に多重起動した
らテンポラリファイルが消えるし追加もよくわからなくなる。
>>849
ftruncateはifブロックの中入れるべきだった…
ほかは大丈夫。な、はず。たぶん、
0851843
04/10/29 01:10:07ID:???>>848
cgi-binのperlスクリプト用datファイルはshift-jisで、ホームディレクトリ側のphpファイルはUTF-8なんで困ってました。
幸い鯖の方はmbに対応してたんですけど、やはりローカルでも同じコードで確認できないと。。
jcode.phpとかではどうもうまくいかなかった・・・。
0853845
04/10/29 07:13:25ID:???おはようございます。
お返事遅くなってしまって失礼致しました。
上記関数で、無事値を取ることが出来ました。どうもありがとうございました。
file_get_contents()なんてあるんですね。とても勉強になりました!
0854800
04/10/29 09:54:59ID:???言われた通りunixODBCとFreeTDSとlibiconvをインストールしました。
いざPHPでodbc_connectを使用してみようとすると、
Fatal error : Call undefines function: odbc_connect() .....
と言われてしまい動きません。
odbc関数を使用するにあたってPHP側の設定でしなければいけないことはなにがあるんでしょうか?
是非お願いします
0855nobodyさん
04/10/29 11:20:26ID:fJt1IS4+これ読んだうえでの質問か?
http://jp.php.net/manual/ja/ref.odbc.php
0856800
04/10/29 12:41:08ID:???結局Linux + PHPからWindows + SQL Serverにはアクセスできないんでしょうか?
0859800
04/10/29 13:18:23ID:???本当に困っているので教えていただきたいのですが・・・。
0860nobodyさん
04/10/29 14:08:41ID:???./configure --with-out=mysql --with-mysqli=/path/to/mysql_config
としても有効になりません。
ちなみにPHP5.0.2ではうまくいきました。
PHPのマニュアルを読むと、
http://www.php.net/manual/ja/ref.mysqli.php
> mysqli拡張サポートはMySQL 4.1.2以上で動作するよう設計されています。
と、書いてあるだけで、PHPに関しては特に何も書かれていないのですが…。
PHP4.xで利用する方法はあるでしょうか?
環境:FedoraCore2+MySQL 4.1.7+PHP4.3.9
0861860
04/10/29 14:13:15ID:???0862nobodyさん
04/10/29 14:19:17ID:???釣り?
一応マジレス。
without-mysqlしちゃうとmysql無効になるので、
mysql使いたいならwith-mysqlにしなければならない。
詳しくは、./configure --help|grep "mysql"
マニュアルよく読め。
0863862
04/10/29 14:21:12ID:???>862は無かったことにしておいて下さい。
0865nobodyさん
04/10/29 14:41:30ID:???よろしくおねがいします。
0866nobodyさん
04/10/29 14:47:53ID:???http://jp2.php.net/manual/ja/function.mt-rand.php
一番下まで読め。
一般にはMD5を使うことになるのかな
関数「md5」の欄参考
0868nobodyさん
04/10/29 14:56:23ID:???RHL9+PHP4.3.8でMySQL付属(PHPのバンドルではない)の
新旧クライアントライブラリ使ってmysql/mysqli両方とも使ってるけどな。
マニュアルの説明に従っただけで特に何もして無いよ。
実験段階の頃のmysqliとそのころのPHPでも問題はなかった
(多少の問題はあったが、動いていたということ)
0869868
04/10/29 15:01:40ID:???多分実験段階で動かしてたのもPHP5のalphaとか正式版以前のものだわ。
処刑決定・・・
0871860
04/10/29 15:08:15ID:???こやつめ…ハハハ…(AA略
>>867
32文字固定になってしまうので、>>886に載ってるサンプルがよろしいかと。
>>868-869
おお!と思ったのもつかの間、やっぱりだめでしたか。
何が原因ですかねぇ。
0872nobodyさん
04/10/29 15:12:20ID:???0873868
04/10/29 15:18:45ID:???原因というか、
http://www.php.net/manual/ja/function.mysqli-connect.php
のようにmysqliのメソッドの記述のあたりをみても、
PHPの対応バージョンがPHP5となってることから使えないと思う。
だからPHP4で使った/使えた記憶が微かにあるのだが、これは完全に思い違いと思われる。
#PHP4/5もMySQLもApacheも、インストールしてる奴が微妙に1つ前のばっかりだ..orz
0874865
04/10/29 15:25:38ID:???2〜3行で簡単に作れますかね?
0875860
04/10/29 15:26:59ID:???ああなるほどw
まだ、使う前なのでそこまで見ていなかった。
どうせなら、導入部分に書いといてくれたらいいのにね。
対応していないということがはっきりしたのですっきりしました。
どうもありがとう。
0877865
04/10/29 15:45:31ID:???0878nobodyさん
04/10/29 16:03:21ID:???$rand = base64_encode($test);
echo $test;
OK?
$rand = mt_rand(100000,999999);
$rand = base64_encode($test);
//echo $test;
encode($test)って一体・・・orz
0882nobodyさん
04/10/29 16:19:39ID:???$hoge = md5(uniqid(rand(),1));
0883nobodyさん
04/10/29 22:09:16ID:???フォームの値が”みかん、りんご、ばなな”として
それを変数”fruit”に代入します。perlだと
@fruit=("みかん,りんご,ばなな");
print "$fruite";
としたら結果表示が「みかんばななりんご」
と出来たと思うのですが、PHPのやり方がよくわかりません。。
0884nobodyさん
04/10/29 22:17:23ID:???何をやりたいのかいまいちよくわからんが、
$arr = array("みかん","りんご","ばなな");
print join("", $arr);
ってことか?
0885883
04/10/29 22:20:38ID:???はい、そういう事なのですが、出力結果は「Array」とだけ表示されてしまいます。
下記のように記述しているのですが。。(フォームの値を取得しています。)
<?
$fruit = array('$fruit01','$fruit02','$fruit03');
print ($fruit);
?>
0888883
04/10/29 22:28:56ID:???すみません、質問自体が馬鹿でした・・。
要はこういう事です。
■フォームのチェックボックスより選択
・好きな果物は?
みかん($fruit01)りんご($fruit02)ばなな($fruit03)
「確認ボタン」をクリックすると確認画面が現れて下記のように表示されている
好きな果物:(チェックした果物名が表示されている )
上記のような事がしたかったので、果物名を$fruitに代入して
その中身を表示する記述がしたかったのです。
0889nobodyさん
04/10/29 23:18:08ID:???Perlでまともな物をかける人間なら、マニュアル読めば絶対理解できる。
保障する。
0890nobodyさん
04/10/29 23:28:05ID:???っていう質問いい加減ウザイ
周りがPHPだから自分も移行ってか?さっさと氏ね
0892nobodyさん
04/10/29 23:58:10ID:???俺は他言語に移るときは必ず本買うけどなぁ。
0893nobodyさん
04/10/30 00:01:53ID:???プログラム自体初めてだったら参考書も必要だろうけどね。
0894nobodyさん
04/10/30 00:05:04ID:???0895nobodyさん
04/10/30 00:18:34ID:???そういう馬鹿は質問すんな。リストラされて引きこもってろ。
0896nobodyさん
04/10/30 01:33:39ID:???imagepng($image);
こう書いたんですが、
臼NG
としか表示されないんですがどうしてでしょうか?
鯖はXREAで、GDライブラリも最新版のものが入っていたはずです。
0900nobodyさん
04/10/30 07:07:04ID:???あーあ、マニュアルチェックしてから書けばよかったのに・・・
http://www.php.net/manual/ja/function.join.php
> join() は implode() の 別名で、実体はまったく同じものです。
0901nobodyさん
04/10/30 07:49:34ID:???ココを嫁!
http://www.pahoo.org/e-soul/webtech/phpgd/phpgd-02-02.shtm
0903nobodyさん
04/10/30 09:32:45ID:???でもjoinならperlに全く同名でほぼ同じ働きの関数があるから、
perlからの移行組なら簡単に理解するんじゃないかと
884や886は思ったんじゃないか?
でもその意図は元質問者には理解されなかったようだけど・・・
0904nobodyさん
04/10/30 10:24:48ID:eL+7QS/f今PHPでのディレクトリ操作等について勉強中なのですが、
年別フォルダを作成し(今年ならば2004)
フォームに内容等を書き込み日付_101(1030_101,1030_102)というようなファイルを作成して、
そのファイルに変数として内容格納し,それをインクルードさせて一覧表示する。
といったようなプログラムを作成中です。
ディレクトリ、ファイルの作成、変数の書き込みはうまく行ったのですが最新のファイル順に読み込んで表示させるといった部分で詰まってしまいました。
良い方法がないもんでしょうか・・・
0905nobodyさん
04/10/30 11:03:48ID:???自慢げにまぬあるのURL晒されてもな・・
0907nobodyさん
04/10/30 12:36:52ID:???0908nobodyさん
04/10/30 12:37:47ID:X9SzlMJ/↑の掲示板をサーバー設定EUC環境で設置したいのですが、
具体的にどこをいじればいいでしょうか?
何もしない状態でFFFTPでアップすると書き込んで更新するときに文字化け+
エラーが出ます。
サクラエディタですべてのファイルを、charset="Shit_JIS"を全てcharset="EUC-JP"に変更 且つ
EUCコードで保存してアップすると真っ白の画面が出てくるだけですo(-_-;*) ウゥム…
どうすればいいでしょうかil|l|_| ̄|○|l|li
0910nobodyさん
04/10/30 12:54:48ID:???どこがどう文字化けしてんだよ。
もっと具体的に書け
0911nobodyさん
04/10/30 12:58:41ID:???廃止予定の関数でもあるまいに。
0913nobodyさん
04/10/30 13:15:03ID:X9SzlMJ/<何もしない状態でFFFTPでアップすると書き込んで更新するときに文字化け+
<エラーが出ます。
・管理メニューの設定変更という画面で設定更新というボタンをクリックして更新
しようとすると漢字平仮名がすべて半角カタカナ、点などに文字化けします。
(アップして何もしない状態では文字化けは発生していません。早い話更新をするとすべてが文字化けします)
・書込みが可能な画面で書込みをしようとするとERROR:ユーザー設定が消失しています!
というエラーが発生し、書き込もうとした内容がすべて文字化けしています。
0914nobodyさん
04/10/30 13:16:48ID:X9SzlMJ/ほかに設置した掲示板は
>サクラエディタですべてのファイルを、charset="Shit_JIS"を全てcharset="EUC-JP"に変更 且つ
>EUCコードで保存
のみで正常に作動しますた( ゚∀゚)
0915nobodyさん
04/10/30 13:32:07ID:???0916nobodyさん
04/10/30 13:34:16ID:???それはおかしな話だな。
grep -r sjis *を掛けると mb_convert_kanaが見つかったのだが。
地道に全部のファイルに目を通して修正していくのが良かろう。
0917nobodyさん
04/10/30 14:45:39ID:???>>901
どもありがとう。
ということで
header("Content-type: image/png");
$img = imagecreatefrompng("./puyo/w_01.png");
imagepng($img);
imagedestroy($img);
こう書いてみたんですが、やはり同じエラーになってしまいます。
何か他に原因があるのでしょうか?
0918nobodyさん
04/10/30 15:00:15ID:c8pJE3eDあるクラス内で使いたい関数が他のクラス内にある関数と全く同じものだった場合、
そこから呼び出してきたほうがいいのでしょうか?
これはオブジェクト指向の考え方とすこし違うような気もするし、
呼び出した場合もコードが長くなって、なんだかな・・・といった感じです。
どのようにするのが最善な方法でしょうか?
0919nobodyさん
04/10/30 15:01:39ID:c8pJE3eDは、
>呼び出さない場合もコードが長くなって、なんだかな・・・といった感じです。
でした、すみません。
0920nobodyさん
04/10/30 15:31:54ID:X9SzlMJ/頑張ってみます
0922nobodyさん
04/10/30 17:06:57ID:KmTYtaw8apache_module じゃなくて。
javaだとserlvetで言うところのapplicationContextに常駐キャッシュ置いたりして使えるような。
0923nobodyさん
04/10/30 17:14:54ID:c8pJE3eD返信ありがとうございます。
あれから、調べてみたのですが、
さっきの二つのクラスに基底クラス(抽象クラス)を作り、
継承させればいいということでしょうか?
(的外れだったら申し訳ありません。)
0924899
04/10/30 18:01:12ID:???PHPは関数名がコロコロと変わる
例
set_socket_timeout()
↓
socket_set_timeout()
↓
stream_set_timeout()
急に互換性なくなったかと思えばPHP5になっても残ってたり。
だから、エイリアスより本命の関数を使えと言いたかったのが一つ。
んで、注意しなければいけないのが、split()とexplode()は意味が違う事。
俺はPHPではsplit()を使う事はまずなく、動作速度も速いpreg_split()を使う。
だから、implode()⇔explode()の対で覚えた方が良いというのが一つ。
正規表現が必要な時のみpreg_split()を使うと覚える。
とまぁ>>899の2行からこの程度の事は汲み取って欲しいわけだが、お前らには無理ですか?
0925899
04/10/30 18:10:11ID:???質問の際は名前の部分に元質問の番号を書いておいてくれると見やすい。
XREA使ってるそうだけど、広告が自動挿入される無料鯖では?
0926896
04/10/30 18:24:04ID:???0927896
04/10/30 18:28:06ID:???どうもご迷惑をおかけしました<(_ _)>
0928nobodyさん
04/10/30 19:25:45ID:???ログファイルに記事を書き込ませて、それを管理側が読むって形はまずいでしょうか?
簡単に第三者に覗かれちゃいますか?
0929nobodyさん
04/10/30 19:43:31ID:???PHP関係ないよ
レス数が900を超えています。1000を超えると表示できなくなるよ。