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

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

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

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

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0348nobodyさん2007/05/16(水) 17:06:12ID:???
>>347
> 'HTTPS'
> スクリプトが HTTPS プロトコルを通じて実行されている場合に 空でない値が設定されます。
>
> ISAPI を IIS で使用している場合は、HTTPS プロトコルを通さないでリクエストが行われたときの値は off となることに注意しましょう。
0349nobodyさん2007/05/16(水) 17:08:28ID:???
便乗質問する奴ってろくでもない初心者ばっかだな。
0350nobodyさん2007/05/16(水) 17:27:05ID:???
結局言いたい放題言っただけだったな。
これだからマニュアルは読んどかないと。
0351nobodyさん2007/05/16(水) 18:42:59ID:???
いやいやマニュアルは読むのがあたりまえです^^;
0352nobodyさん2007/05/16(水) 20:41:26ID:xTzSxSz1
「\nが入っていたら取り除く」という関数を作りたいんだが、
strstrとかで検索してやるほかになんかありますか?
03533522007/05/16(水) 20:42:48ID:xTzSxSz1
ごめん、「文末に」\nが入っていたら取り除く、関数です。
0354nobodyさん2007/05/16(水) 20:49:05ID:???
rtrim() とか [ep]reg_replace() とか
0355nobodyさん2007/05/16(水) 20:56:14ID:???
chopでいいじゃん
03563522007/05/16(水) 20:59:27ID:xTzSxSz1
>>354 rtrimやchopだとspaceも消えるので、そうしないためには
正規表現系で処理するしかない?
0357nobodyさん2007/05/16(水) 21:03:04ID:???
$と¥nつかったパターンで置換
03583522007/05/16(水) 21:06:25ID:xTzSxSz1
/\\n$/ これでおk?
0359nobodyさん2007/05/16(水) 21:12:20ID:???
動くか動かないか試してから質問してるんだろうな
03603522007/05/16(水) 21:16:13ID:xTzSxSz1
>>359
ごめん結局rtrimでいいような設計に作り直したので質問終了で。
0361nobodyさん2007/05/16(水) 21:30:59ID:???
rtrim($str, "\n");
03623522007/05/16(水) 21:33:13ID:xTzSxSz1
>>361 ありがとうございました。
0363nobodyさん2007/05/16(水) 21:55:32ID:c3gVMJYw
PHPでペッパーランチを追い込むにはどうしたらいいですか?
0364nobodyさん2007/05/16(水) 22:00:20ID:???
>>363
大阪の店長逮捕されて大変そうだからそっとしてやれ。
0365nobodyさん2007/05/16(水) 22:01:19ID:???
被害者への配慮が最優先だろが
ペッパーランチは全店臨時休業するべき
0366nobodyさん2007/05/16(水) 22:16:15ID:QKxTyLUD
すみません、質問させてください。 winXP apache2 php5で作業してます。
以下のスクリプトをshowList($cid)に適当な引数をつけて実行してるんですが、
DBに登録してあるデータが print_r($ctgAry)."<br><br>"; print "<br><br>".$ctgAry[0];
ともに帰ってきません。 $ctgAry は対応データ数分の要素を持つ連想配列には
なっているんですが、値が格納されてません。 なぜでしょう? どなたかお願いします。
<?php
class Category{
private $_cid; private $_cname; private $_img;
public function getCid(){return $this->_cid;}
public function getCname(){return $this->_cname;}
public function getImg(){return $this->_img;}
public function setCid($cid){$_cid = $cid;}
public function setCname($cname){$_cname = $cname;}
public function setImg($img){$_img = $img;}

//$cidをparentにもつ(子)カテゴリの一覧を表示
public static function showList($cid){
$ctgAry = array();
$db = new mysqli("localhost","root","pass","php5");
$rs = $db->query("select * from src_category where parent=".$cid);
while(($row = $rs->fetch_array(MYSQLI_ASSOC)) != FALSE){
$ctgObj = new Category;
$ctgObj -> setCid($row['cid']);
$ctgObj -> setCname($row['cname']);
$ctgObj -> setImg($row['img']);
$ctgAry[] = $ctgObj;
}
$db->close;
print_r($ctgAry)."<br><br>";//�@
print "<br><br>".$ctgAry[0];//�A
}
}
0367nobodyさん2007/05/16(水) 22:18:48ID:???
ささいなことだけど
>対応データ数分

