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

【PHP】下らねぇ質問はここに書き込みやがれ 58

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/11/03(土) 19:07:37ID:EzkHevL1
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/

◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0666nobodyさん2007/11/13(火) 12:53:44ID:???
>>665
フレームワークのバリデーションチェック使ってる
ユーザ向けはJavaScriptで簡易チェック
0667nobodyさん2007/11/13(火) 14:20:14ID:???
>>665
基本はPHP側で自前でチェックする
文字数はstrlenつかったり半角規制は正規表現などなど

2重にHTML側でもJavaScrptでチェックしたり
inputにmaxlength指定したり根本的ではないが簡易的な対策をする

FWつかってる環境なら>>666だが
このスレ見てる質問者がFW使ってるとも思えないし・・・
0668nobodyさん2007/11/13(火) 14:27:17ID:???
FWってさあ、Fireworksのこと?
URLとかあれば自分で調べられるんだけど・・・
ありがとうございました。
0669nobodyさん2007/11/13(火) 14:29:59ID:???
>>667
バカかおめえ?
FWは鯖で使うものだよw
0670nobodyさん2007/11/13(火) 14:33:01ID:???
>>668
フォームの入力値か?
おしえたろか?
0671nobodyさん2007/11/13(火) 14:33:28ID:???
FWはフレームワークの略の可能性も。略語は控えた方がいいよね。
0672nobodyさん2007/11/13(火) 14:39:48ID:???
いやぁ・・・
状況判断でFW=フレームワークってわかるでしょ。
なんでWebプログラミング扱ってるこのスレでFireworksが出てくるのかが理解不能。
06736672007/11/13(火) 14:45:25ID:???
>>669
?
そんなの知ってるよ
ただFWで開発してるような人間がそんな質問する分けないと思っただけ
環境っていう言い方が気にいらなかったか?
0674nobodyさん2007/11/13(火) 14:54:52ID:???
FW
ForWard -> スポーツ
FireWorks -> デザイン
FireWall -> セキュリティ
FrameWork -> プログラム
0675nobodyさん2007/11/13(火) 15:06:56ID:???
フレームワークってどういう役に立つものなの?
0676nobodyさん2007/11/13(火) 15:08:56ID:???
>>675
みんなが作りそうなものをあらかじめ装備しているので
そこの手間がはぶける
0677nobodyさん2007/11/13(火) 15:14:39ID:???
携帯からアメダスの情報を見たいなと思ってこんなのを書きました。
全く問題無く動作するのですが、もっと短いコードで書くにはどうすれば良いですか?

<?php

$handle = fopen('http://www.jma.go.jp/jp/amedas_h/today-14163.html?groupCode=12&areaCode=000', "r");

if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
if (preg_match("/div_table/", $buffer)) {
break;
}
}

while (!feof($handle)) {
$main = fgets($handle);
echo $main;
if (preg_match("/<\/table>/", $main)) {
break;
}
}
fclose($handle);
}

?>
0678nobodyさん2007/11/13(火) 15:17:37ID:???
でもFW独自の作法を勉強する手間が結局発生する。
0679nobodyさん2007/11/13(火) 15:35:27ID:???
>>673
グラフィックを専門にしてる俺にあやまれ!
0680nobodyさん2007/11/13(火) 15:36:24ID:???
ごばく!!
>>672よ、趣味でphpやってて本業グラフィック使いの俺にあやまれ!
0681nobodyさん2007/11/13(火) 15:41:02ID:???
650=653=658
0682nobodyさん2007/11/13(火) 16:05:33ID:Bvnlm0Kv
foreachで渡す配列が空だとWarningが出ますが、
配列が空でもWarningを出さない簡単な方法はあるでしょうか?
#@foreachみたいな

