【PHP】下らねぇ質問はここに書き込みやがれ 31
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/25(水) 08:45:46ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
【前スレ】
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0443438
2006/10/30(月) 06:28:56ID:???0444441のソースを元に
2006/10/30(月) 06:34:46ID:???if ($mode == $texta) {
include "file_text.inc";
} elseif {
#処理2
} elseif {
省略
ていうか最低限の勉強しないで聞くのは学校ぐらいにしておけクズ。
0445nobodyさん
2006/10/30(月) 06:39:21ID:???↑>>444のコードは自分でいじって動かしてみろ。
連想配列の勉強すればわかることだから入門書嫁ボンクラ。
0446438
2006/10/30(月) 06:40:13ID:CYbz73Go444のコ−ドだとtextxが増えた場合にelseifを自分で増やさなければならないのですが
0447nobodyさん
2006/10/30(月) 06:48:16ID:???0449nobodyさん
2006/10/30(月) 06:55:51ID:???連想配列をと変数と『.=』を使いこなせば解決します。
何でも聞くんじゃなくて自分なりにためしてみて、
それでも動かなかったらここにコードを書け。
だから質問もロクにできないグズなんだよおまえは
0450nobodyさん
2006/10/30(月) 06:57:10ID:???include "file_{$text}.inc";
とかってことじゃないの。
↑であってるならば、俺は最初から質問の意味理解できたけど。
0451450
2006/10/30(月) 06:59:50ID:???一気にレスついたから、全部自演に見える。
0452nobodyさん
2006/10/30(月) 07:02:42ID:???0453nobodyさん
2006/10/30(月) 08:55:23ID:???このスレさっきまで下の方にあったのに、すこし上にあがってる。
バグ?
0454nobodyさん
2006/10/30(月) 09:08:11ID:???その「さっき」っていう時点でスレ一覧をリロードしてなかっただけじゃね?
今のところ、ageられた時間的には
10/30(月) 06:40:13 【PHP】下らねぇ質問はここに書き込みやがれ 31
10/30(月) 03:38:12 IDにPerlが出たら神!PHPが出たらシメジ Part24
10/30(月) 03:37:15 金出すから改造してよvol.3
10/30(月) 02:44:37 SNS作ってみよう
10/30(月) 02:42:36 OpenPNE その4
10/30(月) 01:09:43 【質問】ASP.NETスレ Part3【議論】
って感じで、特におかしなとこはなさげ。
0455nobodyさん
2006/10/30(月) 09:31:47ID:???0456nobodyさん
2006/10/30(月) 11:25:37ID:Ji6bSWEi三項演算子で条件文を書いて、
現役PGの知り合いに見せたら使わないほうがいいと言われました。
理由は聞かなかったのですが、やはり見づらいからという理由なんでしょうか?
一応個人で使う分なので、別の理由かもしれませんが。
もしかしたらパフォーマンス面かな?と思ったので計測したいのですが、
計測の仕方がわかりません・・・
スクリプトの最初と最後でmicrotimeをとって、その差を求めればいいのでしょうか?
0457nobodyさん
2006/10/30(月) 11:30:15ID:???0459nobodyさん
2006/10/30(月) 11:48:44ID:???>>456
相手がプロなら、コーディング規約に沿った複数人プロジェクトもやってるはず。
となると、仕事柄見やすいソースを意識するんじゃないかと思う。
わざわざ見にくいソースを書く必要がないっていう考えでしょ。
個人で作ってると言っても、聞いてる相手に見せてるんだから、
見やすいソースを渡すべきだと思う。
ベンチマークはPEARのBenchmark
0460nobodyさん
2006/10/30(月) 11:52:31ID:???0461nobodyさん
2006/10/30(月) 12:04:41ID:bBR787Fl認証部分はPEAR::HTTP_Clientを使ってできました。
ですが、取得したHeaderから、ダウンロードしたいファイル名を取り出し、
ローカルに保存するやり方がわかりません。
よろしくお願いします。以下ソースとヘッダーです。
$target_url = "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/aiuro.php";
$client =& new HTTP_Client( $reqParams);
$client->post( $login_url, $login_params);
$client->get( $target_url);
$response = $client->currentResponse();
print_r( $response);
Array
(
[code] => 200
[headers] => Array
(
[date] => Mon, 30 Oct 2006 02:31:03 GMT
[server] => Apache
[cache-control] => private, max-age=10800, pre-check=10800
[last-modified] => Wed, 20 Sep 2006 01:47:25 GMT
[content-disposition] => attachment; filename=item_20061030-113103.csv
[connection] => close
[transfer-encoding] => chunked
[content-type] => application/octet-stream; name=item_20061030-113103.csv //このファイルを保存したい。
)
[body] =>
)
0463nobodyさん
2006/10/30(月) 12:54:50ID:???ていうか、「そんなもの知らない」って人も結構いるし。
とりあえずPHPは、どんなレベルの奴がかかわってくるかわからんので、
素人向けの一番簡単な入門書で紹介してるレベルの内容で書き換え可能なものは
原則的に素人向けの書き方しといたほうがいいんじゃないかって気がする。
経営的な言い方すると、PGのコストを最小にしてもトラブルが少ないように。
もちろん経営的に全然逆の考え方する人もいるだろうけど。
0464461
2006/10/30(月) 13:05:21ID:bBR787Flこのページは、通常のブラウザで見ると、
CSVファイルのダウンロードページなので、Bodyは無いのだと想います。
0465nobodyさん
2006/10/30(月) 13:07:43ID:???そもそもどういうのを三項演算子で書き直したんだ。
三項演算子は「条件で変わる代入式」をすっきり書くための演算子で
条件文を1行化するために用いるようなものじゃないよ?
意図の見えないコードは当然読みづらくなるし保守が難しくなるので
そういう意味で誤った使い方をしてるなら避けた方がいい。
ただ、それとは別にCに慣れない人や不勉強な人で
三項演算子を見慣れなくて敬遠してるだけの人も多い。
そういう人が触ることも考慮してコーディング規約なんかで
禁止してる会社も多々あるが、個人的にはどうかと思う。
なお、パフォーマンス的には何の問題もない。
0467461
2006/10/30(月) 13:31:25ID:bBR787Fl失礼しました。「ダウンロードページ」ではなくて、
「ファイルのダウンロード」です。
こういうの↓
http://players.music-eclub.com/download.php?sid=116561
0468nobodyさん
2006/10/30(月) 13:39:36ID:???うん。だからこの場合、BODYはファイルそのものになるはずでしょ。
Content-Lengthが返ってないせいで取得できてないのか?
0469nobodyさん
2006/10/30(月) 13:59:27ID:rTiz0489単に
if($_POST['checkbox']){
$checked = 'checked';
}else{
$checked = false;
}
ってだけなら、三項演算子で書いた方がすっきりするから
0470nobodyさん
2006/10/30(月) 14:11:46ID:mf7qX0dx本文に指定した文字列の最後に改行が2つ付いてしまうのですが、
これを回避する方法ってありますか?
0471nobodyさん
2006/10/30(月) 14:13:39ID:???見通しも悪いし、別にパフォーマンスに影響ないし。
「すっきりコンパクト=見通しが良い」ではないよ。
ソースってのはいわば設計図だからな。
シンプルすぎる設計図は、建物の詳細が見えにくい。
0472nobodyさん
2006/10/30(月) 14:19:36ID:???頑なにどちらかに固執する必要性を感じない。
>>467
そのリンクだったら普通に取得できるみたいだけど。
$client = new HTTP_Client;
$client->get('http://players.music-eclub.com/download.php?sid=116561');
$response = $client->currentResponse();
0473461
2006/10/30(月) 14:42:44ID:bBR787Flなるほど、そうなるんですか。どうもです!
>>472
環境の違いでしょうか…。
$client = new HTTP_Client;
$client->get('http://players.music-eclub.com/download.php?sid=116561');
$response = $client->currentResponse();
でも、bodyは空なんですよね〜。
0474nobodyさん
2006/10/30(月) 15:34:50ID:???俺のとこでは$response['body']に4MくらいのMP3のバイナリデータがばっちし入ってたけどな。
普通のHTMLとかは取得できるの?
0476nobodyさん
2006/10/30(月) 16:02:27ID:???0477461
2006/10/30(月) 16:23:10ID:bBR787Flありがとうございます!
自己解決しました。
HTTP_Clientをインストールしなおしたらいけました。
0478nobodyさん
2006/10/30(月) 17:50:21ID:???0479nobodyさん
2006/10/30(月) 17:53:16ID:???0480nobodyさん
2006/10/30(月) 18:19:15ID:???0481nobodyさん
2006/10/30(月) 18:26:40ID:???0483nobodyさん
2006/10/30(月) 20:51:02ID:bBR787Fl$target_url = "ターゲットURL";
$client =& new HTTP_Client( $reqParams);
$updata=array( "filename.csv", "filename.csv");
$client->post( $login_url, '', '', $updata);
Warning: Missing argument 2 for addfile() in /インクルードパス/HTTP/Request.php on line 525
何卒お願い申し上げます・・・・・
0484nobodyさん
2006/10/30(月) 21:01:53ID:???$updata = array(array("filename.csv", "filename.csv"));
じゃないだろうか
後1つ目の値はフォームのエレメント名
ソースチラ見で書いてるんで外してたらすまん
0485nobodyさん
2006/10/30(月) 21:45:19ID:???日別ログや週別ログ、月別ログとして管理画面から閲覧できるものがありますが、
そういうのはログファイルを日、週、月で別々に記録しているのでしょうか?
0486nobody
2006/10/30(月) 21:51:21ID:LQ50Lk3U文章中に含まれるカタカナの語句を全て抜き出し、コンマ区切りで別の
テキストファイルに書き出すということをしたいのですが、ちょっと
手詰まりな状態です。どうか、ご教授願えませんか?
0487nobodyさん
2006/10/30(月) 21:57:41ID:???AサーバのPHPスクリプトでBサーバに接続し、
Bサーバ上でシェルコマンドを打って、その結果をAサーバに
返す事は可能でしょうか。
例えば、AサーバのPHPで、ls -laというコマンドを、
Bサーバで打って、その結果をAサーバのPHPスクリプトで
表示させたいと思っています。
どなたかご助言お願い致します<(_ _)>
0488nobodyさん
2006/10/30(月) 22:02:12ID:???fopen
正規表現でカナの抜き出し→配列に保管
配列をファイルに書き込む
これでコードかいて動かなかったら質問しろ。
0489nobodyさん
2006/10/30(月) 22:03:12ID:???そりゃ作成者に聞かないとわからんが
たぶんログを表示するときに生データから欲しいログだけ抽出してんじゃないの?
>>486
今どこまでできてんの?
0491nobodyさん
2006/10/30(月) 22:10:28ID:???日毎のログがあれば集計して週のデータも月のデータも出せるでしょ
>>486
何で手詰まりなのか
>>487
Bでシェルから結果を受け取るスクリプトを置いて
AからBのそのスクリプトのURLをリクエストして
レスポンスを取得するようにすればいい
0492486
2006/10/30(月) 23:41:30ID:LQ50Lk3Uいまのところ、
$text=fopen("bunsyou.txt","r");
$text2=fread($text,filesize("bunsyou.txt"));
//echo "$text2<br>\n";
for($i=1; i<=10; i++){
if(eregi("[ア-ン]",$text2));
}
fclose($text);
こんな感じです。正規表現にマッチした語句の抜き出し方が、よく
わからないのでして。。。お教えいただければ、ありがたいです。
0493nobodyさん
2006/10/30(月) 23:44:13ID:???0494487
2006/10/30(月) 23:45:47ID:???レスありがとうございます<(_ _)>
> Bでシェルから結果を受け取るスクリプトを置いて
重ね重ね申し訳ありませんが、↑ってどういう風に
書けばいいのでしょうか。
関数名だけでもヒントを頂けないでしょうか。
0495nobodyさん
2006/10/30(月) 23:46:18ID:???0496nobodyさん
2006/10/30(月) 23:47:57ID:???> Bでシェルから結果を受け取るスクリプトを置いて
B.phpの$text="hello"をA.phpにて受け取るスクリプトを書ければわかりやすいだろう。
0497nobodyさん
2006/10/31(火) 00:06:18ID:???echo "$text<br>";
if(mb_ereg("[ア-ン]+[アーン]+", $text,$str)) {
echo $str;
}
あとは自分で調べろ、
0498483
2006/10/31(火) 00:07:20ID:lBCw+Epvおおお!ありがとうございます!
明日試してみます。
PEARのドキュメントってどうもサンプルスクリプトがなくて
使い方がいまいち分からんと思っているのはオレだけか?
0499nobodyさん
2006/10/31(火) 00:22:07ID:???http://jp.php.net/manual/ja/ref.exec.php
ここらへん
>>498
PEARはtestやexampleが入ってるからそれを見る、
あとはソース嫁が基本
0500498
2006/10/31(火) 00:48:55ID:lBCw+Epv出直してきます。
0502nobodyさん
2006/10/31(火) 01:05:43ID:6V2Mcmc8if文でチェックする場合、
クライアントのIPを取得して、それを何と比較したらいいのでしょうか?
コードは自力で書きますので、どなたかヒントだけご教授お願いいたします。
0503nobodyさん
2006/10/31(火) 01:12:04ID:???0504nobodyさん
2006/10/31(火) 03:42:11ID:???0507nobodyさん
2006/10/31(火) 07:32:48ID:???それだと半角カナが先に来ないといけないし全角はア、ー、ンの3文字だけ
[ア-ンア-ン]にしても半角のァィゥェォとか全角のァヴヵヶとかがマッチしない
$text ="あいうえおアイウァィゥェォガギグパピプヴァヶさしすせそ";
echo "$text<br>";
mb_regex_encoding("sjis");
if(mb_ereg("[ヲ-゚ァ-ヶ]+", $text,$str)) {
var_dump($str);
}
0508nobodyさん
2006/10/31(火) 07:42:01ID:???0509nobodyさん
2006/10/31(火) 08:04:06ID:5uTR2Worで配列に読み込んでprint_r($file)で確認すると、
インデックス0($file[0])には一行目が、インデックス1には2行目が・・(省略)格納されてしまいます。
自分がやりたいのは
$file[0][0]で一行目の一つ目のデータを見たいのですがうまくいきません。
どなたかご教授お願いいたします。
list.txtの中身
green,yellow,blue,red
black,red,white,orange
0510nobodyさん
2006/10/31(火) 08:11:52ID:???カンマ区切りでデータを区切りたいならそう書かないと。
PHPは表計算ソフトじゃないんだからそんなの標準でやるわけないじゃん。
すでに読み込んだデータをカンマ区切りで分解する方法と、
読み込みをカンマ区切りで行う方法とがある。
・後から区切る方法
$file = file("list.txt");
$data = explode(",", rtrim($file[0]));
echo $data[0];
・読み込み時に区切る方法
$fp = fopen("lit.tst", "r");
$file = array();
while($line = fgetcsv($fp, 1024)) {
$file[] = $line;
}
fclose($fp);
echo $file[0][0];
0511nobodyさん
2006/10/31(火) 08:16:31ID:???$i = 0;
while (($line = fgetcsv($fp, 1000, ',')) !== FALSE) {
$lines[$i] = $line;
$i++;
}
fclose($fp);
$lines[0][0]みたいにね
時間ないから動作確認してないけど
んじゃ
0513486
2006/10/31(火) 09:34:28ID:F9LjnucEやってみます。ありがとうございました。
0514nobodyさん
2006/10/31(火) 09:56:56ID:???0515nobodyさん
2006/10/31(火) 10:08:09ID:???0516nobodyさん
2006/10/31(火) 10:22:39ID:???こっちの方が簡単そう。
$file = file_get_contents("ファイル名");
$file = mb_ereg_replace('[^ヲ-゚ァ-ヶ]+', ',', $file);
echo preg_replace('/^,|,$/', '', $file);
0517nobodyさん
2006/10/31(火) 10:25:28ID:kTefGQaT文字化けさせないようにするためには
phpの中身(echoとかで表示される日本語)もEUC-JPで書かなければならないんですよね?
0518nobodyさん
2006/10/31(火) 10:33:46ID:???0519nobodyさん
2006/10/31(火) 10:44:13ID:???echoの前にmb_convert_encodingで文字コード変換をかけるとか、
出力データの定義だけEUCにしとくとかでも文字化けはしないけど
そんな手間をかけるくらいならEUCでソース書いた方が早いかもね。
個人的には出力データがソース中にあること自体どうかと思うけど。
0520nobodyさん
2006/10/31(火) 11:07:31ID:bXmcDE+81)フレーム内にあるページでSSLにするとセッション変数が引き継げないのはどうしてなのでしょう?
2)actionでSSLのURIを指定し、methodにPOSTを指定しても、
GETを指定した時のように、アドレスに引数が表示されるのはどうでしてなのでしょうか?
ご存知の方尾根逢いいたします。
0521nobodyさん
2006/10/31(火) 11:32:07ID:F9LjnucE設定/取得とありますが、内部文字エンコーディングって
なんでしょうか?
あと、
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
このように用いられている例があるのですが、どんな意味があるん
でしょうか?
0522nobodyさん
2006/10/31(火) 11:43:17ID:???0523nobodyさん
2006/10/31(火) 13:15:10ID:???配列で出力してくれる関数はありませんか?
get_declared_classesを使ったら、
すごいたくさんクラスが出てきて困っています。
0524483
2006/10/31(火) 13:20:33ID:tsMd/rxyありがとう神。出来ました。
0525nobodyさん
2006/10/31(火) 13:21:46ID:KRBx0YqFclass hoge{
function foo($match){
return "123";
}
function bar($match){
return "abc";
}
}
$before = array(
"[a-z]+",
"[0-9]+"
);
echo preg_replace_callback($before, array(array("hoge", "foo"), array("hoge, bar")), "abc123");
0527nobodyさん
2006/10/31(火) 13:31:16ID:???行いたいのですが、パスワード入力の部分で対話になってしまい
これをどの様に処理していいのか解らず、どなたかご存知の方
おりましたらアドバイス頂けると助かります。(>_<;
0528nobodyさん
2006/10/31(火) 14:32:33ID:???expect が使えるのならそれを使う
php 側は expect コマンドを使ったシェルスクリプトを実行するようにする
expect が使えないのなら、あきらめたほうがいいかも
0529nobodyさん
2006/10/31(火) 14:56:34ID:???有り難う御座います。調べててそこまでは辿り着きコンパイルし直して
有効にはなったんですが、peclでモジュールダウンロードしようとする
とlibexpectが無いと言われてしまい、libexpect探してるんですがどこ
に落ちてるか解らないス…orz
#PHPのインストール
version : php-4.4.4
./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--enable-versioning \
--enable-mbstring \
--with-pgsql=/usr/local/pgsql \
--enable-zend-multibyte \
--with-expect=./ext
#pecl install expect-0.2.2
〜
checking for expect support... yes, shared
configure: error: expect extension requires libexpect version >= 5.43.0
ERROR: `/tmp/tmpUKzwZQ/expect-0.2.2/configure' failed
0531nobodyさん
2006/10/31(火) 15:17:53ID:???proc_open()ってのはそういうケースじゃ使えないの?
0532nobodyさん
2006/10/31(火) 15:35:48ID:???メッセージから察するにlibexpectがないんじゃなくて
libexpectのバージョンが古いんじゃないかな
aptとかrpmでexpectをアップグレードするとか
0533nobodyさん
2006/10/31(火) 15:47:57ID:???を str_replace で置換(削除)したいんですが、
^Mをどうやって指定すればいいでしょうか?
0534527
2006/10/31(火) 15:52:36ID:???>>531
ザッとマニュアル見てみたんですが、ちょっと後ほど試してみます。
>>532
ソースからインストールする癖がついててすっかりそうゆう便利な
物の存在を忘れていました。早速実行してみましたが、やっぱ駄目
ポでした。。。
yum install-expect
expect-5.42.1-1.i386.rpm 100% |=========================| 13 kb
アップデートのものが古いようです。orz...
>libexpect version >= 5.43.0
はぁ…よく解らない…
とりあえず引き続き調べて何かわかったら報告しまつ。(・ω・;
ちなみにOSはCentOS4.4です。
0536nobodyさん
2006/10/31(火) 16:40:10ID:???>>528
の方法は bash とかのシェルスクリプトを使って
それを shell_exec() で実行するという意味だと思うぞ
proc_open()でいけそうな気もする
0537nobodyさん
2006/10/31(火) 17:13:10ID:???expectの5.43.0が結構新しいから5.43.0用のrpmがまだstableじゃないんだろう
unstableな最新のrpm探して取ってくるかソースから自前でexpect入れるか
そういう作業に慣れてないなら
proc_open()でできるかどうかから調べた方がいいかも
0538nobodyさん
2006/10/31(火) 18:52:52ID:o5P7BR6pどうもありがとうございます
0539nobodyさん
2006/10/31(火) 21:20:22ID:???0540nobodyさん
2006/10/31(火) 21:44:23ID:???0541nobodyさん
2006/10/31(火) 21:57:29ID:aqfpYPvu秒まで記録することは精度に信頼できるものか疑問でございます。
どなたかアドバイスお願いいたします。
■ このスレッドは過去ログ倉庫に格納されています