日本語おかしいよ
0368nobodyさん2007/05/16(水) 22:21:32ID:???
>>366
$this抜け?
public function setCid($cid){$_cid = $cid;}
public function setCname($cname){$_cname = $cname;}
public function setImg($img){$_img = $img;}
0369nobodyさん2007/05/16(水) 22:31:26ID:???
>>366
非常に読みにくい。
showListメソッドの返り値が○○であることを想定しているのですが
××が返ってきます。
$cfgAry配列にキーはセットされていますが値が入っていません。
原因が分からないので教えてください。
でおk。30点。
0370nobodyさん2007/05/16(水) 22:39:25ID:AwoOmWos
申し訳ありません。質問させてください。
記入項目のたくさんある掲示板スクリプトはないでしょうか?
普通は名前、メアド、URL、本文程度ですが、この項目が5つとか6つとか
自由に増やしたりできるようなスクリプトです。
探すと以外になくて困り果てています。どうかお願い致します。
0371nobodyさん2007/05/16(水) 22:42:25ID:???
>>370
【CGI】こんなCGI探してますver.22
http://pc11.2ch.net/test/read.cgi/hp/1166794984/2-3
03723662007/05/16(水) 22:42:49ID:QKxTyLUD
わかりにくくてすみません

現在 print_r($ctgAry)."<br><br>";//�@ の実行結果は以下が返ってきています
Array ( [0] => Category Object ( [_cid:private] => [_cname:private] => [_parent:private] => [_img:private] => )
[1] => Category Object ( [_cid:private] => [_cname:private] => [_parent:private] => [_img:private] => ) )

自分としては、以下のかたちになると思っていたので、なぜ失敗してるのか知りたいのです
Array ( [0] => Category Object ( [_cid:private] =>200 [_cname:private] =>つり [_parent:private] =>100 [_img:private] =>tsuri.jpg )
[1] => Category Object ( [_cid:private] =>300 [_cname:private] =>読書 [_parent:private] =>100 [_img:private] =>book.jpg ) )

どなたかよろしくお願いします
0373nobodyさん2007/05/16(水) 22:43:35ID:???
>>371
ありがとうございます。
そちらで聞いてみます><
0374nobodyさん2007/05/16(水) 22:53:19ID:???
>>366
public function setCid($cid){$_cid = $cid;}

$_cid じゃなくて $this->_cid じゃないの
0375nobodyさん2007/05/16(水) 23:11:39ID:???
>>372
せっかく答えてくれた368はスルーか。カワイソス・・・
0376nobodyさん2007/05/16(水) 23:28:19ID:M7GC2N8v
はじめまして、質問です。

preg_matchを使って文字列の半角英数記号をチェックしています。

if (preg_match("/^[a-zA-Z0-9\s\(\)\_\-\+\!\?\.\,]+$/", $str)) {
echo ("Error");
}

基本的に問題無く動いているのですが、何故か文字列に”,”(カンマ)が含まれると
エラーとなりません。

ググってもそれっぽいのが見付かりません・・・orz
どうかよろしくお願いします。
0377nobodyさん2007/05/16(水) 23:30:27ID:???
カンマはエスケープいらんと違う?
03783662007/05/16(水) 23:36:31ID:QKxTyLUD
>>368 >>374-375