事前に値をセットしたり、if文で配列が空ならば処理を飛ばす、等の
(真っ当な?)回避方法があるのはわかっております。
0683nobodyさん2007/11/13(火) 16:15:49ID:???
if で回避できることは解っていても尚、foreach に渡したいのか!何故か!
0684nobodyさん2007/11/13(火) 16:16:22ID:???
自分で答えだしてんじゃんwまあ@を使わないやり方なら
配列かどうか調べるとかそういうのやればいいんじゃない
0685nobodyさん2007/11/13(火) 16:20:46ID:???
その真っ当な回避方法が一番簡単だと思うぞ
0686nobodyさん2007/11/13(火) 16:20:55ID:Bvnlm0Kv
>>683
面倒くさいってだけです。ごめんなさい。

>>684
いや、foreachは@使えないんですよ。
でも@的なお手軽回避をする方法があったらいいなあ、と。
0687nobodyさん2007/11/13(火) 16:22:32ID:???
そのめんどくさいってのをやらず回り道するほうがめんどくさいと思えよw
0688nobodyさん2007/11/13(火) 16:23:27ID:Bvnlm0Kv
>>185
でも、

@foreach($data as $a => $b) {
処理
}

で済むところが

if (is_array($data)) {
foreach ($data as $a => $b) {
処理
}
}

になるのは、面倒くさい上にインデントも深くなるし。。。
0689nobodyさん2007/11/13(火) 16:23:27ID:???
画像を動的に生成するCGIを呼び出し生成された画像を読み出したいのですが
どのようにしたらいいのかわかりません。
たとえば
$url = 'http://hoge.com/cgi-bin/hoge.cgi?1+2+3';
を読み込んで変数($img)に代入したいのです。
どなたかご教授お願いいたします。
0690nobodyさん2007/11/13(火) 16:25:38ID:???
>>688
「@」に相当するラッパー関数を自作すりゃ済む話だろうよ。
0691nobodyさん2007/11/13(火) 16:26:43ID:Bvnlm0Kv
>>690
そんな高度なテクは持ってないんですよ
0692nobodyさん2007/11/13(火) 16:30:42ID:???
それを勉強しろよw
0693nobodyさん2007/11/13(火) 16:38:36ID:???
くんくん
なんか昨日の粘着みたいな臭いがするなw
0694nobodyさん2007/11/13(火) 16:41:54ID:???
>>689
cgiがあるところは外部サーバ?
それならimageとして読み込んでやればOK
0695nobodyさん2007/11/13(火) 16:46:23ID:Bvnlm0Kv
>>692
今知りうる知識のキーワードでググってみましたが、
wrapper関数の作り方は出てこなかったです

ヒントください
06966892007/11/13(火) 16:54:33ID:???
>>694
ありがとうございます。
ちなみにcgiは同じサーバー内です。(gdで作成,出力はpng)
$img = imagecreatefrompng($url);
では駄目でした。
0697nobodyさん2007/11/13(火) 17:08:01ID:???
>>696
fontまでのURLは指定してあるんだろうな?
ていうかコード省略せず張れよ。
てめえのコードなんざありふれてんだからパクられるの気にすることでもない
0698nobodyさん2007/11/13(火) 17:13:50ID:???
判断式で当てはまっても抜け出さないで、とりあえず全ての条件に通すことって可能?
if文は条件分岐なんだから目的が元々違うだろうし、適当な既存の構文とかあんのかな。
でなければ一つ一つif文を網羅していく方法しかないのだろうか。
0699nobodyさん2007/11/13(火) 17:14:27ID:???
id出し忘れ
07006982007/11/13(火) 17:15:10ID:w5Alq5vf
すんません
07016892007/11/13(火) 17:30:02ID:???
>>697
ありがとうございます。コードですがFPDF+PDIでテンプレ読み込みそこに
CGIで作成した画像を埋め込む事をしたのです。実際のコードは下記の通りです。
<?php
define('FPDF_FONTPATH','font/');
require('fpdi.php');

$GLOBALS['EUC2SJIS'] = false; // このファイルがS-JISの場合
$pdf =& new fpdi();
$pagecount = $pdf->setSourceFile("test.pdf");
$tplidx = $pdf->ImportPage(1);

$pdf->addPage();
$pdf->useTemplate($tplidx,5,5,200);

