【PHP】下らねぇ質問はここに書き込みやがれ 56
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/11(木) 17:55:41ID:uObe69hrPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0272nobodyさん
2007/10/15(月) 21:01:56ID:???生データ入れてる?
0273nobodyさん
2007/10/15(月) 21:19:19ID:???場面場面によって違う
0277nobodyさん
2007/10/15(月) 21:52:35ID:???0278nobodyさん
2007/10/15(月) 22:11:18ID:???0279nobodyさん
2007/10/15(月) 23:11:35ID:PdW9cMRB今現在CSVファイルのデータをもとにフリー検索できるようにしてるのですが、
サイズが膨大すぎて時々上手く作動しません。
データは $Data=file("datacsv"); こんな感じで読み込んでます。
そこで質問なんですが、特定の列だけを対象に読み込ませることは可能でしょうか?
例えばCSVのデータの縦列6行目の商品名のみを対象にとか
お願いします。
0281nobodyさん
2007/10/15(月) 23:18:35ID:???$array = split(',',$Data['5']);# 6列目
print $array[2];# 前から3番目に商品名が入ってるとして
こんなんでどう?
ていうか、サイズが膨大すぎて時々上手く動作しませんってのはおかしい
0282nobodyさん
2007/10/15(月) 23:21:34ID:???>>278使えば可逆できるみたいよ。
(mcryptのマニュアル見たけど難しくて理解できなかったけど)
掲示板の名前やメアドくらいなら生でもいいんじゃいの? またはhttps使うとか
md5はDB使ってて照合する場合(認証等)ならいいと思います。
0283nobodyさん
2007/10/15(月) 23:44:35ID:???特定列(行?)だけを対象ってのは関数自作しないとダメと思う。
$Data=file("datacsv")だとファイル丸ごと読み込んでるから重いんだと思う。
1行ごと読み込んで必要な列だけ別配列に移しファイル閉じてから配列ぶん回して検索すればどう?
0284279
2007/10/15(月) 23:54:30ID:???ありがとうございます。試してみましたが、なかなか上手くいきません・・・
スキル不足でしょうか・・
>283
そうなんです。ファイルが膨大なため上手く読み込めなくて文字化けしたり、挙動がたまにおきます。
問題はピンスポットで検索できず、余計なものまで読み込んでることにあります。
商品名だけ検索対象にしたいのですが・・・
おっしゃってることは理解できるのですが、関数が簡単に自作できないもんで・・・
0286nobodyさん
2007/10/16(火) 00:04:24ID:???ファイルが膨大ってどれぐらいのサイズ?
郵便局のH.P.で配布されてる郵便番号のデータ読み込んで
住所の一部から郵便番号とか、郵便番号から住所とか検索するの作ったけど
データファイルが10MB以上あるけどちゃんと動くよ?
差し支えなけりゃそのデータファイルうpよろ
プログラムに原因があるんじゃなくデータファイルに原因あるかも
0287nobodyさん
2007/10/16(火) 00:10:56ID:???0288nobodyさん
2007/10/16(火) 00:16:15ID:???0290283
2007/10/16(火) 00:26:41ID:???$csvfile = "data.csv";
$search_field = 6; # n番目の列を検索(1スタート)
$search_word = "xxx";
function search_csv($csvfile, $search_word, $search_field){
$row = 0;
$field = $search_field - 1 ;
$handle = fopen($csvfile, "r");
while (($data = fgetcsv($handle, 1000)) !== FALSE) {
if((strpos($data[$field],$search_word)) === true){ # 検索処理
$hit[$row++] = $data[$field];
}
}
return $hit;
}
実際の検索処理はstrposじゃダメだと思うけど。
もし検索対象列以外の情報も欲しいならその列番号を引数($field_id)にして
$hit[$row][0] = $data[$field_id - 1];
$hit[$row++][1] = $data[$field];
とでもして。
0291nobodyさん
2007/10/16(火) 00:37:31ID:???0292279
2007/10/16(火) 00:43:26ID:???ありがとうございます。
今日じっくり試してみます。
>>291
DBがベストですね。 CSVをmySQLにインポートしてから・・・ も最終的には
考えています。
みなさんありがとう。またきます。
0293nobodyさん
2007/10/16(火) 00:51:29ID:???>>CSVをmySQLにインポートしてから・・・ も最終的には考えています。
処理重いなら最初に考えてくれ
そしたら対象列のみの検索関数なんていらないのに。(DB使えない事情あるのかと思ってたよ)
0294nobodyさん
2007/10/16(火) 12:42:40ID:???頂いたアドバイスは大して役に立たなかったのですが、
自分でその後色々試してみてできるようになりました。
ただ、アドバイス頂いたことをキッカケで解決の糸口になったので、
その点については感謝します。どうもありがとうございました。
0295nobodyさん
2007/10/16(火) 13:00:30ID:???, - ,----、
(U( )
| |∨T∨
(__)_) お役に立てなくて本当に申し訳ありませんでした。
0296nobodyさん
2007/10/16(火) 13:03:14ID:???/ ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄
./ / | もう来るなよ!>>294
/ / \ / ̄ ̄ ̄
/ /  ̄|/ ̄ ̄ ̄ ̄| ウワアアン!
./ / , -つ \
/ / `Д´) ./__ノ  ̄∨ ̄ ̄ ̄ ̄
/ \ / / ⊂_ヽ、
.| へ/ / .\\
| レ' /、二つ \ ( `Д´)
| /. . > ⌒ヽ
/ / / へ \
/ / / / \\
/ / レ ノ ヽ_つ
/ ノ / /
_/ / / /|
ノ / ( ( 、
⊂ -' | |、 \
. | / \ ⌒l
| | ) /
ノ ) し'
(_/
0297nobodyさん
2007/10/16(火) 13:10:49ID:???>自分でその後色々試してみてできるようになりました。
>
>ただ、アドバイス頂いたことをキッカケで解決の糸口になったので、
>その点については感謝します。どうもありがとうございました。
なにこの糞厨房?
自分の技術のなさとやりたいことを伝える能力のなさを棚に上げて何言ってんの?
0298nobodyさん
2007/10/16(火) 13:47:35ID:???は?何、キモイレスしてんの?
ワザワザ時間を使ってお礼のレスを書いているのに、お前こそ何様?
そもそも、お前がアドバイスしてくれた本人じゃないだろ。
お前が消えろ。
0299nobodyさん
2007/10/16(火) 13:57:58ID:???0301nobodyさん
2007/10/16(火) 14:00:27ID:???ここは気持ちの綺麗な初心者がくだらねえ質問を書くスレであって、くだらねえ性格の持ち主が来る場所じゃない
よって、お前はもう来るなよ!
0302nobodyさん
2007/10/16(火) 14:44:20ID:???では大して役に立たなかったアドバイスをした私(>>283,290)から一言、
/ ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄
./ / | もう来るなよ!>>294 >>298
/ / \ / ̄ ̄ ̄
/ /  ̄|/ ̄ ̄ ̄ ̄| ウワアアン!
./ / , -つ \
/ / `Д?) ./__ノ  ̄? ̄ ̄ ̄ ̄
/ \ / / ?_ヽ、
.| へ/ / .\\
| レ' /、二つ \ ( `Д?)
| /. . > ⌒ヽ
/ / / へ \
/ / / / \\
/ / レ ノ ヽ_つ
/ ノ / /
_/ / / /|
ノ / ( ( 、
? -' | |、 \
. | / \ ⌒l
| | ) /
ノ ) し'
(_/
0303nobodyさん
2007/10/16(火) 14:53:41ID:???/:::::::::::::::::::::::::::::::::::::::\〜プーン
|:::::::::::::;;;;;;|_|_|_|_|〜プーン
|;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜
|::( 6∪ ー─◎─◎ )〜
|ノ (∵∴ ( o o)∴)〜
| ∪< ∵∵ 3 ∵> <は?何、キモイレスしてんの?
\ ⌒ ノ_____
\_____/ | | ̄ ̄\ \
___/ \ | | | ̄ ̄|
|:::::::/ \___ | \| | |__|
|:::::::| \____|つ⊂|__|__/ /
|:::::/ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
顔真っ赤な>>298氏
0304nobodyさん
2007/10/16(火) 16:08:57ID:6XgRK9plを
都道府県
市区町村
○○丁目
○番地
のように解析するようなライブラリとかありませんか?
0305nobodyさん
2007/10/16(火) 16:10:33ID:???クラスでmysqlを使うときに
$this->mysqli->query("show tables")
みたいに書いても動かないんですけど
やっぱり->が二つ以上あるのはだめなんですか?
クラスでmysql使うにはどうしたらいいんでしょうか?
やっぱり、手続き型ですか?
0306305
2007/10/16(火) 16:12:44ID:???自己解決しました。
0307nobodyさん
2007/10/16(火) 16:16:36ID:???変更フォーム画面にアクセスした時、
既に登録されているデータをフォーム内に配置したいと思っています。
テキストボックスの値やテキストエリアの値は変数をそのまま出力するだけで簡単でしたが、
セレクトメニューの項目の場合、皆さんはどういう風に登録値を当て嵌めてますか?
0308305
2007/10/16(火) 16:17:07ID:???0309307
2007/10/16(火) 16:19:13ID:???解決しました。
0313nobodyさん
2007/10/16(火) 17:31:08ID:HcNoY8tx$func = 'Test';
$this->'user'.$func.'Warp'();
こんな形で
userTestWarpファンクションを通過させたいのですがうまく行きません。
どのような書き方でうまく動作するでしょうか?
宜しくお願いします
0314nobodyさん
2007/10/16(火) 17:34:15ID:6XgRK9plそうなのですか、すみませんでした。
住所を検索して位置情報を取得したいのですが、
Geocoding使う以外に何か方法はないものかと思っていたら
国土交通省に各住所と位置情報のデータベースがあったので、
そこから検索しようと思い入力された住所を解析しようと思いました。
0315nobodyさん
2007/10/16(火) 17:36:57ID:???$this->{'user'.$func.'Warp'}();
$this->{"user{$func}Warp"}();
など。
0317nobodyさん
2007/10/16(火) 17:42:49ID:???という意思表示とみなされます。
0318nobodyさん
2007/10/16(火) 17:45:25ID:???0319nobodyさん
2007/10/16(火) 17:56:42ID:???ID出さずに自滅するのは質問者の勝手、ってことにすれば
喧嘩は質問者とその騙りだけで閉じて回答者は参加しなくなるから。
0320nobodyさん
2007/10/16(火) 18:40:10ID:NYdItq6K皇后についてはどうでしょうか?
例えば、天皇皇后が終戦記念日の祝典に出たときに、
皇后が何もお言葉を述べなかったのは、
戦没者を不当に軽視するもので、精神的な苦痛を受けたとして、
皇后を被告に民事裁判を申し立てることはできますか?
0321nobodyさん
2007/10/16(火) 18:41:33ID:???0322nobodyさん
2007/10/16(火) 18:41:56ID:???0323nobodyさん
2007/10/16(火) 18:43:35ID:???0324320
2007/10/16(火) 18:44:51ID:NYdItq6K0326nobodyさん
2007/10/16(火) 18:57:31ID:CHj8ujM0setcookieを配列の数実行したらいいのでしょうか?
0327nobodyさん
2007/10/16(火) 19:09:25ID:???0328nobodyさん
2007/10/16(火) 21:27:56ID:CHj8ujM0$b = '山本';
これをシリアライズしてcookieに保存する方法をおしえてください。
0329nobodyさん
2007/10/16(火) 21:33:25ID:???0331nobodyさん
2007/10/16(火) 22:32:03ID:opvWCKV/リソースを一工程で連想配列として扱う方法はありますか?
0333nobodyさん
2007/10/16(火) 23:50:39ID:opvWCKV/返ってきた結果を色々弄るのにリソースより配列にする
方が楽なので(今は自作関数で処理してます)。
0334nobodyさん
2007/10/17(水) 00:10:09ID:???0337nobodyさん
2007/10/17(水) 01:41:10ID:???とするべき所を
$tmp = NULL;
と間違って初期化してしまったために、
array_pushのコードの箇所でエラーが発生して、今日業務が止まってしまったのですが、
素直に上司に報告したところ、笑って許してくれました。
これも普段からの人徳からなのかもしれない。
普通の人だったら首になってもおかしくないですから。
0338nobodyさん
2007/10/17(水) 01:48:29ID:???0339nobodyさん
2007/10/17(水) 02:09:07ID:???0340nobodyさん
2007/10/17(水) 07:48:12ID:pDVA8Q4Wにしたところ、PHPの関数ファイルなどがすべて文字化けしました。
こういう用途の場合、どうやって文字化け回避したらよいのでしょうか?
一括で出来る方法を教えて下さい。
(ちなみに、サーバもEUCです)
0342340
2007/10/17(水) 07:58:09ID:???表示ページ→Shift-JIS
関数ファイル→EUC-JP
で、表示ページにrequireで関数ファイルを読み込んでいるのですが、
どの部分に変換すればいいのでしょうか?
また、mb_convart_encodingではないですよね?
0344nobodyさん
2007/10/17(水) 08:51:53ID:???0346nobodyさん
2007/10/17(水) 11:00:32ID:Y8aoqXAI指定したファイルのmd5を取得したくて下のようにしました
しかし ./test.jpg が渡されていてファイルのmd5が取得できませんでした
$target = "./test.jpg";
$md5_name = md5($target);
print "md5 $md5_name";
次にこのようにしてファイルを読み込ませて、それを元にmd5を得ようと思いましたが
でてきた結果が空白でこれも失敗しました
$target = file("./test.jpg");
$md5_name = md5($target);
print "md5 $md5_name";
ファイルのmd5はどうやったら取得できるのでしょうか?
0348nobodyさん
2007/10/17(水) 11:14:29ID:Y8aoqXAIhttp://jp.php.net/manual/ja/function.md5.php
ここですよね?
文字列からのは理解できましたがファイルからのが理解できなかったんです
0349nobodyさん
2007/10/17(水) 11:18:29ID:???あるいは左の関数一覧を見れ
0350nobodyさん
2007/10/17(水) 11:26:48ID:Y8aoqXAIうほっ、関数あったw
ありがとうございました
0351nobodyさん
2007/10/17(水) 12:00:23ID:???0352nobodyさん
2007/10/17(水) 17:21:33ID:???マニュアル見れ坊しね
0353nobodyさん
2007/10/17(水) 17:26:54ID:Y7gFjXGGjsのヒストリーバックや、ブラウザのバックを使うと
修正しようと戻ると、入力欄が空白になる場合があります。
毎回ならわかるのですが、何故なんでしょう?
ヒストリーバックなボタンは使わず
hiddenで変数を埋め込んだ方がいいのでしょうか?
0354nobodyさん
2007/10/17(水) 18:07:47ID:???0355nobodyさん
2007/10/17(水) 18:16:25ID:???$a[0][0] = 1;
$a[0][1] = 2;
$a[0][2] = 1;
という多次元配列を作っておいて、
$a[0][0] の値と $a[0][2] の値を if 文で比較処理したいと思っています。
そこで
if ( $a[0][0] == $a[0][2] ) {
処理内容
}
と書いても評価してくれません。
そこで「{$a[0][0]}」のように波括弧で囲まないと
希望の挙動にならないのかとも思ったのですが、
if ( {$a[0][0]} == {$a[0][2]} ){ ……
とすると文法エラーになってしまいます。
if の条件文の中で、直接に多次元配列の値を比較するには
どのようにすればいいのでしょうか?
よろしくご教示ください。
0356nobodyさん
2007/10/17(水) 18:18:12ID:???ブラウザの一時メモリキャッシュが残ってるかどうかじゃないのかな。
ヒストリーバックに頼るのは良くないと思うよ。
>>354
セッションは簡単だけど2画面開かれたときにおかしな挙動になることもあるからTPOで。
0357nobodyさん
2007/10/17(水) 18:20:15ID:???$a[0][0] = 1;
$a[0][1] = 2;
$a[0][2] = 1;
if ( $a[0][0] == $a[0][2] ) {
echo "一致した\n";
}
実行結果:
一致した
普通に動いてると思うんだが確認方法をどっか間違ってないか?
0358nobodyさん
2007/10/17(水) 18:58:54ID:???0359355
2007/10/17(水) 19:01:12ID:???すみません。おっしゃっられた通り、確認方法を間違えていました。
きちんと動作します。
わざわざ検証していただいてありがとうございました。
// ああ、こんなことに3時間も悩んで、俺はバカだ orz
0360nobodyさん
2007/10/17(水) 19:10:49ID:Y7gFjXGGありがとうございます。
hiddenで対応しました。今まで入力項目が少なくて
校正のない者ばかりだったので気が付きませんでした。
そして新たに発覚したのが送信者、本分内の旧字の名前が?に化けるのですが…
UTF-8→ISO-2022-JP MINE→アウトルック
どの時点でおかしくなっているのでしょうか…
0362nobodyさん
2007/10/17(水) 19:40:39ID:bsL4C361登録用ページ(A.php)と、登録したものを表示するページ(B.php)と、
リンク先を確認&表示するページ(C.php)の3つがあります。(2chのime.nuのようなもの)
A.phpでURLをエンコードしたものをデータにいれ、
C.phpにGETでエンコード済みURLを渡すリンクをB.phpに表示し、、
C.phpで、受け取ったエンコード済みURLをデコードしたものを表示しようと思っています。
携帯対応のページなのでリファラが使えないので、
C.phpでのXSS対策の1つとして、
GETで受け取ったデータがエンコード済みのURLかどうかをチェックしたいのですが、
何か良い方法ありませんでしょうか?
それともう1つ質問なんですが、
URL登録が日本語ドメインだった場合、文字コードを考えないといけなくなるので面倒になります。
日本語ドメイン(2バイト文字ドメイン)自体使ってる人はあまりいないと思うのですが、
切り捨てるべきだと思いますか?
0363nobodyさん
2007/10/17(水) 19:57:19ID:???SESSION使えば解決な気がしなくもない
0364362
2007/10/17(水) 20:33:44ID:bsL4C361レスありがとうございます。
セッションは使ったことないので思いつきませんでした。
今からセッションについて調べてみたいと思います。
0365nobodyさん
2007/10/17(水) 21:30:56ID:???0367nobodyさん
2007/10/17(水) 22:39:24ID:DjVZ7nbdPHPで、ログファイルを開き、特定の文字列が含まれる
行番号を取得したいと考えています。
以下の記述で、サイズの小さいログファイルでは
正常に行番号が取得出来ましたが、ログファイルが大きくなると
ファイルの読み込み自体が出来ていないようでした。
fopen関数で大きなサイズのファイルを扱うにはどのようにすれば
良いでしょうか。よろしくお願いいたします。
$file = fopen("log", "r");
$i = 1;
while( $i < 10000 ) {
$line[$i] = fgets($file);
if ($line[$i] == $str) {
$start = $i;
} else {
}
if ($line[$i] == $str2) {
$end = $i;
} else {
}
$i++;
}
■ このスレッドは過去ログ倉庫に格納されています