すみません、>>368さんのアドバイスが良くわからなくて考えてました
できました! って言っても>>374さんの言うとおりにしただけですけど…
とにかく助かりました 
ちょっと変数の参照方法と有効範囲を理解してないみたいなんで勉強しなおします
ありがとうございました
0379nobodyさん2007/05/16(水) 23:41:32ID:???
>>378
変数のスコープとかより
「オブジェクト指向」「クラス」「プロパティ」「メソッド」
について勉強したほうがいいと思うよ。
それら知らないでクラス使っても意味ないし。
03803762007/05/16(水) 23:48:24ID:M7GC2N8v
>>377
さっそくの返事ありがとうございます。
カンマの前のエスケープを外して試してみましたが、
結果は変わりませんでした。
0381nobodyさん2007/05/16(水) 23:50:22ID:???
>>376
試してみた

$str = "sdavdszfba,bgdsdc";

if (preg_match("/^[a-zA-Z0-9\s\(\)\_\-\+\!\?\.\,]+$/", $str)) {
echo ("Error");
}

出力「Error」
03823662007/05/16(水) 23:55:06ID:QKxTyLUD
>>379
ですよねー
でも、勉強して本読んでもぴんと来ないんで、とりあえず作ってみるかという状況です
右往左往しながら身に着けたいと思います
ありがとうございました
03833762007/05/17(木) 00:28:06ID:CgLLPlaf
>>381
試して頂き、ありがとうございます。

自分でもいろいろ調べてみたところ、
どうやらカンマを?と変換していることが原因でした。
(表示すると、カンマで表示されるので気が付きませんでした。)

そこでこの”?”をpreg_matchで引っ掛ける方法を探しましたが
見付かりませんでした。

どなたかよろしくお願いします。
0384nobodyさん2007/05/17(木) 00:31:35ID:???
いやいや、とりあえず?に変換しない方法を考えろよw
0385nobodyさん2007/05/17(木) 00:34:11ID:???
BBS_UNICODE=change のせいでマルチバイト疑問符になっただけ?
でも、>>384。
03863762007/05/17(木) 00:42:05ID:CgLLPlaf
>>384-385
アドバイスありがとうございます。

383では?と変換なっていますが、カンマを半角の”&#44;”に変換していました。
384さんの言う通り、変換せず、preg_matchを行うことで解決しました。

皆さん、ありがとうございました!!
0387nobodyさん2007/05/17(木) 01:46:20ID:???
皆さんって回答してない俺もふくまれる?

0388nobodyさん2007/05/17(木) 01:50:18ID:???
あたりまえだろ。お前が一番頼りになる
0389nobodyさん2007/05/17(木) 02:43:19ID:fM6fqwb/
くだらない質問ですみません。

以下のIF文を簡潔に書きたいのですが、どうすればよいでしょうか・・・。
if($id !=3 and $id !=4 and $id != 7 and $id !=10 ){
略
}


こんな感じでうま〜くまとめたいなと思っているのですが当然エラーになってしまいます。
if($id !=(3,4,7,10)){
}

ググろうにもどんな言葉で検索すればよいのか分からず・・・。
よろしくお願いします。
0390nobodyさん2007/05/17(木) 03:17:54ID:???
$array = array(3,4,7,10);
if(in_array($id, $os)) ){

}
03913902007/05/17(木) 03:19:29ID:???
>>389
あくまでもヒントだ。
あとは自分で改造しろ
03923892007/05/17(木) 03:36:48ID:fM6fqwb/
なるほど。
in_arrayという関数があるのだね。

どうもありがとー!^^
0393nobodyさん2007/05/17(木) 03:41:13ID:???
switch ($id) {
 case 3:
 case 4:
 case 7:
 case 10:
  break;
 default:
  ...
}
簡潔というか 最初の書き方が一番素直で 何をしたいのかわかりやすい
(読みやすい)と思うけども
03943892007/05/17(木) 03:44:31ID:fM6fqwb/
>393さん
どうもありがとう。
これでもよかったのですが、今後アクションをしたくない$idが増えることもあってカンタンに数字を追加できるような仕組みにしたいなと思っていたのです。

