【PHP】下らねぇ質問はここに書き込みやがれ 46
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/12(土) 16:43:57ID:???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カテゴリ)の各スレで
0369nobodyさん
2007/05/16(水) 22:31:26ID:???非常に読みにくい。
showListメソッドの返り値が○○であることを想定しているのですが
××が返ってきます。
$cfgAry配列にキーはセットされていますが値が入っていません。
原因が分からないので教えてください。
でおk。30点。
0370nobodyさん
2007/05/16(水) 22:39:25ID:AwoOmWos記入項目のたくさんある掲示板スクリプトはないでしょうか?
普通は名前、メアド、URL、本文程度ですが、この項目が5つとか6つとか
自由に増やしたりできるようなスクリプトです。
探すと以外になくて困り果てています。どうかお願い致します。
0371nobodyさん
2007/05/16(水) 22:42:25ID:???【CGI】こんなCGI探してますver.22
http://pc11.2ch.net/test/read.cgi/hp/1166794984/2-3
0372366
2007/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 ) )
どなたかよろしくお願いします
0374nobodyさん
2007/05/16(水) 22:53:19ID:???public function setCid($cid){$_cid = $cid;}
$_cid じゃなくて $this->_cid じゃないの
0376nobodyさん
2007/05/16(水) 23:28:19ID:M7GC2N8vpreg_matchを使って文字列の半角英数記号をチェックしています。
if (preg_match("/^[a-zA-Z0-9\s\(\)\_\-\+\!\?\.\,]+$/", $str)) {
echo ("Error");
}
基本的に問題無く動いているのですが、何故か文字列に”,”(カンマ)が含まれると
エラーとなりません。
ググってもそれっぽいのが見付かりません・・・orz
どうかよろしくお願いします。
0377nobodyさん
2007/05/16(水) 23:30:27ID:???0378366
2007/05/16(水) 23:36:31ID:QKxTyLUDすみません、>>368さんのアドバイスが良くわからなくて考えてました
できました! って言っても>>374さんの言うとおりにしただけですけど…
とにかく助かりました
ちょっと変数の参照方法と有効範囲を理解してないみたいなんで勉強しなおします
ありがとうございました
0379nobodyさん
2007/05/16(水) 23:41:32ID:???変数のスコープとかより
「オブジェクト指向」「クラス」「プロパティ」「メソッド」
について勉強したほうがいいと思うよ。
それら知らないでクラス使っても意味ないし。
0380376
2007/05/16(水) 23:48:24ID:M7GC2N8vさっそくの返事ありがとうございます。
カンマの前のエスケープを外して試してみましたが、
結果は変わりませんでした。
0381nobodyさん
2007/05/16(水) 23:50:22ID:???試してみた
$str = "sdavdszfba,bgdsdc";
if (preg_match("/^[a-zA-Z0-9\s\(\)\_\-\+\!\?\.\,]+$/", $str)) {
echo ("Error");
}
出力「Error」
0382366
2007/05/16(水) 23:55:06ID:QKxTyLUDですよねー
でも、勉強して本読んでもぴんと来ないんで、とりあえず作ってみるかという状況です
右往左往しながら身に着けたいと思います
ありがとうございました
0383376
2007/05/17(木) 00:28:06ID:CgLLPlaf試して頂き、ありがとうございます。
自分でもいろいろ調べてみたところ、
どうやらカンマを?と変換していることが原因でした。
(表示すると、カンマで表示されるので気が付きませんでした。)
そこでこの”?”をpreg_matchで引っ掛ける方法を探しましたが
見付かりませんでした。
どなたかよろしくお願いします。
0384nobodyさん
2007/05/17(木) 00:31:35ID:???0386376
2007/05/17(木) 00:42:05ID:CgLLPlafアドバイスありがとうございます。
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:???if(in_array($id, $os)) ){
}
0392389
2007/05/17(木) 03:36:48ID:fM6fqwb/in_arrayという関数があるのだね。
どうもありがとー!^^
0393nobodyさん
2007/05/17(木) 03:41:13ID:???case 3:
case 4:
case 7:
case 10:
break;
default:
...
}
簡潔というか 最初の書き方が一番素直で 何をしたいのかわかりやすい
(読みやすい)と思うけども
0394389
2007/05/17(木) 03:44:31ID:fM6fqwb/どうもありがとう。
これでもよかったのですが、今後アクションをしたくない$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:???基本的にPHPには無限ループ対策としてデフォルトで30秒のタイムアウトが設定されていたはず
任意で設定したいならプログラム内で
set_time_limit(秒数);
で設定できる
※ただしexecなどでシステムのセッション増やして負荷かける場合は別
0397nobodyさん
2007/05/17(木) 09:57:36ID:tXPJ1ejE多次元配列で使うには、ほとんど一度一次元に落とし込んでからしか使えないのでしょうか?
※女性のポイントの合計は?
array_sum($a) ... $a[0][women][piont]
二次元以上の特定キーの合計を求めたり…
0398nobodyさん
2007/05/17(木) 09:58:32ID:kwGc8YxoレンタルサーバでCGIなどでCPUに一秒以上負荷かけると処理を停止するようなことをどこかで見たので
1秒に設定しました
0400nobodyさん
2007/05/17(木) 10:13:51ID:???http://jp.php.net/manual/ja/function.array-walk-recursive.php
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:???0406nobodyさん
2007/05/17(木) 16:52:58ID:???print_r($sampleAry[0]->cname);
とかやってみて
多分
Fatal error: Cannot access private property 〜
オブジェクトに値を取得するメソッドが用意されてるはずだよ
0407nobodyさん
2007/05/17(木) 16:55:10ID:???したいのですがどうしたらいいのでしょうか?
>>403
echo $sampleAry["0"]->_cname; かな?
0410nobodyさん
2007/05/17(木) 17:55:45ID:LNZtxJHm何か方法はありませんか?
開いているファイルのディレクトリ名を取得しようと
dirname("./")を試しましたがダメでした。
インクルードファイルで取得したいので、
個別にファイル名を入力できません。
ファイル名を別に取得し、入力すれば良いかもしれませんが、
何かもっとスマートなやり方があるような気もします。
ご存知の方がいましたら、ご教授お願いします。
0411nobodyさん
2007/05/17(木) 18:05:05ID:???0413nobodyさん
2007/05/17(木) 18:32:08ID:LNZtxJHm>>411
すみません、記述不足でした。
カレントディレクトリ名とは別に、
一階層上のディレクトリ名も取得できるようにしたいのですが、
それも含めて方法はありませんか?
0415403
2007/05/17(木) 18:42:59ID:M9OeXCs3ありがとうございました
[0] => Category Object ( [_cid:private] => 120 [_cname:private] => 読書 [_parent:private] => [_img:private] => c120.gif )
は配列じゃないんですね オブジェクトになるんですね。理解できてない点がわかって良かったです。
あと、>>406-407 さんのやり方で変数にアクセスする方法もわかりました。
とても助かりました。ありがとう!
0416nobodyさん
2007/05/17(木) 19:00:52ID:???だとしたら無理じゃないか?includeは文字列とってきてevalしてるだけだと思うし
chdir("mydir");
include(."hoge.php");
//hoge.phpでdirname(getcwd());
chdir("../");
0417nobodyさん
2007/05/17(木) 19:18:57ID:LNZtxJHmgetcwd( );がまったく初見でしたので、
これについてもう少し勉強してから来ます。
ググッた感じでは何とかなりそうです。
ありがとうございました。
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:???0421nobodyさん
2007/05/17(木) 20:31:51ID:???0422nobodyさん
2007/05/17(木) 20:40:48ID:Yw1DLo3EPHPエディタでプロジェクトでの開発って、秀丸などのような開発に比べて
どんなメリットがあるのでしょうか?
0423nobodyさん
2007/05/17(木) 20:59:30ID:???適当なプロジェクトで使って見れば?
小規模のスクリプトはPHPエディタ使ってるけど、
シンプルでそこそこ使いやすいよ。
0424nobodyさん
2007/05/17(木) 21:45:37ID:???最強のPHPエディタはなに?
http://pc11.2ch.net/test/read.cgi/php/1133785416/561
561 名前:nobodyさん[sage] 投稿日:2007/05/17(木) 20:34:54 ID:???
補完はタイプの速度とか面倒だからって言う意味じゃなくて、
タイポを防ぐために使うって感じかな。
vim、emacsと比較した時の秀丸の優位性ってなに?
秀丸ってデフォでPHP色分けとか補完って出来る?
0426nobodyさん
2007/05/18(金) 03:02:03ID:ZEXAtg4Aある変数が何バイトか調べたい場合には何を使えばよいのでしょうか?
マニュアルによるとPHPでsizeof()ってcount()のエイリアスと書かれていたので。。。
0429nobodyさん
2007/05/18(金) 03:10:36ID:???解決しました。ありがとうございました
0432nobodyさん
2007/05/18(金) 03:25:07ID:???0433nobodyさん
2007/05/18(金) 03:49:33ID:???0435nobodyさん
2007/05/18(金) 04:50:45ID:???つまんね
0437nobodyさん
2007/05/18(金) 13:12:16ID:+e1CHg4F0438nobodyさん
2007/05/18(金) 13:15:25ID:???0440nobodyさん
2007/05/18(金) 13:21:54ID:???0441nobodyさん
2007/05/18(金) 14:06:16ID:eSvvOlXE表示するページでは元に戻す方法ってありませんかね?
0442nobodyさん
2007/05/18(金) 14:13:39ID:???htmlspecialcharsで変換した文字を元に戻したい文字を指定して置換できる関数を使う
ほかにもっと簡単なやりかたが文字列関数にあるけど関数リファレンス読めばここで質問しないはずなんだけどなぁ
0443nobodyさん
2007/05/18(金) 14:17:35ID:???0444nobodyさん
2007/05/18(金) 16:07:43ID:oLfZwhqN0445444
2007/05/18(金) 16:21:39ID:oLfZwhqNですが、送信しようとしたらエラーが発生しました・・・
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:???0447nobodyさん
2007/05/18(金) 16:51:38ID:oLfZwhqNかもしれないです。
smtp.mail.yahoo.co.jpで試してみてもダメでした。
アカウントとパスワードを設定する項目がないのですが、どういう風に設定すれば良いのでしょうか?
0449nobodyさん
2007/05/18(金) 17:08:39ID:GewnQXcHだが、何事も出来ることを確認してからスレに書き込む姿勢は良いと思う
0450nobodyさん
2007/05/18(金) 17:17:55ID:oLfZwhqNimap_openでメール鯖にアクセスしようと思ったのですが、
Couldn't open stream {pop.mail.yahoo.co.jp:25/pop3}INBOX
とエラーが返ってきます。
SSL認証とかそういうのが必要なのでしょうか?
0451nobodyさん
2007/05/18(金) 17:28:26ID:???急いであれこれできるようになろうとせずに、もっと少しずつ覚えていけばいいと思うよ。
0452nobodyさん
2007/05/18(金) 17:31:32ID:???プロバイダのSMTPを使おうとあれこれ悩むより
自前でSMTP立てた方がいいと思う
0454nobodyさん
2007/05/18(金) 17:32:02ID:oLfZwhqN0455nobodyさん
2007/05/18(金) 17:38:15ID:oLfZwhqNIPが固定じゃないから外部とメールのやり取りができない・・・
0457nobodyさん
2007/05/18(金) 18:09:02ID:oLfZwhqNそれでもlocal外での送受信はできませんでした
0459nobodyさん
2007/05/18(金) 18:34:40ID:???つ[チェックリスト]
・DDNSが対応してない => 対応したところに移れ
・ルーターのポート設定がわからん => とりあえずDMZで設定してテスト
・メル鯖の設定がわからん => メール関連のスレヘ…
・メール飛ばしてもエラー番号がついて戻ってくる => おそらくメル鯖設定が悪い番号ググれ
以上
0460nobodyさん
2007/05/18(金) 18:38:38ID:oLfZwhqN前に聞いたときはプロパイダの問題といわれたんだが・・・
とりあえずもう一度調べてきます
有難う御座いました
0461nobodyさん
2007/05/18(金) 19:04:28ID:???0462nobodyさん
2007/05/18(金) 19:26:05ID:???Apache/2.0.52
PHP 5.1.6
なぜか
input type="file"
のPOSTデータだけが渡らないのです。他のPOSTデータは渡ります。
他のいくつかのサーバで試したところ、問題なく動いてるのでApacheの
設定だと思うのですが、どなたかお知恵貸してください。
0464441
2007/05/18(金) 19:36:44ID:eSvvOlXEPHP4なので、htmlspecialchars_decodeが使えない事が分かりました・・。
PHP4のサーバで使えて、htmlspecialcharsで変換する前の状態に戻す
方法はありませんでしょうか?
0466nobodyさん
2007/05/18(金) 19:45:01ID:???http://jp.php.net/htmlspecialchars-decode
のUser Contributed Notesにコードそのものが書いてある
0467nobodyさん
2007/05/18(金) 19:58:35ID:???それが・・・・
Array
(
[name] => test.gif
[type] =>
[tmp_name] =>
[error] => 7
[size] => 0
)
なんですわ。。。error 7って・・・
■ このスレッドは過去ログ倉庫に格納されています