//画像 ※ここからがわかりません。
$url = 'http://www.hoge.com/cgi-bin/hoge.cgi?dt1=1+2+3+4';
$img = @imagecreatefrompng($url);
$pdf->Image($img,100,100);
// 表示
$pdf->Output();
imagedestroy($img);
?>
07026982007/11/13(火) 17:42:40ID:w5Alq5vf
自己解決しました。
0703nobodyさん2007/11/13(火) 17:43:08ID:???
>>700
条件たくさん書いて真の時にフラグもたせて
最後にフラグが真なら処理実行させたら良いだけなんじゃないの
0704nobodyさん2007/11/13(火) 18:00:50ID:???
>>691
ええ?? 何がどう「高度」なんだよ??www

お前自身が>>688で書いてるif文とかの処理を単純に関数化するだけだろうが。
もし「自作関数を作ったことがありません」レベルで、
しかもググってもやり方が分からないんだったら氏んでくれ。もう何も言えん。
07056932007/11/13(火) 18:51:55ID:???
自己解尻しました。
0706nobodyさん2007/11/13(火) 19:00:13ID:???
>>695
煽られてもめげずに丁寧に対応しているあなたの姿勢に感動した。
俺は
foreach ((array)$somevar as $value) {
}
でやってるがどうかね
0707nobodyさん2007/11/13(火) 19:02:02ID:???
>>698
判断式って何?条件式とは違うの?ifで当てはまらなくても実行させたいの?
謎すぎる質問で分かりにくいけど文章読む限りではswtich〜case文が該当するのでは?
0708nobodyさん2007/11/13(火) 19:12:19ID:???
>>706
自作自演はよくないよ。
0709nobodyさん2007/11/13(火) 19:18:26ID:???
すいません質問です
html.txtの内容を単純にサイトのタグ内に進入するのに、いろいろと試してみましたが、

<?php require("html.txt"); ?>

と

<?php include("html.txt"); ?>

でできましたが、どちらがいいのでしょうか?
0710nobodyさん2007/11/13(火) 19:27:00ID:???
http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&channel=s&hl=ja&q=php+include+require&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2
0711nobodyさん2007/11/13(火) 19:27:05ID:???
@include_once
0712nobodyさん2007/11/13(火) 19:27:12ID:???
>>709
おれもタグ内に進入してみたい

> エラーが発生するとどちらも Warning を出力しますが、
> require() を使用している場合は Fatal Error となります。
> 言い換えると、指定されたファイルが無い場合に処理を停止したい場合は
> require() を使用した方が良い、ということになります。
0713nobodyさん2007/11/13(火) 19:27:41ID:???
readfile('html.txt');
0714nobodyさん2007/11/13(火) 19:45:22ID:???
http://side-b.sto.co.jp/weblog/archives/217

みなさん有難うございました。
コレを読んでinclude_onceでいきます ^^

0715nobodyさん2007/11/13(火) 19:46:20ID:???
君の場合は0.00001秒も変わらないから速度のことなんて気にするだけムダ
0716nobodyさん2007/11/13(火) 19:48:49ID:???
>>714
バカ?
0717nobodyさん2007/11/13(火) 19:49:50ID:???
>>715
言っときますが、彼女に「進入」しても最低3分はもちますよ。

速度じゃなくてfatal errorがいやなのでincludeにしたんです。
0718nobodyさん2007/11/13(火) 19:50:22ID:???
>>717
バカ?
07196652007/11/13(火) 19:53:55ID:???
入力値のチェックを質問したものです
いろんな意見くれてありがとうございました。FWは今回は見送りますが
いただいた意見参考にがんばります。 サンキューでした。
0720nobodyさん2007/11/13(火) 19:56:56ID:???
>>717
ならfile_exists使うべき
0721nobodyさん2007/11/13(火) 19:58:52ID:???
txt形式を読み込むのにinclude, requireは使わないな
is_readableとかしてから>>713かな
0722nobodyさん2007/11/13(火) 20:04:12ID:???
php5とmysql5をapache2で使ってる環境で、アクセス負荷をプログラム側で
軽減しようとしたら、どういうことに気をつけたらいいんですか?
コーディング上最低限やるべきマナーとかありますか?
0723nobodyさん2007/11/13(火) 20:08:30ID:???


  いま俺のことバカって言った奴でてこいっ!