ちょうど今、in_array使って解決しました!
0395nobodyさん2007/05/17(木) 06:57:02ID:kwGc8Yxo

コードに問題があって、たとえばforで無限ループしたりでCPU使用率が100%担った場合があります
そういうケースを防ぐためのphp.iniかapacheで設定ってありませんか?

環境はWinXP、PHP5.2..2、Apache2.0.59です。
0396nobodyさん2007/05/17(木) 09:50:12ID:???
>>395
基本的にPHPには無限ループ対策としてデフォルトで30秒のタイムアウトが設定されていたはず
任意で設定したいならプログラム内で
set_time_limit(秒数);
で設定できる
※ただしexecなどでシステムのセッション増やして負荷かける場合は別
0397nobodyさん2007/05/17(木) 09:57:36ID:tXPJ1ejE
phpには便利な配列関数が用意されているのですが
多次元配列で使うには、ほとんど一度一次元に落とし込んでからしか使えないのでしょうか?

※女性のポイントの合計は?
array_sum($a) ... $a[0][women][piont]

二次元以上の特定キーの合計を求めたり…
0398nobodyさん2007/05/17(木) 09:58:32ID:kwGc8Yxo
ありがとうございます。
レンタルサーバでCGIなどでCPUに一秒以上負荷かけると処理を停止するようなことをどこかで見たので
1秒に設定しました
0399nobodyさん2007/05/17(木) 09:59:30ID:???
>>397
出会い系スレの>>1乙
巣に帰れクズ
0400nobodyさん2007/05/17(木) 10:13:51ID:???
>>397
http://jp.php.net/manual/ja/function.array-walk-recursive.php
0401nobodyさん2007/05/17(木) 10:54:18ID:???
>>399
フイタ
>>400
それは拾わなくなるってことですか?
0402nobodyさん2007/05/17(木) 10:59:04ID:???
>>401
拾わなくなるって?
0403nobodyさん2007/05/17(木) 16:11:58ID:M9OeXCs3
質問です
配列$sampleAry に対して print_r($sampleAry); を実行したら以下の結果を得ました
Array ( [0] => Category Object ( [_cid:private] => 120 [_cname:private] => 読書 [_parent:private] => [_img:private] => c120.gif )
[1] => Category Object ( [_cid:private] => 110 [_cname:private] => つり [_parent:private] => [_img:private] => c110.gif ) )