0724nobodyさん2007/11/13(火) 20:08:38ID:???
>>722
負荷のみを軽減するなら無駄を減らすこと。
0725nobodyさん2007/11/13(火) 20:09:09ID:???
>>723
呼んだ?
0726nobodyさん2007/11/13(火) 20:11:15ID:???
>>723
バカ?

0727nobodyさん2007/11/13(火) 20:11:45ID:???
>>723
バカ
0728nobodyさん2007/11/13(火) 20:13:48ID:hvvlgRN4
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'C:ディレクトリ&ファイル名' (include_path='.;C:ディレクトリ&ファイル名') in Unknown on line 0

とエラーが表示されるんですが、どうしたらなおりますか?
お願いします。
0729nobodyさん2007/11/13(火) 20:14:37ID:???
>>728
調べてからこい
0730nobodyさん2007/11/13(火) 20:21:55ID:hvvlgRN4
>>729
ネットでいろいろ調べたが、解決できなかったのでここにきました。
0731nobodyさん2007/11/13(火) 20:24:53ID:???
>>728
バカ?
0732nobodyさん2007/11/13(火) 20:25:03ID:???
>>730
php使うの諦めたら?
0733nobodyさん2007/11/13(火) 20:26:33ID:???
>>728
ファイルが無い
0734nobodyさん2007/11/13(火) 20:26:46ID:???
>>728
全然調べてないでしょ?
ファイルが見つからないって事だから、パスが通るようにすれば解決。
0735nobodyさん2007/11/13(火) 20:31:05ID:JpvZapzB
横からだけど

> Unknown: (error detail) in Unknown on line 0

俺、こういう Warning や Fatal 見たことがないんですけど、
どういう状況で出るんですか?( in test.php on line 15 とかは見ます)

質問なのでID出します。
0736nobodyさん2007/11/13(火) 20:32:41ID:???
>>735
自演乙
0737nobodyさん2007/11/13(火) 20:32:52ID:hvvlgRN4
他のPHPファイルは正常に動作するんですが・・。
0738nobodyさん2007/11/13(火) 20:34:05ID:???


  いま俺のことバカって言った奴マジでてこいっ!

  やったる。



0739nobodyさん2007/11/13(火) 20:35:31ID:???
>>738
よう、バカ
0740nobodyさん2007/11/13(火) 20:36:42ID:???
エラーがでたPHPのソースだしてみればいいでしょうに
該当ラインわからんのなら全体像みておかしいところ見つけるしかないでしょう
0741nobodyさん2007/11/13(火) 20:50:37ID:???
>>737
エスケープシーケンスって知ってる?
ていうかスラッシュ使えよ
0742nobodyさん2007/11/13(火) 22:29:26ID:???
php.iniでの読み取りファイルのパスの設定をしていて、今のphp.iniを見たら
すでにpearへのパスが指定されてました
コレにsmartyへのパスを追加するのは以下の書き方でOKですか?
include_path = ".;c:\php\includes;c:\php\pear"
include_path = ".;c:\php\includes;c:\webroot\libs\Smarty\libs\"
0743nobodyさん2007/11/13(火) 22:49:49ID:???
>>742
いいんじゃない?pearは消えてるけど
0744nobodyさん2007/11/13(火) 23:05:55ID:Az3IX4ek

すみません。ご教授ください。
3000行程あるテキストファイルの処理を行っています。
全ての行を読み込み、必要な情報がある行に関しては、
if文とeregを使用して行番号を抽出しているのですが、
eregでのマッチングが出来てる行と出来ない行があります。
記述は以下のように、#や|、半角スペースなどが混じる文字列になります。

if ( ereg("aaa# /aaa/bbb | ccc ddd", $line[$i]) ) {
$test = $i;
} elseif ( ereg("eee# /fff/ggg | hhh iii", $line[$i]) ) {
$test2 = $i;

マッチングしない行が特に、他と大きく異なって
特別な記号などを使用している訳では無く原因がつかめません。
対処法をご教授頂けないでしょうか。よろしくお願いします。
0745nobodyさん2007/11/13(火) 23:07:00ID:???
ありがとうございます  pearと共存しようとしたら、
include_path = ".;c:\php\includes;c:\php\pear;c:\webroot\libs\Smarty\libs\"
これでいいんでしょうか?
0746nobodyさん2007/11/13(火) 23:28:49ID:???
smartyって使ったことないからしらないが、見えるとこにおいて良いのか?
0747nobodyさん2007/11/13(火) 23:31:20ID:???
出来ればドキュメントルート以下におかないほうが良い。
出来ない場合はアクセス制限を掛けるしかないかな。
0748nobodyさん2007/11/13(火) 23:32:58ID:???
別にテンプレートディレクトリだけでいいのでは?
0749nobodyさん2007/11/13(火) 23:51:40ID:otS5xGSl
データの入り方・構造について質問です。

WEBアンケートでチェックボックスを複数選択し、登録する時
複数選択箇所はforなどで1つずつ分けてDBなどに保存するべきでしょうか?
それとも「1,2,3」として、カンマ区切りで保存するべきでしょうか?
0750nobodyさん2007/11/13(火) 23:53:31ID:???
>>749
DBの話だから微妙にスレチじゃないかな。
普通はなるべく1回で済ますと思うけど。
07517502007/11/13(火) 23:55:55ID:???
>>749
すまん読み間違えてた。
「〜するべき」とかは言えないけど、DBのほうがソートやら更新やらが楽で良いよ。
07527162007/11/14(水) 00:06:12ID:???
事故解尻しました。
0753nobodyさん2007/11/14(水) 00:08:28ID:???
格納の仕方の話だろ?
すべきかどうかの話でいうなら、正規化すべき。
MysqlならENUM型使ってもいいんじゃない。
07547442007/11/14(水) 00:30:03ID:???
744です。書き忘れましたが環境はphp4です。
些細な事でも構いませんので、何かアドバイスをお願い致します。
07557492007/11/14(水) 00:32:49ID:wV0Vxe79
>>750,753
格納の話です。フリーのアンケートなどを見ると、PHPで作っており、
かつ「1,2,3」というような格納方法が多いので、どうするのが効率良いかな?
と思い、質問させていただきました。
>>753
ENUM型って予め登録したい項目を決めておかないと駄目ですよね?
そうじゃなくて、質問文もPHPから登録して、
回答もPHPから保存したいと思っています。
0756nobodyさん2007/11/14(水) 00:41:41ID:???


  いま俺のことバカって言った奴でてこいっ!


07577442007/11/14(水) 00:51:12ID:???
事故解決しました。
あなたたちの解答は期待しないので、レスは不要です。
07587442007/11/14(水) 00:57:38ID:rpeYtezF
解決していません・・・
初心者用スレに行ったほうが良いんでしょうか
0759nobodyさん2007/11/14(水) 01:05:29ID:???


  いま俺のこと笑った奴でてこいっ!


0760nobodyさん2007/11/14(水) 01:06:16ID:???
>>744
実際に再現できるデータも見せてよ
0761nobodyさん2007/11/14(水) 01:07:13ID:???
ここは性格の悪い奴等が多いから他スレのほうが良いかも
0762nobodyさん2007/11/14(水) 01:10:18ID:???
性格悪くなったのはここ最近だよな…
0763nobodyさん2007/11/14(水) 01:12:40ID:???
>>744
元データがわからんことには正規表現の書きようがない、つーか正規表現スレ行った方がいい気が・・・
あと3000行も処理すならeregよりpreg使ったほうがいいんじゃないかな
0764nobodyさん2007/11/14(水) 01:18:48ID:7Op+OI+L
>>762
なんかおかしなのが偽装してるんだよな。
07657622007/11/14(水) 01:28:10ID:???
僕の肛門も解決されそうです・・・
■ このスレッドは過去ログ倉庫に格納されています