この配列から 読書 という結果を得るには、どうしたらいいんでしょう?
print_r($sampleAry[0]["cname"];
としてもエラーが出るのですが…
0404nobodyさん2007/05/17(木) 16:14:27ID:???
配列じゃなくね?wwwwwwwww
0405nobodyさん2007/05/17(木) 16:49:16ID:???
>>403
オブジェクトのprivate変数は直接アクセスできないんじゃないかな
0406nobodyさん2007/05/17(木) 16:52:58ID:???
>>403
print_r($sampleAry[0]->cname);
とかやってみて
多分
Fatal error: Cannot access private property 〜
オブジェクトに値を取得するメソッドが用意されてるはずだよ
0407nobodyさん2007/05/17(木) 16:55:10ID:???
web上の管理画面からcronの時間設定をかえれるプログラムを作成
したいのですがどうしたらいいのでしょうか?

>>403
echo $sampleAry["0"]->_cname; かな?
0408nobodyさん2007/05/17(木) 17:01:29ID:???
>>407
cronのファイルを読んで変えて書き込めばいいんじゃん?
0409nobodyさん2007/05/17(木) 17:13:59ID:???
>>408
/var/spool/cron
のファイルを書き換えるんですね
ありがとう
0410nobodyさん2007/05/17(木) 17:55:45ID:LNZtxJHm
ディレクトリ名を取得したいのですが、
何か方法はありませんか?

開いているファイルのディレクトリ名を取得しようと
dirname("./")を試しましたがダメでした。
インクルードファイルで取得したいので、
個別にファイル名を入力できません。

ファイル名を別に取得し、入力すれば良いかもしれませんが、
何かもっとスマートなやり方があるような気もします。
ご存知の方がいましたら、ご教授お願いします。
0411nobodyさん2007/05/17(木) 18:05:05ID:???
dirname(__FILE__)は?
0412nobodyさん2007/05/17(木) 18:05:14ID:???
>>410
ワーキングディレクトリの取得なら
getcwd( );
0413nobodyさん2007/05/17(木) 18:32:08ID:LNZtxJHm
>>412
>>411

すみません、記述不足でした。
カレントディレクトリ名とは別に、
一階層上のディレクトリ名も取得できるようにしたいのですが、
それも含めて方法はありませんか?
0414nobodyさん2007/05/17(木) 18:38:41ID:???
>>413
dirname(getcwd());
ということではないのかな
04154032007/05/17(木) 18:42:59ID:M9OeXCs3
>>404-407
ありがとうございました
[0] => Category Object ( [_cid:private] => 120 [_cname:private] => 読書 [_parent:private] => [_img:private] => c120.gif )
は配列じゃないんですね オブジェクトになるんですね。理解できてない点がわかって良かったです。
あと、>>406-407 さんのやり方で変数にアクセスする方法もわかりました。
とても助かりました。ありがとう!
0416nobodyさん2007/05/17(木) 19:00:52ID:???
incされたhoge.phpファイルのディレクトリをhoge.phpだけで知りたいってこと?
だとしたら無理じゃないか?includeは文字列とってきてevalしてるだけだと思うし

chdir("mydir");
include(."hoge.php");
//hoge.phpでdirname(getcwd());
chdir("../");
0417nobodyさん2007/05/17(木) 19:18:57ID:LNZtxJHm
>>416
getcwd( );がまったく初見でしたので、
これについてもう少し勉強してから来ます。
ググッた感じでは何とかなりそうです。
ありがとうございました。
0418nobodyさん2007/05/17(木) 19:52:40ID:LNZtxJHm
すみません、やはり予想の結果と違いました。

あくまでディレクトリ名のみを抽出したいのです。
例えば
ttp://www2.2ch.net/test/2ch.html
で test というディレクトリ名のみを抽出するにはどうしたら良いでしょうか?

現時点で思いつく方法は
dirname(getcwd()); で抽出した
ttp://www2.2ch.net/testを
explodeを使い「/」指定で削り取るというものですが、
これが最も簡潔な方法でしょうか?
0419nobodyさん2007/05/17(木) 20:04:26ID:???
なぜファイルパスとURLをごっちゃにしてるのか不明
0420nobodyさん2007/05/17(木) 20:15:27ID:???
>>418
getcwd()だと
/DocumentRoot/test
が得られる
0421nobodyさん2007/05/17(木) 20:31:51ID:???
か、どうかは別だろ。script実行時のカレントディレクトリだから。
0422nobodyさん2007/05/17(木) 20:40:48ID:Yw1DLo3E
PHP開発についての質問なんですが、
PHPエディタでプロジェクトでの開発って、秀丸などのような開発に比べて
どんなメリットがあるのでしょうか?
0423nobodyさん2007/05/17(木) 20:59:30ID:???
>>422
適当なプロジェクトで使って見れば?
小規模のスクリプトはPHPエディタ使ってるけど、
シンプルでそこそこ使いやすいよ。
0424nobodyさん2007/05/17(木) 21:45:37ID:???
>>422

最強のPHPエディタはなに?
http://pc11.2ch.net/test/read.cgi/php/1133785416/561

561 名前:nobodyさん[sage] 投稿日:2007/05/17(木) 20:34:54 ID:???
補完はタイプの速度とか面倒だからって言う意味じゃなくて、
タイポを防ぐために使うって感じかな。

vim、emacsと比較した時の秀丸の優位性ってなに?
秀丸ってデフォでPHP色分けとか補完って出来る?

0425nobodyさん2007/05/17(木) 22:23:58ID:Yw1DLo3E
>>423
とりあえずそうしてみることにします

>>424
よくわからないレスです・・・
0426nobodyさん2007/05/18(金) 03:02:03ID:ZEXAtg4A
PHPの変数の大きさについての質問です。

ある変数が何バイトか調べたい場合には何を使えばよいのでしょうか?
マニュアルによるとPHPでsizeof()ってcount()のエイリアスと書かれていたので。。。
0427nobodyさん2007/05/18(金) 03:03:50ID:???
>>426
「変数の大きさ」とは?
文字列の長さなら、strlenでバイト数を出せるけど。
0428nobodyさん2007/05/18(金) 03:05:05ID:???
>>427
変数が具体的に何バイトかです。
0429nobodyさん2007/05/18(金) 03:10:36ID:???
うああ、そうでした、半角英数字ならちょうど一文字で1バイトでしたね。。。
解決しました。ありがとうございました
0430nobodyさん2007/05/18(金) 03:10:51ID:???
>>428って馬鹿だな
strlenでいいんだよハゲ
それとID消すな
0431nobodyさん2007/05/18(金) 03:21:22ID:???
>>430
426 = 428 = 429ですが
IDの付け方がわからないです…
0432nobodyさん2007/05/18(金) 03:25:07ID:???
ID出したら負け
0433nobodyさん2007/05/18(金) 03:49:33ID:???
ID出さない奴に回答したら負けかなと思ってる
0434nobodyさん2007/05/18(金) 04:44:42ID:???
>>431
メール欄の入力を消せ。
なんで426でできてんのに分からなくなるんだ。
0435nobodyさん2007/05/18(金) 04:50:45ID:???
もうすこし泳がしてから言えばよかったのにww
つまんね
0436nobodyさん2007/05/18(金) 10:37:34ID:???
>>431
>IDの付け方がわからないです…

phpの前に自己能力あげろよ
0437nobodyさん2007/05/18(金) 13:12:16ID:+e1CHg4F
フレームワークってライブラリが違うだけ?
0438nobodyさん2007/05/18(金) 13:15:25ID:???
え?
0439nobodyさん2007/05/18(金) 13:17:47ID:???
>>437に質問する
(2ちゃんねるの)板ってレスの内容が違うだけ?
0440nobodyさん2007/05/18(金) 13:21:54ID:???
なにがおきたの?
0441nobodyさん2007/05/18(金) 14:06:16ID:eSvvOlXE
htmlspecialcharsで変換した特殊文字(”など)を
表示するページでは元に戻す方法ってありませんかね?
0442nobodyさん2007/05/18(金) 14:13:39ID:???
>>441
htmlspecialcharsで変換した文字を元に戻したい文字を指定して置換できる関数を使う
ほかにもっと簡単なやりかたが文字列関数にあるけど関数リファレンス読めばここで質問しないはずなんだけどなぁ
0443nobodyさん2007/05/18(金) 14:17:35ID:???
htmlspecialchars_decodeですね。ありがとうございました。
0444nobodyさん2007/05/18(金) 16:07:43ID:oLfZwhqN
メール鯖に接続して、どこから対象のアドレスにメールするとかできたっけ?
04454442007/05/18(金) 16:21:39ID:oLfZwhqN
PHP.iniで外部鯖に設定してmb_send_mailでできるみたいですね。

ですが、送信しようとしたらエラーが発生しました・・・

Failed to connect to mailserver at "sd006.just-size.net" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

PHP.iniの変更箇所は、SMTP、smtp_port、sendmail_fromだけで良いのでしょうか?
0446nobodyさん2007/05/18(金) 16:41:26ID:???
その外部のSMTPに蹴られてんじゃないの
0447nobodyさん2007/05/18(金) 16:51:38ID:oLfZwhqN
>>446
かもしれないです。
smtp.mail.yahoo.co.jpで試してみてもダメでした。
アカウントとパスワードを設定する項目がないのですが、どういう風に設定すれば良いのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています