[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/17 00:35 / Filesize : 244 KB / Number-of Response : 996
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】下らねぇ質問はID出して書き込みやがれ 82



1 名前:nobodyさん [2009/03/09(月) 02:14:28 ID:HyrthkeE]
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 81
pc11.2ch.net/test/read.cgi/php/1234958956/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

139 名前:nobodyさん mailto:sage [2009/03/12(木) 17:18:46 ID:???]
>>136
カテゴリ別一覧とかカレンダーとか月別一覧とか

生きた化石がこんなところにもいるんですね

140 名前:nobodyさん [2009/03/12(木) 17:39:53 ID:w9p/Xb/s]
カテゴリ別一覧の仕組みがいまいちわからないんですけど
どのような仕組みでしょうか?

141 名前:nobodyさん mailto:sage [2009/03/12(木) 17:50:28 ID:???]
SELECT title,body,entrydate FROM entry WHERE categoryid=1;

142 名前:nobodyさん mailto:sage [2009/03/12(木) 17:52:19 ID:???]
>>139
あなたは使いにくいものはかっこいいと勘違いしてるクリエイターさんですね

143 名前:nobodyさん [2009/03/12(木) 19:04:33 ID:y65Mhsc8]
配列から要素を抜き出し、その分を詰めたいのですが、どうするのがスマートですか?
$array = array('a','b','c');
$str = pick($array,1);

$array : array('a','c')
$str : 'b'
のような動作をさせたいです

144 名前:nobodyさん mailto:sage [2009/03/12(木) 19:11:59 ID:???]
>>143
$str = $array[1];
unset($array[1]);

145 名前:nobodyさん mailto:sage [2009/03/12(木) 19:26:26 ID:???]
unset使うコーディングはクズだな

146 名前:nobodyさん mailto:sage [2009/03/12(木) 19:26:42 ID:???]
>>143
list($str) = array_splice($array, 1, 1);

>>144
unsetは数値キーを再割り当てしない

147 名前:nobodyさん mailto:sage [2009/03/12(木) 19:44:54 ID:???]
>>146
ありがとうございました



148 名前:nobodyさん [2009/03/12(木) 21:50:39 ID:Y3aY0Tvp]
PHP+MYSQLで、MySQL寄りの質問になると思うんですが、
MySQLのスレッドがなかったので…。
スレ違いなら申し訳ないです。


[testテーブル]
no(オートインクリメント)
name

1・フォームからnameデータを受け取り、testテーブルにINSERTで入力。
2・その後すぐに、1の入力で作成されたレコードのnoを引き出す。

これを行うのに最適な方法はなんでしょう?
nameはキーではなく重複する可能性があるのでnameでのselectは不可です。

とりあえず2で
select * from test order by no desc limit 0,1
で取り出す方法を考えたんですが、
その場合1と2の間に一貫性?を持たせなければなりません。
この一貫性を保持させる方法がMySQLにあるのかPHPにあるのか・・・。
もしこの方法が最適なら一貫性を持たせる方法
(できれば例のコード)を教えてください。
また他に最適な方法があるならぜひお願いします。

149 名前:nobodyさん mailto:sage [2009/03/12(木) 21:53:28 ID:???]
>>148
説明
int mysql_insert_id ([ resource $link_identifier ] )
直近の INSERT クエリにより AUTO_INCREMENT カラム用に生成された ID を取得します。


150 名前:nobodyさん [2009/03/12(木) 22:12:31 ID:w9p/Xb/s]
classの継承についてちょとよく分からないので質問です。

class Main{
function dbList(){
// MySQLから特定のテーブルリスト一覧を取得する
}
}

class Sub extends Main{
function output(){
$list = $this->dbList(); // Mainからテーブルリストを取得
}
function output2(){
$list = $this->dbList();
}
}

こういうclassがあったとして、Sub内のoutput()を実行すると
MainのdbList()を実行することになりますよね?
そしてoutput2でdbList()を使いたい場合、再度実行する事になりますよね?
そうではなくて、Mainで設定した内容を使い回しするような事って出来ないのでしょうか?

151 名前:nobodyさん mailto:sage [2009/03/12(木) 22:29:49 ID:???]
>150
function dbList(){
 if(false === isset($this->dbList){
  $this->dbList = mysql_fetch_なんとか(); 
 }
 return $this->dbList;
}
遅延初期化とか呼ばれるテクニックで、割と定石。
使いすぎるとカオスになるので、どの値をどのクラス/インスタンスで保持するかは慎重に検討したほうがいい。

152 名前:nobodyさん [2009/03/12(木) 23:11:07 ID:Y3aY0Tvp]
>>149
まずint mysql_insert_id ([ resource $link_identifier ] )
について調べてみます。
助言本当にありがとうございます。

153 名前:nobodyさん [2009/03/12(木) 23:53:49 ID:ZuCT+g0F]
file.txtにcsvで以下のように記録しました
これからファイルからデータベースにデータを移し替えたいと思ってます

id,name,age
1,木村,10
2,佐藤,20
3,木下,30
4,山田,40
5,坂本,50



mysqlを使用した場合でダイレクトにid2の佐藤さんのデータのみを取得するにはどうしたらよろしいでしょうか?
ファイルですとforeachでまわしてexplodeで区切る感じで、データを全部読み込んで処理させてるのですが
データベース使ってもデータは全部読み込んでまわして取得するのでしょうか?

154 名前:nobodyさん [2009/03/12(木) 23:59:52 ID:qegdPp88]
タブ区切りのbbs.cfgからexplodeで設定値を取り出す
このとき、配列の要素が100個ぐらいだとして、
こういう場合はいちいち使うものに変数名をつけるか、
それとも配列の[数字]でつかうのか、
どっちが一般的なんでしょ?
こういう場合に限らず、一般的に他の言語とかでも
たくさんの値を使う場合はどういう管理をしてるんでしょう??

155 名前:nobodyさん mailto:sage [2009/03/13(金) 00:15:24 ID:???]
>>153
データーベースの場合は、
WHERE id=2
とかって指定すれば、id=2のデーターだけ
読み込める。

156 名前:nobodyさん mailto:sage [2009/03/13(金) 00:27:47 ID:???]
>154
個数はあんま関係ないな。
論理的に「同じようなものが100個」ならば、100要素の配列を使う、というだけ。
例えば>153のデータが100行ならば、人間が100人なわけで、100要素の配列に格納するのは理にかなっているわけだ。

だが、列が3列だからといって、各行を3要素の配列で表現したりはしない。idと年齢は別の概念だからな。
たとえスリーサイズとか干支とか住所とかで各行の要素が何十とあったとしても、数字添字の配列にはしない。
$person[0] = array( 'id' => 1, 'name => '木村', 'age' => 10);
$person[1] = array( 'id' => 2, 'name => '佐藤', 'age' => 20);
みたいな連想配列に格納する。もしくはクラスを使う。

1行ずつ処理する場合も
list($id, $name, $age) = explode(',', $line);
みたいにやった方が、コードが読みやすいはず。

157 名前:nobodyさん mailto:sage [2009/03/13(金) 00:43:01 ID:???]
>>154 >>156
俺は100も200もあって意味とか型とかが同一のデータなら(試験の点数など)、
いちいち列名なんてつけずに数字で扱うけどな。まあどっちもでいいんじゃね



158 名前:nobodyさん [2009/03/13(金) 11:07:13 ID:eI4NlDZU]
classの中で変数を宣言するときvarにしようと思ったのですが
どこかのサイトで、php5はvarは使うな的なことを書いてありました
そのサイトどこか忘れてしまったのですが、varの他に何を使うのが適当なのでしょうか

159 名前:nobodyさん mailto:sage [2009/03/13(金) 11:28:27 ID:???]
>>158
www.php.net/manual/ja/language.oop5.visibility.php
> 注意: キーワード var で変数を宣言する PHP 4 の方法は、
> 互換性を保つために今でもサポートされています (これは public と同じ扱いになります)。
> PHP 5.1.3 より前では、 これを使用すると E_STRICT 警告が発生します。

160 名前:nobodyさん mailto:sage [2009/03/13(金) 13:37:40 ID:???]
PHPである程度の量の文(300KBぐらい)を処理するために
ヒアードキュメントを使っています。
フォームで処理すればコピペの時のスクロールが省けると思いフォームの
POST経由で変数を処理しましたが100KBぐらいしか処理できません。
これはフォームの入力制限等があるからでしょうか?

161 名前:nobodyさん mailto:sage [2009/03/13(金) 14:01:14 ID:???]
>>160
そんなことはないと思うぞ。ブログとか文章が長くて容量がでかいだろ。
おそらく、設計にミスがあるんじゃないか?

162 名前:nobodyさん mailto:sage [2009/03/13(金) 14:14:40 ID:???]
>>153
DBの場合、主にSQL文を使う。その場合なら
SELECT id,name,age FROM テーブル名 WHERE id = 2;
こんな感じのSQLをデータベースに投げることによって、idが2のやつのデータを返してくる。

ファイルよりも細かい検索ができるからいろいろやってみると面白いよ。
詳しくはMySQLのオンラインマニュアルとかSQLの入門サイトを参照のこと。

163 名前:nobodyさん mailto:sage [2009/03/13(金) 14:17:06 ID:???]
>>153
ufcpp.net/study/csharp/ap_ver3.html#linq

164 名前:nobodyさん [2009/03/13(金) 15:02:30 ID:6EGCx2Tu]
PHPで痴漢、いやっ置換する関数などはありますか?

165 名前:nobodyさん mailto:sage [2009/03/13(金) 15:04:59 ID:???]
str_replace
preg_replace

166 名前:nobodyさん [2009/03/13(金) 15:05:04 ID:OOgBCn1Z]
Cache_Liteを使って、
一つのフォルダに50万以上のページのキャッシュを保存してます。
今後も+1万/日のペースで増加します。

やはり、キャッシュを保存するフォルダは適度に分散した方がいいのでしょうか?
動作が遅くなる可能性はありますか。

167 名前:nobodyさん [2009/03/13(金) 15:19:24 ID:DZKgFtDb]
classの中でevalを使う方法を教えていただけませんか
使えなかったらすみません

class hoge{
var $hoge = eval("a");
}

このようなエラーが返ってきます。Parse error: syntax error, unexpected T_EVAL



168 名前:nobodyさん mailto:sage [2009/03/13(金) 15:32:23 ID:???]
eval(笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑

169 名前:nobodyさん mailto:sage [2009/03/13(金) 15:42:15 ID:???]
class hoge{
var $a;

function hoge(){
$this->a = eval...
}
}

こうしてみたら?
eval使ったことないけど。

170 名前:nobodyさん [2009/03/13(金) 16:00:26 ID:XJCetXbH]
自動で、毎日ある時間になったら、スクリプトを実行させたいのですが、
ループ文で四六時中、time()関数を実行して、設定した時間になったら、ループを抜け出しスクリプトを実行する、
というやり方はありですか?

171 名前:nobodyさん mailto:sage [2009/03/13(金) 16:06:22 ID:???]
>>170
おぉ、その手があったか。是非、max_execution_timeの限界ってどのくらいか試してくれ。
でもそのスクリプト、ずーっと実行し続けられる保証がないよね?
そしたらそれを定期的に監視するするスクリプトもそれで動かせばいいね。うんうん。

172 名前:nobodyさん mailto:sage [2009/03/13(金) 16:07:30 ID:???]
現実的には cron だな。

173 名前:nobodyさん [2009/03/13(金) 16:13:19 ID:DZKgFtDb]
>>169
なるほど!
思いつきませんでした。ありがとうございます

>>170
ものすごく負荷がかかると思います。
レンタルサーバーなら、コンパネからcron使えないですかね

174 名前:nobodyさん mailto:sage [2009/03/13(金) 16:19:46 ID:???]
>>170
クライアントPCつけっぱなしか。電気代もったいないな

175 名前:170 [2009/03/13(金) 16:21:18 ID:XJCetXbH]
レスありがとうございます。
まったくの入門者でwinで自鯖をやる予定です。
max_execution_timeというので、負荷がわかるわけですね、勉強になりました。
まだ、試してないんですが、cronだと細かい設定が出来ないですよね?

176 名前:nobodyさん mailto:sage [2009/03/13(金) 16:37:25 ID:???]
>>174
ignore_user_abortがある

>>175
工夫すれば負荷なんてそんなにかかんないよ。
1クライアント分消費するだけ。
max_execution_timeを無限設定して
ignore_user_abortで起動して、forループにSleepを巨大な秒数でセットしてやれば。
あとは、プロセスを一つに絞るのに、どっかにPIDファイル作るとか



177 名前:質問させて下さい [2009/03/13(金) 21:45:58 ID:75Yme90V]
php5.25です。


phpで下記を書いてます。

<?php
$mainrss = array (
'www.123.net/ ○○',

'456.net/ ○○'
);
?>

URLは取得できるようになるんですが、URLの後ろに短い紹介文を書きたいのですが、
カンマじゃなくて何を使ってあげるといいのでしょうか?
○○に短い紹介文を記入したいです
アドバイスをお願いします。



178 名前:nobodyさん mailto:sage [2009/03/13(金) 21:48:38 ID:???]
意味が分からんけど=>でキーにでもすれば?

179 名前:質問させて下さい [2009/03/13(金) 21:50:51 ID:75Yme90V]
>>178

レスありがとうございます。
下記のような感じで記入できたと思うんですが、思い出せなくて。

'www.123.net/','あいうえお',

180 名前:nobodyさん mailto:sage [2009/03/13(金) 21:56:15 ID:???]
.

181 名前:質問させて下さい [2009/03/13(金) 22:06:25 ID:75Yme90V]
>>180
レス有り難うございます!
それでも無理でした

'www.123.net/, '123',

でもだめでした。
難しいですね。

182 名前:nobodyさん mailto:sage [2009/03/13(金) 22:09:21 ID:???]
カンマじゃなくてドットだって

183 名前:質問させて下さい [2009/03/13(金) 22:15:49 ID:75Yme90V]
それでもだめでした。
レスを有り難うございます。
本を買ってきて勉強したいと思います。


184 名前:nobodyさん mailto:sage [2009/03/13(金) 22:25:13 ID:???]
いや、つか何をしたかったの?

185 名前:nobodyさん mailto:sage [2009/03/13(金) 23:25:30 ID:???]
>175
Unix/Linuxならcronだが、同じ事はWindowsではタスクスケジューラで実現する。
(Windows上で動くcronも存在するが)
無限ループを回すよりはこちらのほうがスマート。

「cronだと細かい設定が出来ない」の意味が良く分からんな。
1分以下の精度で実行タイミングを指定したい(12時30分15秒じゃないとダメなんだ!とか)とか言う意味ならcronの仕様上無理だが。
曜日指定とか時刻指定とかなら余裕で可能。cron覚えるのがダルいならスクリプト側で制御してもいいしな。
任意のスクリプトを動作させられるのだから、そのPC上で可能な事はなんだって出来る。

186 名前:nobodyさん mailto:sage [2009/03/13(金) 23:57:37 ID:???]
>>176

>max_execution_timeを無限設定して

笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑

187 名前:nobodyさん mailto:sage [2009/03/14(土) 00:00:05 ID:???]
>>177
$ary = array(
array("url"=>"127.0.0.1","shoukai"=>"しょうかい1"),
array("url"=>"yahoo.co.jp/","shoukai"=>"しょうかい2"),
array("url"=>"2ch.net/","shoukai"=>"しょうかい3")
);



188 名前:170 [2009/03/14(土) 01:07:17 ID:u9lyCe1c]
170です。レスくれた方ありがとうございます。
いまいちよくわからないので、もう少し勉強してからもう一度質問させて頂きます。

189 名前:質問させて下さい [2009/03/14(土) 07:04:33 ID:hOLVrRGN]
>>187
わああああああ!
レスありがとうございました。
このようにやりたかったです。
無事に出来ました!本当にありがとうございます。
phpの本は買って勉強をしておきます。


190 名前:nobodyさん mailto:sage [2009/03/14(土) 07:21:36 ID:???]
>>189
>>178
勉強する前に人の話を聞け


191 名前:nobodyさん mailto:sage [2009/03/14(土) 11:14:07 ID:???]
>>187に超図解シリーズで本を出してもらうしかないな
って、超図解の出版元って倒産してるのかよ!w

192 名前:nobodyさん [2009/03/14(土) 11:44:37 ID:sxFlkHR4]
phpって一つの.phpに何行くらい書いても大丈夫なんでしょう
5000行くらいなら平気ですかね?もちろん文字数や処理にもよると思うのですが、
(適度に改行したとして)大体何行くらいに納めるみたいなのがあればよろしくおねがいします

193 名前:nobodyさん mailto:sage [2009/03/14(土) 11:51:38 ID:???]
特にないよ

194 名前:nobodyさん mailto:sage [2009/03/14(土) 13:20:33 ID:???]
>192
俺の場合、1ファイル1クラスは死守。
1クラス500行上限が目安で、1メソッドは基本的にスクロールせずに全部見える分量に収める。
1ファイルが大きくなると、当然その分パフォーマンスに影響するし、保守もしづらい。

195 名前:nobodyさん mailto:sage [2009/03/14(土) 13:25:01 ID:???]
同サイズだったらファイル数が多い方がパフォーマンス悪くなるわ

196 名前:nobodyさん mailto:sage [2009/03/14(土) 13:43:06 ID:???]
>>195
クラスローダーを書いて、頻繁に使うクラスはパッキングしてキャッシュすればOK

197 名前:194 mailto:sage [2009/03/14(土) 13:56:17 ID:???]
>195
毎回毎回すべての処理を呼び出すならその通り。
だが、呼び出しの9割は参照系へのアクセスで、そのうち8割はトップページだ。

つうか、パフォーマンスなんぞどうでもいいんだけどな。管理しづらい、読みづらいというのが最大の問題点。



198 名前:nobodyさん mailto:sage [2009/03/14(土) 14:35:42 ID:???]
自分で書いたくせに何言ってんだお前www

199 名前:質問させて下さい [2009/03/14(土) 19:52:27 ID:hOLVrRGN]
2度目の質問失礼します。

file_getについてアドバイスをお願いします。

下記にするとエラーが出ます。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "auto");
?>

エラー内容
Warning: mb_convert_encoding() [function.mb-convert-encoding]:
Unable to detect character encoding in 111.php on line 59


下記にするとエラーは出ません。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "shift-jis");
?>

"shift-jis", "shift-jis"と2重にしたんですが、おかしな書き方になるのでしょうか?
別の書き方がありましたら教えて下さい。


200 名前:nobodyさん mailto:sage [2009/03/14(土) 20:02:04 ID:???]
>>199
>>190に関しては?

201 名前:nobodyさん [2009/03/14(土) 20:37:03 ID:qjtwBjoL]
キーと値の組み合わせとしてではなく、
array('a','b','c')
のように値の羅列の形式で代入された配列の正式名称って何ですか?

202 名前:nobodyさん mailto:sage [2009/03/14(土) 20:44:32 ID:???]
>>201
そのまんま配列

キーと組み合わせたのは連想配列

203 名前:nobodyさん mailto:sage [2009/03/14(土) 20:48:34 ID:???]
>>199
file_get_contentsに設定するパラメータは以下だけです

filename
flags flags
context
offset
maxlen

よって君は何か勘違いをしている
マニュアルをよく読みましょう

204 名前:nobodyさん mailto:sage [2009/03/14(土) 21:06:31 ID:???]
君が勘違いしている

205 名前:nobodyさん mailto:sage [2009/03/14(土) 21:10:32 ID:???]
>199
111.phpのエンコードが事前に分かっているなら後者の書き方のほうが望ましい。
前者だと、間違ったエンコード判定がされた場合文字化けの原因になるしな。

Shift_JISからShift_JISに変換しているわけで、ヘンっちゃあヘン、というか無駄だな。
状況によっては100%無意味というわけでもないが…
echo file_get_contents("111.php");
とほぼ同じ意味だ、というのは理解してるのかな。

206 名前:nobodyさん mailto:sage [2009/03/14(土) 21:36:24 ID:???]
$hoge = "hoge";
var_dump($hoge);

echo "<br>";

function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
}
var_dump(hogehoge());

echo "<br>";

function hogehogehoge(){
return "hogehogehoge";
}
var_dump(hogehogehoge());

の結果が、上から順に

string(4) "hoge"
hogehogeNULL
string(12) "hogehogehoge"

このNULLってどうしてでてくるんですか?><

207 名前:nobodyさん mailto:sage [2009/03/14(土) 21:41:55 ID:???]
値戻してないからだろ



208 名前:nobodyさん mailto:sage [2009/03/14(土) 21:44:54 ID:???]
>206
$a = hogehoge();
$b = hogehogehoge();

として、$aと$bの中身をvar_dumpで見てみろ。

209 名前:nobodyさん [2009/03/14(土) 22:01:33 ID:fYsVSce/]
>>207
hogehoge()の中にreturnをいれて、
function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
return "ho";
}
にしたらNULLなくなりました><
ありがとうございました
>>208
こうでしょうか><
$a = hogehoge();
$b = hogehogehoge();
var_dump($a);
echo "<br>";
var_dump($b);

結果、
hogehogeNULL
string(12) "hogehogehoge"
になりました><

210 名前:nobodyさん [2009/03/14(土) 22:20:14 ID:S24jNTMx]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>

<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<input type="checkbox" name="bbb[]" value="かきくけこ">
あいうえお<br>


<input type="submit" value="選択">
</form>

<?PHP
if(isset($_POST['bbb'])){

foreach ($_POST['bbb'] as $a){
print ($a);
print "<br>";
}
}
?>

</body>
</html>

これで、ローカルで試すと問題なく動くのですが、
レンタルサーバーにアップロードして試すと
文字化けになります。なんででしょうか?

211 名前:nobodyさん mailto:sage [2009/03/14(土) 22:33:52 ID:???]
>>210
自己レス
サーバーのphp.ini の
mbstring.internal_encoding = UTF-8を設定して
上書きしてファイルを再読み込みしてリトライしたらできた。

サーバーのデフォルトではEUCになってた。氏ね。

212 名前:質問させて下さい [2009/03/14(土) 22:37:16 ID:hOLVrRGN]
>>203
そういうことについては全然勉強足りていないので頑張って覚えてみます。
アドバイス有り難うございます。

>>205
詳しい解説有り難うございます。
おかげでよく理解出来ました!
感謝しております。


>>200
意味がわかりませんでした。
失礼致しました。

213 名前:nobodyさん mailto:sage [2009/03/14(土) 23:02:29 ID:???]
>>210
php_selfは推奨されてないのに使うバカ発見

214 名前:nobodyさん mailto:sage [2009/03/14(土) 23:43:47 ID:???]
>>210
マルチ乙

215 名前:nobodyさん [2009/03/14(土) 23:52:54 ID:da46lvzd]
トラックバックの送受信の処理を書こうと思うのですが
もし既存のライブラリがございましたら教えてください

216 名前:nobodyさん mailto:sage [2009/03/14(土) 23:54:59 ID:???]
>>215
google

217 名前:nobodyさん mailto:sage [2009/03/14(土) 23:56:50 ID:???]
>>216
きも



218 名前:nobodyさん [2009/03/15(日) 00:05:25 ID:yySd7NKe]
cliでpg_connectを実行したらSegmentation faultが出るんだけど。

PHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)

<?php
$DB = pg_connect("host=$DbIp dbname=$DbName user=$DbUser password=$DbPass");
?>

これはうちの環境の問題なのか、誰か教えて欲しい。


219 名前:nobodyさん mailto:sage [2009/03/15(日) 00:27:37 ID:???]
>>218
そりゃ変数に何も格納されてないなら無理だろ

220 名前:nobodyさん mailto:sage [2009/03/15(日) 06:06:20 ID:???]
PHP5.3使ってるんですが、メモリ不足を例外処理みたく捕まえることってできますか?
方法をご存じの方がいらっしゃいましたら教えてください。


221 名前:nobodyさん [2009/03/15(日) 06:06:51 ID:+CIxhGml]
>>220 sageちゃいました。すいません。

222 名前:nobodyさん mailto:sage [2009/03/15(日) 06:23:33 ID:???]
残念ながらそういうのは無い

223 名前:220 mailto:sage [2009/03/15(日) 06:27:45 ID:???]
>>222
やっぱそうですか。
踏ん切りがつきました。ありがとう。

224 名前:nobodyさん [2009/03/15(日) 08:14:23 ID:yySd7NKe]
>>219
書き方が悪かった。
実際の変数部分には正しい値が入る。

ちなみに接続も成功するしSQLの結果もかえってくる。
apacheで実行した時は何も問題ない。

でもcliの時だけfaultが最後に出るから悩んでる。



225 名前:nobodyさん mailto:sage [2009/03/15(日) 08:41:14 ID:???]
>>224
使ってるphp.iniが違うとかはないの?
それで落ちるかといえば疑問だけど。

とりあえずphpinfo() で使ってるphp.ini確認してみたら。
あとバージョンが違うライブラリにパスが通ってるとか。

226 名前:nobodyさん mailto:sage [2009/03/15(日) 08:44:40 ID:???]
実行ユーザーが違うので
・ログに書けないよエラー
・そのエラーログを書こうとしてエラー
・そのエラーログのエラーログを書こうとしてエラー
・その・・・・

とか。

227 名前:nobodyさん mailto:sage [2009/03/15(日) 09:24:05 ID:???]
pc11.2ch.net/test/read.cgi/tech/1232712334/350-
前の子が来てる



228 名前:nobodyさん [2009/03/15(日) 09:58:53 ID:qN1+xeFs]
foreachの中から、そのループが1回目か/最後か等を調べるいい方法を
教えてください

229 名前:nobodyさん mailto:sage [2009/03/15(日) 10:10:56 ID:???]
>>228
いい方法かはわからないけど、
$i = 0;
foreach(){
$i++;
}
みたいなやり方はだめなのかな

count()を使えば配列の要素の数も得られるから、それで最後かどうかもわかるのでは

230 名前:nobodyさん mailto:sage [2009/03/15(日) 10:44:14 ID:???]
>>225
ubuntuなんで、php.iniは別なんだけど設定は同じ。
ライブラリ系もまったく同じ。

今思ったけど、linux板で聞いたほうがいいのかも。
ちょっと移動してきます。

ありがとう。


231 名前:nobodyさん mailto:sage [2009/03/15(日) 11:14:01 ID:???]
>228
無い。
ループの何巡目かが処理に影響するような場合はforを使え。

232 名前:nobodyさん [2009/03/15(日) 11:18:55 ID:Ok7zsTbr]
セッションIDって基本的にはクッキーに保存されるじゃん

じゃあ、クッキーが無い時代はどうやってたの?

233 名前:nobodyさん mailto:sage [2009/03/15(日) 11:23:01 ID:???]
>>231
プログラミングに「ない」を考えるあなたの考えにナイワ

234 名前:nobodyさん mailto:sage [2009/03/15(日) 11:35:16 ID:???]
>>232
パン。

235 名前:nobodyさん mailto:sage [2009/03/15(日) 11:38:48 ID:???]
>>232
原初、最初にクッキーだけがあった
したがってクッキーのない時代などない

236 名前:nobodyさん mailto:sage [2009/03/15(日) 11:47:29 ID:???]
クッキー使えなくても埋め込みがある
どっちも平文で送信されるから似たようなもんだ

237 名前:nobodyさん mailto:sage [2009/03/15(日) 12:18:21 ID:???]
>>232
飛脚→伝書鳩→クッキー



238 名前:nobodyさん mailto:sage [2009/03/15(日) 14:33:41 ID:???]
本来、1つのクラスは、1つのファイルに分けるべきみたいなのを
よくみるんだけど、数行程度でも?

239 名前:238 mailto:sage [2009/03/15(日) 14:40:11 ID:???]
あ、そうか
エラー見つけやすいから分けるのか
とりあえず小分けにしておくわ

240 名前:nobodyさん [2009/03/15(日) 14:45:54 ID:L+gdJUIE]
>>238
数行程度のクラスがわんさかあってもウザイと思うが

241 名前:nobodyさん [2009/03/15(日) 14:46:54 ID:L+gdJUIE]
>>235
クッキーの無い時代もあったんじゃね?
それよか、フォームすらなかった時代もあったんじゃね?
ネットスケープ社が頑張って実装したんじゃね?

242 名前:nobodyさん mailto:sage [2009/03/15(日) 16:01:31 ID:???]
>>241
おまえ大丈夫?

243 名前:nobodyさん [2009/03/15(日) 16:35:04 ID:L+gdJUIE]
>>242
お前の方が大丈夫か?最初のHTMLは画像すら使えなかったって知ってるか?

244 名前:nobodyさん mailto:sage [2009/03/15(日) 18:44:14 ID:???]
これ以上ない「ゆとり」と発言したくなるシチュ

245 名前:nobodyさん [2009/03/15(日) 18:46:33 ID:tXlRktlT]
複数行入力できるtextareaを使って入力してもらい
それをmysqlのtext型としてinsertしました

それをselectクエリで取り出して表示してみた所、改行されずに
表示されてしまうんですが、入力の時と同じように表示させる
ためにはどうすればいいんですか?

246 名前:nobodyさん mailto:sage [2009/03/15(日) 19:00:19 ID:???]
>>245
改行するには何がいるか?

247 名前:nobodyさん mailto:sage [2009/03/15(日) 19:05:30 ID:???]
昔はクックーもフォームも使えなかったことを知らないとは



248 名前:nobodyさん mailto:sage [2009/03/15(日) 19:08:08 ID:???]
>>245
nl2br

249 名前:nobodyさん [2009/03/15(日) 19:25:38 ID:tXlRktlT]
>>246
>>248

できました! こんな便利なものがあるなんて知らなかったです
まだまだ勉強不足ですね がんばります

ありがとうございました!

250 名前:nobodyさん mailto:sage [2009/03/15(日) 19:29:36 ID:???]
PHPを使うにはサーバをレンタルすると思いますが、
無料のジオシティーズでもPHPが使えるみたいです。
金を払ってサーバをレンタルするとどういういいことがあるのですか?

ttp://help.yahoo.co.jp/help/jp/geo/perl/perl-02.html

251 名前:nobodyさん mailto:sage [2009/03/15(日) 19:32:02 ID:???]
>>249
独習PHPに載ってるよ

252 名前:nobodyさん mailto:sage [2009/03/15(日) 19:33:13 ID:???]
>>250
(1)
MySQLでPDOが使える(無料のところはPDO使えないことが多い)

(2)
強制挿入される広告が消える

(3)
場合によっては有料のところでは独自ドメインが使えるかも
(無料でも一部使えるところはある)

253 名前:nobodyさん mailto:sage [2009/03/15(日) 19:34:26 ID:???]
(4)
sendomailが使える
(無料のところではsendmailは無効化されていることがおおい)
sendmailが使えないとメールが送れない。

PHPのmail関数は、サーバーのsendmailに仕事を
丸投げしているだけなので、sendmailが動いていないと
何も起きない

254 名前:nobodyさん mailto:sage [2009/03/15(日) 19:36:53 ID:???]
>>250
使うってどういう状況で?

255 名前:nobodyさん mailto:sage [2009/03/15(日) 19:40:38 ID:???]
DBやメールなんかでいろいろ制限があるんですね。
ありがとうございました。

256 名前:nobodyさん mailto:sage [2009/03/15(日) 19:44:18 ID:???]
よく見たら、CGIを利用するには有料じゃないとダメですね。

257 名前:nobodyさん mailto:sage [2009/03/15(日) 19:50:20 ID:???]
無料/安価なサーバーはだいたい重い。
少数のサーバーに人を大量に詰め込むからな。
(そうしないと初期投資を回収できないので仕方ないが)



258 名前:nobodyさん mailto:sage [2009/03/15(日) 19:50:22 ID:???]
ifの代わりにswitchを使ってやろうとしたのですが、
<?php
$i = 3;
switch($i){
case 0:
case 1:
case 2:
case 3:
case 4:
echo "iは0〜4";
break;

default:
echo "iは不明";
break;
}
?>

これがもし、case 0:〜case 4:の部分で、
case 0:〜case 100:までを判断したいとき
どういう風に記述すればいいのでしょうか。

259 名前:nobodyさん mailto:sage [2009/03/15(日) 19:53:05 ID:???]
100行書くしかないのでは?

260 名前:nobodyさん mailto:sage [2009/03/15(日) 19:53:58 ID:???]
横に繋げれば1行で済むのでは?

261 名前:nobodyさん mailto:sage [2009/03/15(日) 20:19:50 ID:???]
なんでifにしないのか理解に苦しむ。

262 名前:nobodyさん mailto:sage [2009/03/15(日) 20:25:12 ID:???]
iが0〜100までかを調べたいなら
if ($i >= 0 && $i <= 100) {
 echo "iは0〜100";
} else {
 echo "iは不明";
}
でいいのでは?

263 名前:nobodyさん mailto:sage [2009/03/15(日) 20:30:46 ID:???]
>>251
宣伝乙

264 名前:nobodyさん mailto:sage [2009/03/15(日) 20:33:50 ID:???]
>>258
switchでcaseが大量になる場合は配列をうまく利用することをおすすめする

function func1() {
}




$case = array(func1(),func2(),func3(),・・・・・func999),


$case[0];

265 名前:nobodyさん mailto:sage [2009/03/15(日) 21:34:38 ID:???]
>>264
www

266 名前:nobodyさん mailto:sage [2009/03/15(日) 22:37:58 ID:???]
>>265
shosinsha otu

267 名前:261 mailto:sage [2009/03/15(日) 22:54:26 ID:???]
>264
せめて
$case = array('func1', 'func2', 'func3');
call_user_func($case[0]);   // $case[0]();でも多分動く
にしとけ。

とりあえずそのコードは実行効率、可読性、保守性などあらゆる観点で最低だ。
後者2つについてはこのコードも大差ないが。



268 名前:nobodyさん mailto:sage [2009/03/16(月) 01:35:07 ID:???]
ふと思ったんだけど、例えば見栄え良く
改行いっぱい使って、

$hoge    = "hoge1"
         . "hoge2"
         . "hoge3"
         ;

こうしたのと、単に
$hoge="hoge1hoge2hoge3";
ってしたのとでは、
上のような改行いっぱい使った場合のが
積み重なってくると、改行使ってないものよりも
読み込みが遅くなる?
改行やスペースは無視になるとはきくけどなんか不安なのです。


269 名前:nobodyさん mailto:sage [2009/03/16(月) 02:37:08 ID:???]
>268
文字列の結合の分遅くなるな、理論上は。
改行も、確かに理屈の上では遅くなる。人間に知覚できる差じゃないけどな。
仮に10000行空行があったとしても、目に見える応答速度差は出ない。
1MB分改行があっても気づかないと思う。

つうか、お前は、ペーパー代を惜しんでウンコした後ケツを拭かなかったりするのか?
ゴミみたいな高速化と可読性を天秤にかけるなら、どう考えても可読性を優先すべきだ。

270 名前:nobodyさん mailto:sage [2009/03/16(月) 06:04:33 ID:???]
javaだと文字列リテラル同士の結合はコンパイル時にオプティマイズされて
結合された文字列になるんだっけか。

スクリプト言語で拘ってもしょうがないとは思うが、気分的にはやってほしいところではあるな。
APCとかのキャッシュ環境なら差がでるかも知れんし。

271 名前:nobodyさん mailto:sage [2009/03/16(月) 11:58:48 ID:???]
「PHPでOOPで書く場合の、helloが出てくるまでの長い一日」

(1)さーって、、、まんず、helloって出すわけだから、
print "hello";
だろ、、、これはまず100%確実、、、

(2)そんで、クラスの宣言せんといかんな、、、

class {


}

、、、っと、、、
あ、、、クラス名、考えないといかんな、、、
はじめてのだから、firstでいいか?
class first {


}

272 名前:nobodyさん mailto:sage [2009/03/16(月) 12:00:24 ID:???]
(3)
そんで、さっきの
print "hello";
を、メソッドの中に入れないといかんのだよな、、、

あ!メソッド名も考えないといかんのだよな、、、
helloを出すメソッドだから、helloでいいか?


function hello(){
print "hello";
}

273 名前:nobodyさん mailto:sage [2009/03/16(月) 12:01:11 ID:???]
(4)
よしよし、、、作業は順調だな、、、
これで、このメソッドを、さっき作った
クラスの中に、放り込めばいいのだよな、、、

class first{


function hello(){
print "hello";
}
}

274 名前:nobodyさん mailto:sage [2009/03/16(月) 12:02:05 ID:???]
(5)

これでクラスは完成、、っと、、、

次は、このクラスをnewして、
オブジェクトに代入せなあかんのだよな、、、

$obj=new first();

275 名前:nobodyさん mailto:sage [2009/03/16(月) 12:03:00 ID:???]
(6)
よしよし、、、

これでインスタンスができたから、
このインスタンスから、->で、クラス内の
メソッドにアクセスすればええんだよな、、、

print $obj->hello();

276 名前:nobodyさん mailto:sage [2009/03/16(月) 12:03:51 ID:???]
>>274
括弧ついてるよ初心者クン

277 名前:nobodyさん mailto:sage [2009/03/16(月) 12:05:51 ID:???]
(7)
<?php
class first{


function hello(){
print "hello";
}
}

$obj=new first();
print $obj->hello();
?>

完成、、、と、、、。
カンタンに説明すると、
firstというクラスを定義しhello()というメソッドを定義し
そのメソッドの中でhelloを出力する命令を書きnewでfirstクラスの
インスタンスを作成しオブジェクト変数に代入しそのできてきた
インスタンスからhello()メソッドにアクセスして最終的にhelloを
画面に出すことに成功しました。



278 名前:nobodyさん mailto:sage [2009/03/16(月) 12:06:40 ID:???]
>>276
どちらでも実行できるんだけど、なんか問題あるなら
それを解説したページをプリーズ

279 名前:nobodyさん mailto:sage [2009/03/16(月) 12:08:53 ID:???]
ちなみに手続型でhelloを出すソースは以下の通り

<?php
print "hello";
?>

280 名前:nobodyさん mailto:sage [2009/03/16(月) 12:10:12 ID:???]
>>276
お前が初心者なのは分かった

281 名前:nobodyさん mailto:sage [2009/03/16(月) 12:19:32 ID:???]
>>276
普通はつけます

282 名前:nobodyさん mailto:sage [2009/03/16(月) 12:21:35 ID:???]
クラス使えばOOPってわけじゃないべ。

283 名前:nobodyさん mailto:sage [2009/03/16(月) 12:25:30 ID:???]
つか全然OOPじゃないわな

284 名前:nobodyさん mailto:sage [2009/03/16(月) 12:29:26 ID:???]
>>282
ものの考え方・概念のことだから本質的にはそうだね
ただOOPの核となる継承やらカプセル化をする為にはクラスを使わないといけない

helloを出力するだけにわざわざクラス使うのはPHPではただの冗長

285 名前:nobodyさん mailto:sage [2009/03/16(月) 13:00:26 ID:???]
hello出力するだけのただの形ではあるから参考にならないなあ
OOP勉強してる人いないの?

286 名前:nobodyさん mailto:sage [2009/03/16(月) 13:10:52 ID:???]
>>285
一応、スレはある。
が、もう死にかけの体。

PHPでOOP
ttp://pc11.2ch.net/test/read.cgi/php/1172205352/l50

287 名前:nobodyさん mailto:sage [2009/03/16(月) 13:11:01 ID:???]
>>279
おお、さすが最強PHPw。
ハーディ・ラマヌジャン数を出力するプログラムは、
Cで書いても、実行に数十秒かかる。
perlやpythonに至っては数分以上かかる。
だが、PHPなら、一瞬。むしろ、計算する必要すらない。
<?php
echo "1729";
?>


もちろん、パクリネタだ。



288 名前:nobodyさん mailto:sage [2009/03/16(月) 13:25:45 ID:???]
>>285
本気で勉強したいならJavaでやったほうがいいって散々言われてるだろ
オブジェクト指向という考え方を理解するためだけなら
わざわざPHPでやる必要はない
OOPに関するドキュメントの多いJavaでやったほうがいい
PHPでOOPなんてJavaやC#なんかをやってるやつの為にあると思っていい

289 名前:nobodyさん [2009/03/16(月) 15:26:16 ID:zNDXWAna]
くだらない質問ですがお願いします。
($a < $b) ? $key = $a : $key = $b;
これの意味がちょっとわからないのですがif文で表すことってできますか?

290 名前:nobodyさん mailto:sage [2009/03/16(月) 15:33:02 ID:???]
if ($a < $b) {
 $key = $a;
} else {
 $key = $b;
}

291 名前:nobodyさん mailto:sage [2009/03/16(月) 15:33:12 ID:???]
$key= ($a < $b) ? $a : $b;
普通はこう書く

if ($a < $b) $key= $a;
else $key= $b;

292 名前:nobodyさん [2009/03/16(月) 15:52:09 ID:zNDXWAna]
>>290>>291
なるほど!ありがとうございます。
ちなみに>>289の書き方とif使った書き方、どっちがいいとかあるのですか?


293 名前:nobodyさん mailto:sage [2009/03/16(月) 15:59:13 ID:???]
>>292
上記のような簡単なif文なら三項演算子でもいいと思うけど、複雑なものになると
可読性が落ちるので、その場合は素直にif文で済ませた方がよい

294 名前:nobodyさん mailto:sage [2009/03/16(月) 16:01:19 ID:???]
>>292
三項演算子は変数に入れることができる
なので結果を変数に入れたいときとかは便利だが
条件文をかくためだけに使うなら可読性を重視して
普通のif-else文を使ったほうがいい
三項演算子なんてなくてもコーディングできるので
他の人と共同開発なんかの場合は使わないほうがいい

295 名前:nobodyさん [2009/03/16(月) 16:34:41 ID:zNDXWAna]
>>293>>294
ありがとうとざいました。
使わないほうがよさそうですね。

296 名前:nobodyさん [2009/03/16(月) 16:46:33 ID:TMtB/4sw]
オープンな掲示板へのスパム投稿をブロックするにはどうしたらいいでしょうか?
メジャーな方法だとcaptchaを入れるんでしょうが、他に方法あったら教えてください。

たとえば、スパム業者(国内・国外問わず)のIPリストなんかはないんでしょうか?
よろしくお願いします

297 名前:nobodyさん mailto:sage [2009/03/16(月) 16:49:43 ID:???]
>>296
そのリストがあったら既に大手ブログサービス業者は導入して平和になってるはずだよな




298 名前:nobodyさん mailto:sage [2009/03/16(月) 17:14:59 ID:???]
>>296
基本的な対策として

本文中のhttp://文字列を禁止する
もしくは出てくる回数を制限する
(最近はttp://からはじめたりドメインからはじめたりするスパムもある)

文字がどういうもので構成されてるかを見る
日本語[あ-ん]が必ず入っていないと駄目とか
[\x00-\x7f]のみの文字列だったら駄目とか
(最近は文章の最後のほうに日本語を適当に入れてくるスパムもある)

スパムをあえて投稿させてパターンを分析し
自分でリストを作成する(IPなり禁止文字列なり)
(IPはできればサーバ側ではじく)

このほかによく見る方法としては

ひらがなに対応するカタカナを入力してもらうとか
(captchaはすでに効果がないので代替手段を)

他の閲覧者にスパムかどうかを判定してもらってJavaScriptで非表示にする
(youtubeなんかで見るパターン)

とかかな

いずれも限界があるので閲覧者に被害が出ないようにだけ配慮すればいいんじゃない?
そういう観点では誤クリ防止にhttp://のオートリンクをしないとかが一番効果的

299 名前:nobodyさん mailto:sage [2009/03/16(月) 17:19:04 ID:???]
どれもいまいちな方法だな

300 名前:nobodyさん mailto:sage [2009/03/16(月) 17:21:48 ID:???]
>>299
いまいちでない方法をどうぞ

301 名前:nobodyさん mailto:sage [2009/03/16(月) 17:28:15 ID:???]
あなたはスパム業者ですか?

はい いいえ

↑これを入力させればいい

302 名前:nobodyさん mailto:sage [2009/03/16(月) 17:30:34 ID:???]
>>301
天才

303 名前:nobodyさん mailto:sage [2009/03/16(月) 17:55:37 ID:???]
2chはどうやってんだろ?

304 名前:nobodyさん [2009/03/16(月) 18:04:29 ID:GOOX8xiJ]
PHPで効率化を突き詰めていくと、
MVCを考えた、フレームワークのような形になるのですが、
やっぱり皆さんもそうですか?それとも最初からフレームワーク使いますか?

305 名前:nobodyさん mailto:sage [2009/03/16(月) 18:06:47 ID:???]
>>298
日本語が入ってないとダメってのはもう古い
日本語スパムははじけないよ

306 名前:nobodyさん mailto:sage [2009/03/16(月) 18:10:14 ID:???]
やっぱり、画像認証(ランダムの数字を入力するやつ)
しか対処できないんじゃないか?
ライブラリも多いし、作るのも難しくないだろ。

307 名前:nobodyさん mailto:sage [2009/03/16(月) 18:21:17 ID:???]
>>303
2chは管理に協力してる人間がいっぱいいるから
手動でどうにかなるレベルなんだよ



308 名前:nobodyさん mailto:sage [2009/03/16(月) 18:49:09 ID:???]
PHPの初心者用参考書をちょっと読んだだけの初心者です

register_globalsをonにするとセキュリティ上よくなく
また、PHP6からはonにすることができなくなると聞きました
そこで質問なのですが、ハイパーリンクにごとにページの内容を変えたり
処理の内容を変えたりしたい場合は他にどのような方法があるのでしょうか

質問とは関係ないのですがスパム対策で 1 + 2 = [ ] といのを見たことがありますね
(数値は画像でランダムでした

309 名前:nobodyさん mailto:sage [2009/03/16(月) 19:11:39 ID:???]
>>308
基本的には POST あるいは GET メソッドでクエリを渡して、その値に応じて処理を分ける。
ハイパーリンクでなら GET 。

310 名前:nobodyさん [2009/03/16(月) 19:21:10 ID:TMtB/4sw]
>>298
たくさんの意見ありがとうございます
カタカナをひらがなにっていうのはいいですね!
キャプチャの文字列をカタカナにするってのは無理なんでしょうか?

311 名前:nobodyさん mailto:sage [2009/03/16(月) 19:25:46 ID:???]
スクリプトでは理解できない&日本人にしかわからないような
質問をランダムに生成できればいいんだが
質問と答えがあらかじめ決まってるようなものだとそのうち解析されるし
画像のひらがなをみてカタカナにしろぐらいだとCaptcha解析技術応用すれば
解析したひらがなに対応するカタカナに置き換えればできちゃうし
完全な対策なんてないからどこかで妥協するしかない
いろんなことやった上でなんとかして投稿してやろうなんて考える
海外のスパマーなんてそうはいないよ
仮にいろんな対策をした上で変なのが投稿されたらそれは日本人の愉快犯だ
というわけでそんな神経とがらせてスパマー対策しなくてもいいんじゃないだろうか

312 名前:nobodyさん mailto:sage [2009/03/16(月) 19:32:15 ID:???]
>>310
できますよ
そういうライブラリは探せばあるんじゃないかな?
単に文字を画像に出力するだけなら簡単なんですけどね
画像をゆがめたりする処理が難しいんじゃないかな

313 名前:nobodyさん mailto:sage [2009/03/16(月) 21:48:57 ID:???]
普通にCAPTYAいれとけば?

314 名前:nobodyさん mailto:sage [2009/03/16(月) 21:50:47 ID:???]
ちなみに2ちゃんがやってるのは、、、

(1)書き込みをしようとしてきたら、クッキーを
受け入れてるかどうかを確認する。クッキーないやつは
書き込みできない

(2)書き込みしてきようとしたサーバーに簡易ポートスキャンをかけ、
オープンプロキシでないことを確認する。もしオープンプロキシだったら拒否

(3)
プロキシからの書き込みについては、手動で
リストを作成して、そのリストにIPが載っていたら、拒否。

こんな感じ。一部だけど。

315 名前:nobodyさん [2009/03/16(月) 23:05:32 ID:l8gT672P]
セッションを使って、
ログインしないと見れないページを作ったんだが、
画像はどうやって守ればいいんだ?

316 名前:nobodyさん mailto:sage [2009/03/16(月) 23:07:02 ID:???]
>296 >297
DNSBL(DNSブラックリスト)でぐぐれ
スパムちゃんぷるーが手軽

317 名前:nobodyさん mailto:sage [2009/03/16(月) 23:21:56 ID:???]
>>315
そこでPHPですよ



318 名前:nobodyさん [2009/03/16(月) 23:35:54 ID:l8gT672P]
>>317
PHPで画像を送出するってことかな?
ぐぐったけど具体的なコードがわからない

319 名前:nobodyさん mailto:sage [2009/03/16(月) 23:51:20 ID:???]
2行でおk
ヘッダ送信
readfile()で出力

320 名前:nobodyさん mailto:sage [2009/03/16(月) 23:53:20 ID:???]
セッションも処理しないとwwwwwwwwww

321 名前:nobodyさん [2009/03/17(火) 00:28:16 ID:PIugUbr/]
$sql = "SELECT name FROM address";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
echo $row["name"];

こうしたらMySQLから1行取得出来ますが、もっと簡略化する方法は無いでしょうか?
特に、結果が1行・1フィールドだと分かっている場合、
mysql_fetch_arrayをして一旦配列に入れるのは不効率な気がしています。

322 名前:nobodyさん mailto:sage [2009/03/17(火) 00:35:15 ID:???]
echo (mysql_fetch_array(mysql_query("SELECT name FROM address")))["name"];

323 名前:nobodyさん mailto:sage [2009/03/17(火) 00:38:22 ID:???]
>321
SELECT name FROM address LIMIT 1

配列に代入云々は数マイクロ秒とかのゴミみたいな差しかつかない。
こいつは測定可能なレベルで実行性能に影響する。

324 名前:321 mailto:sage [2009/03/17(火) 01:11:49 ID:???]
>>323
>>321のようなテーブルにアクセスして、指定値を取得する関数を
作っているのですが、 321のソースでフィールド「name」が異なる場合、
echo $row["name2"];
というように名称を指定して出力しなければいけません。

まぁ、関数を
function dbSelect($fld_name){
echo $row[$fld_name];
}

とすれば良いだけの気がしますが、
何か良い関数があるのかと思い、質問しました。

325 名前:nobodyさん mailto:sage [2009/03/17(火) 02:58:59 ID:???]
1からCMS作ろうと思います。
応援よろしくお願いします

326 名前:nobodyさん mailto:sage [2009/03/17(火) 03:15:35 ID:???]
がんば〜

327 名前:nobodyさん mailto:sage [2009/03/17(火) 07:54:44 ID:???]
>>324
PDOが使用可能であれば…
jp.php.net/manual/ja/pdostatement.fetchcolumn.php



328 名前:nobodyさん mailto:sage [2009/03/17(火) 08:04:24 ID:???]
実はおれもCMS自作してるけど
ネックなのは一度もCMSを使ったことがないことだ・・

329 名前:nobodyさん mailto:sage [2009/03/17(火) 09:18:29 ID:???]
CMSを使ったことがない人がCMS作っても劣化品にしかならない

330 名前:nobodyさん [2009/03/17(火) 10:44:32 ID:Ib1RB6YL]
キーワード自動リンクの仕組みを作っています。
データベースなどに以下のようなデータがあるとします。

id,word
1,日本
2,日本海
3,日本海溝
4,太平洋

これらを辞書として、

・日本海溝は太平洋側にあります。

という文章に最長で一致するものからリンクを張っていくのですが、

<a href="word/3"><a href="word/2"><a href="word/1">日本</a>海</a>溝</a>は<a href="word/4">太平洋</a>側にあります。

のように、重複してリンクが張られてしまいます。
すでにリンクが張られている言葉の内側にはリンクを張らないようにしたいのですが、
どのような対処法が考えられますでしょうか?
PHPで処理する場合の対処法を教えてください。

331 名前:nobodyさん mailto:sage [2009/03/17(火) 11:14:15 ID:???]
マッチさせてるコードは?

332 名前:nobodyさん mailto:sage [2009/03/17(火) 11:32:03 ID:???]
$words = array(
array(
'id' => 1,
'term' => '日本'
)
);

辞書がこんなかんじの配列にあって、

foreach ($words as $word) {
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
}

辞書は単語の文字数の長い順にソートさせてあります。
実際のコードとは違うのでどこか変かもしれませんが、流れはこんな感じです。

単純に、辞書の配列をforeachさせて、
str_replaceでアンカータグをつけたものに置き換えているだけです。
なので、重複して置き換えられてしまうのは当然なのですが、
対処法が思い浮かばなくて;

よろしくお願いします。


333 名前:nobodyさん mailto:sage [2009/03/17(火) 11:33:23 ID:???]
すみません、訂正です;

×
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);


$body = str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);


334 名前:330 [2009/03/17(火) 11:34:31 ID:Ib1RB6YL]
>>332
>>333
ID出し忘れました・・・スレ汚してすみません;

335 名前:nobodyさん [2009/03/17(火) 11:45:00 ID:PBdJ+iXh]
宜しくお願いします。
【OS名】Windows XP
【PHPのバージョン】php4.4.4
【質問内容】
『−』を含んだ文字列を preg_match で検索するとエラーが発生するのでキーワードを preg_quote で処理すると
『ホームページ』が『ホ―[ムペ―[ジ』となってしまいます。
お知恵を貸して下さい。お願いします。

336 名前:nobodyさん [2009/03/17(火) 11:48:44 ID:Vq5xUXrn]
>>335
mb_internal_encoding('utf8');
mb_regex_encoding('utf8');

337 名前:nobodyさん [2009/03/17(火) 11:49:06 ID:qY/TJCjN]
たまにGDでjpeg画像を処理した時にエラーが出て何も描かれてないjpeg画像がブラウザに出る時があるんだけど
そのエラーを表示しない方法はphp.iniで指定するってのは分かった。

これでエラーは出なくなったわけだが、画像はやっぱり出ない。
どうやらいつも同じファイルを処理した時にエラーになるので
画像ファイル側の問題だと思うけど
これをうまく処理する事はできるの?
そもそも何でこんなエラーがでるの?

知ってる人 教えてYO!



338 名前:nobodyさん mailto:sage [2009/03/17(火) 11:53:27 ID:???]
その画像をうpれ

339 名前:nobodyさん mailto:sage [2009/03/17(火) 12:02:31 ID:???]
>>335
はやく5に移行しろよ

340 名前:nobodyさん [2009/03/17(火) 13:22:05 ID:PBdJ+iXh]
>>336さん。
有難う御座います。
mb_regex_encodingでUTF-8にしてもやはりホ―[ムペ―[ジとなってしまいます。

>>339さん。
まだ勉強中の為に5への以降は難しいです…

341 名前:nobodyさん mailto:sage [2009/03/17(火) 13:33:39 ID:???]
まず検索する対象とキーワードの文字コードを把握できてないと解決できんぞ

342 名前:nobodyさん mailto:sage [2009/03/17(火) 14:22:48 ID:???]
4で勉強してから5にうつるより、最初から5で勉強しちゃったほうがいいような気もするんだけど。

343 名前:nobodyさん mailto:sage [2009/03/17(火) 14:23:55 ID:???]
4とか過去の汚物なんだから使う価値0

344 名前:nobodyさん mailto:sage [2009/03/17(火) 15:16:01 ID:???]
移行ってほど変わらんだろ。さっさと5使え

345 名前:nobodyさん [2009/03/17(火) 15:52:24 ID:s4aiV5Ak]
質問です。
このサイト(みんなのキャンパス:campus.nikki.ne.jp/
のように掲示板の情報を一部だけ閲覧することができ、
登録・ログイン後に情報をある程度投稿すると全ての情報が閲覧できるような
会員制サイトを作成したいと思っています。

WordPressやOpenPNEで色々試したのですがいまいちうまくいきません。
こういうものは、どうやったら実現できるのでしょうか?
よろしくお願いします。

346 名前:nobodyさん mailto:sage [2009/03/17(火) 15:55:22 ID:???]
if (未ログイン) {
一部表示処理
} else {
全表示処理
}

347 名前:nobodyさん mailto:sage [2009/03/17(火) 16:03:10 ID:???]
CMSで駄目なら何をやっても駄目な気がする
とりあえず Wordpress の方なら is_user_logged_in() でログインしてるかどうか調べられるよ



348 名前:nobodyさん mailto:sage [2009/03/17(火) 16:22:38 ID:???]
>>345
フレームワークで作るという手もある。


349 名前:nobodyさん mailto:sage [2009/03/17(火) 16:56:04 ID:???]
フレームワーク使っているかもしれないけど、
各プラグインは自作しなければいけないからな。

俺も自作システムを作る時にWordpressやらOpenPNEやらを見たけど、
やっぱり「目的の仕様に合った作り方」をしているので、
それらを改造してオリジナルのシステムを作るのは無理があるよ。

350 名前:345 [2009/03/17(火) 17:04:11 ID:s4aiV5Ak]
みなさんご回答有難うございます。
質問の仕方が悪くて申し訳ありません。

みんなのキャンパス:campus.nikki.ne.jp/
というサイトは登録後ログインしても、
大学の講義情報を3件書き込まないと全ての情報を見ることができません。

このように書き込まないと掲示板の他のページが見れない、といったように
するにはどういった処理が必要なのでしょうか?
よろしくお願いします。



351 名前:335 [2009/03/17(火) 17:08:29 ID:PBdJ+iXh]
>>341さんとレスを頂いた皆さん。
お陰で解決致しました。有難う御座います。

出来るだけ早く5に以降するよう努力致しますf^^;
有難う御座いました!

352 名前:nobodyさん mailto:sage [2009/03/17(火) 17:13:30 ID:???]
>>350
そこがどんな風な実装をしてるかは知らないけど。

ユーザー情報に「書き込んだ回数」を記録する。
一緒に「全ての情報を見れる権限」もフラグとしてDBに記録しておいて、書き込み回数が3回を越えた時点で true にする。
で、ページを表示するときにその権限を持ってるか持ってないかを判断する。

353 名前:nobodyさん mailto:sage [2009/03/17(火) 17:17:13 ID:???]
俺だったら「書き込んだ回数」か「全ての情報を見れる権限」のどちらかしか属性作らないな

354 名前:nobodyさん mailto:sage [2009/03/17(火) 17:22:32 ID:???]
>>353
確かに書き込み回数だけでも十分だな、すまん。

355 名前:330 [2009/03/17(火) 17:37:21 ID:Ib1RB6YL]
>>330 の回答をどなたかお願いできませんでしょうか?

356 名前:nobodyさん mailto:sage [2009/03/17(火) 17:44:56 ID:???]
>>355
自分がどうやってるか書いてないよな。推測すると、再帰でpreg_matchでもやってんのか?
まぁ、それはいいや。

単語リストをベースにトークナイザーにかけて処理するのがいいと思うよ。


357 名前:345 [2009/03/17(火) 18:00:29 ID:s4aiV5Ak]
>>352さん
>>353さん、回答下ったみなさん、有難うございました!

2ちゃんねるはじめてだったのですが回答いただけてうれしかったです。
なんとなく方向がわかったので色々やってみます。



358 名前:330 [2009/03/17(火) 18:07:06 ID:Ib1RB6YL]
>>356
すみません;
>>332 に書いたのですが、IDを出し忘れてしまって・・・

恥ずかしながら、トークナイザーというのをはじめて聞いたのですが、
どういったものなのでしょうか?
PHPには、その機能は備わっているのでしょうか?

359 名前:nobodyさん mailto:sage [2009/03/17(火) 19:00:40 ID:???]
wikiのソース参考にしてみたら?

360 名前:nobodyさん mailto:sage [2009/03/17(火) 19:31:59 ID:???]
>>330
アルゴリズムの問題だと思うけど、マッチングした文字列をいったん置き直して、展開しなすとかしたら?

日本海溝は太平洋側にあります。
<3>は太平洋側にあります。
<3>は<4>側にあります。

みたく文字列を順次置き直して、あとから <id>をリンクつきのHTMLで展開。


361 名前:330 [2009/03/17(火) 19:43:02 ID:Ib1RB6YL]
>>359
それだけの力があればそうしたいのですが・・・
基本的な考え方だけでもお願いしたいです。

>>360
おぉ!そういう方法がありましたね。
しかし、元の文章に<1>という文字列が含まれていた場合、面倒なことにならないでしょうか?
元の文章は、ユーザーが自由に投稿できる類のものなので・・・
<<<1>>>のように、括弧を増やしたり、!?!1!?!のように、複雑なものにすれば
出現する確立は減らすことができるのでしょうが、それでも0パーセントではないですし・・・

おっしゃるとおり、PHPに関する質問という範囲を超えているかもしれませんが、
どうかお付き合いお願いしたいです。

362 名前:nobodyさん mailto:sage [2009/03/17(火) 19:51:31 ID:???]
キーワードをrsortして順にリンク外文字列に対して処理していけばいい

363 名前:nobodyさん mailto:sage [2009/03/17(火) 19:51:53 ID:???]
ユーザの投稿に<1>があったら\<1\>とかにまず置き換えればいいじゃん
そんで>>360の処理のあとにもとにもどせばよい

364 名前:nobodyさん mailto:sage [2009/03/17(火) 20:07:16 ID:???]
>>330
優先順位が悪い

1,日本海溝
2,日本海
3.日本

の順でループして探索して見つかったら置き換えてbreakして位置を記録
最後に置き換えた位置から同様にして探索
これをEOFに達するまで繰り返す

365 名前:364 mailto:sage [2009/03/17(火) 20:10:19 ID:???]
ごめんよくよく考えたら非効率だな
忘れてくれ

366 名前:330 [2009/03/17(火) 21:04:12 ID:Ib1RB6YL]
>>362
リンク外かどうかの判定の仕方がわからなくて・・・
>>360 さんに提示していただいたように、特殊な記法に置き換える方向で行こうかと思います。

>>363
そうでした!一度エスケープのような処理をすればよかったのですね!

・・・これでなんとか解決したように思ったのですが、今度は、辞書に<id>という単語が含まれていた場合に、
問題が発生しました。

たとえば、辞書にこんな感じの単語があると、

id,word
5,<3>

長いものから置き換えるので、
まず「日本海溝」が<3>に置き換えられ、
その後、「<3>」がふたたびマッチしてしまい、
<5>に置き換えられてしまいます。

最終的に出力されるのは
<a href="word/5"><3></a>

になってしまいます。
意外と難しいですね;

>>364
位置を記憶するというのはやってみたのですが、
文字数の長い順に出現するとは限らないのでだめでした・・・;



367 名前:nobodyさん mailto:sage [2009/03/17(火) 21:13:49 ID:???]
>>366
そもそも最終的に生成するHTMLにタグじゃない < > を入れてどうする気だ。
テキストとキーワードにあらかじめhtmlspecialchars しておけばいいやん。



368 名前:366 [2009/03/17(火) 21:20:04 ID:Ib1RB6YL]
>>367
そうでした;;
キーワードもエスケープ処理しておくことでうまくいきました!

おかげさまで、当初の目的が達成できました。
もっと精進します・・・w
レスをくれたみなさん、ありがとうございました!

369 名前:nobodyさん mailto:sage [2009/03/17(火) 21:26:48 ID:???]
キーワードは最長一致させるのが原則。
"WEBプログラミング"なら、"WEB"や"プログラミング"より
"WEBプログラミング"の方が指定がより明確だから重要度が高いよね。
それに最長一致なら被らない。

処理の重さに関しては、保存時はゆっくり反映で良いので問題ない。

はてダみたいに、外部リンクのサイトのタイトルの文字列まで取得して
投稿を書き換えようとするのは外部サイトの都合で時々タイムアウトしてるけど、
自鯖の中でのリンクの置き換え程度なら、よっぽどキーワード数が多いとかじゃなければ
タイムアウトはまず起こらない。

キーワードを使うケースの場合、ROMユーザーが書き込むユーザーより圧倒的に多いし
そうでなければそのサービスは成り立たないから、ROMユーザーに対して
内容がキャッシュされてれば投稿時はかなり重い処理でも構わない。

370 名前:nobodyさん mailto:sage [2009/03/17(火) 21:29:46 ID:???]
またWikiやはてなみたいなスパムサイトが増えるのか。

371 名前:nobodyさん [2009/03/17(火) 23:09:10 ID:whdlEm3/]
array('a'=>'b','c'=>'d')

array('a','b','c','d')
にする簡単な方法があれば教えて下さい

372 名前:nobodyさん mailto:sage [2009/03/17(火) 23:25:11 ID:???]
>>371
foreach( $oldarray as $key => $value ){
array_push( $newarray, $key ); array_push( $newarray, $value );
}


373 名前:nobodyさん mailto:sage [2009/03/17(火) 23:50:49 ID:???]
>>371
$newArray = array_merge(array_keys($oldArray), array_values($oldArray));

374 名前:nobodyさん mailto:sage [2009/03/17(火) 23:52:05 ID:???]
ああこっちだったわ

$newArray = array_keys($oldArray) + array_values($oldArray);

375 名前:nobodyさん mailto:sage [2009/03/18(水) 02:04:43 ID:???]
pc11.2ch.net/test/read.cgi/php/1236265877/
こっちで懐かしいやつが暴れてるぞ

376 名前:nobodyさん [2009/03/18(水) 03:57:38 ID:Zcgp4DkA]
文字列がintとして妥当かどうか調べるにはどうしたらいいですか?


377 名前:nobodyさん mailto:sage [2009/03/18(水) 04:05:19 ID:???]
死ぬほど既出



378 名前:nobodyさん mailto:sage [2009/03/18(水) 08:50:19 ID:???]
「intとして妥当」を説明してみろ。

379 名前:nobodyさん mailto:sage [2009/03/18(水) 09:22:56 ID:???]
is_numeric
is_int

のことじゃないかとエスパーしてみる

380 名前:nobodyさん mailto:sage [2009/03/18(水) 09:24:58 ID:???]
is_intは型判定だろ

381 名前:nobodyさん mailto:sage [2009/03/18(水) 09:39:50 ID:???]
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

382 名前:nobodyさん mailto:sage [2009/03/18(水) 10:52:55 ID:???]
>>376
正規表現で調べればよい
if (preg_match("/^[0-9]+$/", $string)) {
 妥当
}

383 名前:nobodyさん mailto:sage [2009/03/18(水) 10:55:30 ID:???]
>>382
それだとunsigned intじゃ...


384 名前:nobodyさん mailto:sage [2009/03/18(水) 11:00:44 ID:???]
負も調べたいってこと?
なら
if (preg_match("/^-?[0-9]+$/", $string)) {
 妥当
}
かな

385 名前:nobodyさん mailto:sage [2009/03/18(水) 11:03:09 ID:???]
ちなみに指数表記やInfinityまで対応というなら
またパターンを増やせばよい

386 名前:nobodyさん mailto:sage [2009/03/18(水) 11:07:58 ID:???]
あと厳密にintならPHPの場合何バイトかしらないけど(たぶん4?)
その辺も考慮しないといかんかな
strlenで32ビット以内かどうか調べる処理とか

387 名前:nobodyさん mailto:sage [2009/03/18(水) 11:10:31 ID:???]
strlenは関係ない
2^32を2の補数で表した値の範囲かどうかだな
?2147483648〜2147483647



388 名前:nobodyさん mailto:sage [2009/03/18(水) 11:22:00 ID:???]
preg_match("/^-?[0-9]+$/", $string) && $string >= -2147483648 && $string <= 2147483647

389 名前:nobodyさん mailto:sage [2009/03/18(水) 11:46:44 ID:???]
$は改行にもマッチするから、D修飾子を付ける
それから、0123は整数か?

390 名前:nobodyさん mailto:sage [2009/03/18(水) 12:01:38 ID:???]
>>388
厳密な数値かはわからないよね
だってそれだと下のどれでも引っかかるからね

123
-123
"123"
"-123"

391 名前:nobodyさん mailto:sage [2009/03/18(水) 12:13:56 ID:???]
つ[:digit:]

392 名前:nobodyさん mailto:sage [2009/03/18(水) 12:33:33 ID:???]
質問者があいまいなまま補足してくれないのにこぞって答えなくても

393 名前:nobodyさん mailto:sage [2009/03/18(水) 13:00:35 ID:???]
0xa0 だって立派にint型を表現した文字列として妥当といえるよねー


394 名前:nobodyさん mailto:sage [2009/03/18(水) 13:17:37 ID:???]
答えるのが簡単だからだろ?

395 名前:nobodyさん mailto:sage [2009/03/18(水) 13:24:34 ID:???]
死ぬほど既出だけどな

396 名前:nobodyさん mailto:sage [2009/03/18(水) 13:27:19 ID:???]
テンプレ守ってる以上答えてやってもいいだろ
いちいちグチグチ言うやつは黙ってればいい

397 名前:nobodyさん [2009/03/18(水) 14:23:57 ID:R7u4YHhc]
なぜimagecreatefrombmpは無いんですか?
デジカメとかだとBMPで出力するカメラも結構有るし需要あると思うけど。
ビットマップからイメージ作れるユーザー関数ありますか?



398 名前:nobodyさん mailto:sage [2009/03/18(水) 14:25:50 ID:???]
>>397
User Contributed Notesの一番上

399 名前:nobodyさん [2009/03/18(水) 14:47:40 ID:meKzf6DJ]
クラス内のメソッドはだいたい何行くらいで収めるのが目安でしょうか?

400 名前:nobodyさん mailto:sage [2009/03/18(水) 15:58:45 ID:???]
50行くらい

401 名前:nobodyさん mailto:sage [2009/03/18(水) 16:21:37 ID:???]
>>399
そんなのきまってない

402 名前:nobodyさん mailto:sage [2009/03/18(水) 16:42:30 ID:???]
hightide.blog2.fc2.com/blog-entry-146.html

403 名前:nobodyさん mailto:sage [2009/03/18(水) 17:10:10 ID:???]
>>399
画面半分に納めるのはよいプラクティスだって昔だれかがいってた。
スクロールしないと見れないメソッドはクソの匂いがするとも。


404 名前:nobodyさん mailto:sage [2009/03/18(水) 19:19:39 ID:???]
>>392
ザコは黙ってろ

405 名前:nobodyさん mailto:sage [2009/03/18(水) 19:20:32 ID:???]
>>399
pearのコーディング規約に1行何文字程度に収めるか決めてるから参考に読んでこれば

406 名前:nobodyさん mailto:sage [2009/03/18(水) 19:48:17 ID:???]
1行あたりの文字数と
メソッドを何行に収めるかの話が
関係あるのか?

407 名前:nobodyさん mailto:sage [2009/03/18(水) 20:07:04 ID:???]
掛け軸ぐらいな縦長のモニタだったら余裕だなw



408 名前:nobodyさん mailto:sage [2009/03/18(水) 20:37:37 ID:???]
フォントを1ドットにしてもいいぞ

409 名前:nobodyさん mailto:sage [2009/03/18(水) 21:09:42 ID:???]
>>406
既に答えが出てるだろ
ゆとりかおまえ

410 名前:nobodyさん mailto:sage [2009/03/18(水) 21:14:44 ID:???]
お前は何を言ってるんだ

411 名前:nobodyさん mailto:sage [2009/03/18(水) 22:22:03 ID:???]
>>410はゆとりだから気にしなくていいよ

412 名前:nobodyさん [2009/03/18(水) 23:15:59 ID:gf2MXR+O]
本運用のリモートのunix系鯖か、
開発のローカルのwinかで、
デバッグ云々用とかで判別するのは
if (DIRECTORY_SEPARATOR == '/') { ...
で問題なし?

413 名前:nobodyさん mailto:sage [2009/03/19(木) 00:18:23 ID:???]
開発環境をunixにしたくなったら詰むな。
それと、Win環境で本番環境同様の状態をエミュレートしたくなった場合も身動きが取れなくなる。

function isDevelopEnvironment()
とかをどこかグローバルにアクセスできる場所(グローバル関数か、クラスのstatic関数)に置いとけ。
他の場所からはこの関数で判定するようにしておけば、判定方法が変わっても変更が一箇所で済む。
実装と意図の分離は設計の基礎。
呼び出し側でやりたい事(意図)は環境の判別なのだから、関数名はそうなっているべき。
環境を識別するのにDIRECTORY_SEPARATORを使う、ってのは実装の話で、意図じゃない。
(もっと言うなら、開発環境がWinで運用環境がUnixなのも「たまたまそうなってる」だけの、つまり実装依存な話)

で、実装の話だが。
俺ならホスト名を開発環境と本番環境で変えておいて、それで識別する。もしくは設定ファイルか何かに書いておく。
WinとUnixを識別できればそれでいい、ってんなら>412で問題ない。
php_uname()関数の例にもディレクトリ・セパレータでOSを判別するコードが載っている。

414 名前:nobodyさん mailto:sage [2009/03/19(木) 00:19:30 ID:???]
>>379
それ。
is_numeric()は"."を許したよーな気がする。
気をつけたほうがいいよ〜

D:\tools\php-5.2.8-Win32>php -r "var_dump( is_numeric( '1.5' ) ) ;"
bool(true)



415 名前:nobodyさん mailto:sage [2009/03/19(木) 00:31:24 ID:???]
((string)(int) $string === $string)
これはどう?int判定

416 名前:nobodyさん mailto:sage [2009/03/19(木) 00:34:08 ID:???]
PHP_OS

417 名前:nobodyさん mailto:sage [2009/03/19(木) 00:35:21 ID:???]
>>399
行数っていうのとは違うけど
コメントを書かなくていいくらいに分かり易い
っていうのを目安にするといいっていう考え方もあるね。

コメントで「○○を処理する」とか入れるくらいなら
そのまとまりをprivateなメソッドにする感じ。


まぁ好き嫌いもあるけどねー。




418 名前:nobodyさん mailto:sage [2009/03/19(木) 00:46:01 ID:???]
>>285

OOPっていう概念よりも
そもそもプログラミングにおいてクラス使うと何が便利?
って考えたほうが分かりやすいかもしんない。


419 名前:nobodyさん mailto:sage [2009/03/19(木) 00:49:33 ID:???]
DIRECTORY_SEPARATORでOS判定なんてどう考えてもスジが悪いだろ
常識で考えて・・

420 名前:nobodyさん mailto:sage [2009/03/19(木) 01:56:19 ID:???]
>>414
ctype_digit
でいいんじゃないの、バージョン注意だけど

421 名前:nobodyさん [2009/03/19(木) 09:10:09 ID:8+csUcRF]
fsockopenのテストをしているのですが、
ローカルのサーバ(localhost)上ではオープンできないのでしょうか?

if(!$sock = fsockopen("localhost",80,$errNo,$errStr,10)){
echo "エラーです";
}

として開こうとしても、エラーになります。

422 名前:nobodyさん mailto:sage [2009/03/19(木) 09:28:15 ID:???]
なんのために$errNoと$errStrを指定してるんだ

423 名前:421 mailto:sage [2009/03/19(木) 09:32:30 ID:???]
localhostを127.0.0.1にしたら出来ました・・。

424 名前:nobodyさん mailto:sage [2009/03/19(木) 09:39:19 ID:???]
もしかして環境はVistaか?
最近のアップデートで、hostsを書き換えてlocalhostを消すものがあったと話題になってた。

3/10のWindows Defender更新でhostsが書き換えられる!? - スラッシュドット・ジャパン

ttp://slashdot.jp/articles/09/03/11/0924257.shtml

425 名前:nobodyさん [2009/03/19(木) 11:06:59 ID:GwakzSEQ]
【PHPのバージョン】php5.2.8
【質問内容】
クラスのメンバ変数についての質問です。
あるメンバ変数が宣言されたかどうかを調べるにはどうしたらよいでしょうか?
代入はされていないのでissetではダメでした。

426 名前:nobodyさん mailto:sage [2009/03/19(木) 11:10:22 ID:???]
get_object_vars
もしくは
get_class_vars

427 名前:425 mailto:sage [2009/03/19(木) 11:16:32 ID:???]
>>426
超速でありがとうございます
さっそくテストコードにかかってきます。



428 名前:nobodyさん mailto:sage [2009/03/19(木) 11:18:46 ID:???]
is_nullのほうがいいよ

429 名前:nobodyさん mailto:sage [2009/03/19(木) 11:37:30 ID:???]
issetのほうがいいよ

430 名前:nobodyさん mailto:sage [2009/03/19(木) 12:38:06 ID:???]
普通こっちじゃねぇの。
jp.php.net/manual/ja/function.property-exists.php

431 名前:nobodyさん mailto:sage [2009/03/19(木) 13:18:49 ID:???]
h1タグの部分を置換したいです。
もっと、スマートの方法ありますか?
(h1の要素は不特定、ない場合もあります。)

<?php
$file = "
<html><body>
<h1 id=\"news\" name=\"news\" style=\"size: medium;\">WBC速報</h1>
<p>4回裏 2 - 0</p>
</body></html>
";
preg_match_all('/<h1[^>]*?>(.*?)<\/h1>/is',$file , $match);
$tag = $match[0][0];
$title = $match[1][0];
$file = str_replace($tag,"<div>{$title}</div>", $file);
echo $file;
?>

432 名前:nobodyさん mailto:sage [2009/03/19(木) 13:21:15 ID:???]
訂正 スマートな方法

433 名前:nobodyさん mailto:sage [2009/03/19(木) 13:32:20 ID:???]
>>420
ctype_digitってマイナス値の場合falseになるから使えなくね

434 名前:nobodyさん mailto:sage [2009/03/19(木) 14:15:42 ID:???]
>>431
何に置換したいのか書いてないよ

あと>>1

435 名前:nobodyさん mailto:sage [2009/03/19(木) 21:43:36 ID:???]
まだやってんのか。
strval(intval($str)) === $str
でいいだろ、面倒くせえ。

436 名前:nobodyさん mailto:sage [2009/03/19(木) 22:14:40 ID:???]
>>435
これはひどい

437 名前:nobodyさん mailto:sage [2009/03/19(木) 23:11:37 ID:???]
>>420
その関数はバグがあるから使い物にならない



438 名前:nobodyさん mailto:sage [2009/03/20(金) 04:10:54 ID:???]
phpspot.org/blog/archives/2009/03/phpblog.html

439 名前:nobodyさん mailto:sage [2009/03/20(金) 04:22:45 ID:???]
>>438
この人前も誰かにつつかれてキレてたよなw

440 名前:nobodyさん mailto:sage [2009/03/20(金) 08:33:43 ID:???]
三行でまとめてくれ

441 名前:nobodyさん mailto:sage [2009/03/20(金) 08:38:37 ID:???]
お前と同じで内容もロクに読まずに転載してるだけですよ、と言ってあげたい

442 名前:nobodyさん mailto:sage [2009/03/20(金) 08:40:35 ID:???]
phpspotのアフィ厨がきもいのは確かだが、
「悪名高きda.me..@docomo.ne.jpを引っ掛ける一方で、dankogai+regexp@gmail.comを弾いてしまう」
ってのはどうなん?
ドキュモでda.me..@docomo.ne.jpが取得できる以上、
それをウェブアプリ側ではじくわけにはいかないじゃん
RFCを守るべきはdocomoであって、ウェブアプリは現実に準拠するしかない

443 名前:nobodyさん mailto:sage [2009/03/20(金) 08:45:13 ID:???]
phpspotの人は正規表現について語らないほうがいいのでは
labs.cybozu.co.jp/blog/akky/archives/2007/10/phpspot-bad-regex.html

このトラウマを刺激されたから過剰反応したんだなw


444 名前:nobodyさん mailto:sage [2009/03/20(金) 08:47:16 ID:???]
Diggのトップページやdel.icio.us/popularで表示されたページの概要を訳しているだけなんだから、
せめて自分で確かめてから紹介しようよw
>>phpspot

445 名前:nobodyさん mailto:sage [2009/03/20(金) 08:57:25 ID:???]
>442
dankogai+regexp@gmail.com はRFCに準拠している。
ドキュモを弾くかはか方針次第だが、このアドレスを弾いてはいけない。

元々phpspotの提示していたコードが役に立たないのは確か。
出力例が「正しいかもしれない」「間違ってるかもしれない」な事からも明らか。
こういうのは「絶対正しい」「間違ってるかも」、もしくは「正しいかも」「絶対間違ってる」のいずれかを返さなければ糞の役にも立たん。

446 名前:nobodyさん mailto:sage [2009/03/20(金) 09:47:11 ID:???]
準拠してようがおれはそんなメアドは通さねーぞwwwwwwwwwwwwwwwww

447 名前:nobodyさん mailto:sage [2009/03/20(金) 09:59:17 ID:???]
ttp://d.hatena.ne.jp/elf/20060809/1155100104



448 名前:nobodyさん mailto:sage [2009/03/20(金) 10:02:52 ID:???]
プロバイダのメールアドレスをなるべき通したい場合は別にそこまでこだわる必要なし
+\とか記号を入れるメアドなんて普通の人は持ってないだろ

449 名前:nobodyさん mailto:sage [2009/03/20(金) 10:23:25 ID:???]
>448
なんというか、ここにも馬鹿が多いな。
「食べやすい大きさに野菜を切るには」という記事に「カレーは野菜が大きいほうが美味しい」とか言ってるようなものだぞ、それ。

450 名前:nobodyさん mailto:sage [2009/03/20(金) 10:31:42 ID:???]
それ話が通ってるじゃん

451 名前:nobodyさん mailto:sage [2009/03/20(金) 10:49:03 ID:???]
RFCに準拠してさえすればいいってもんじゃない

452 名前:nobodyさん mailto:sage [2009/03/20(金) 10:50:52 ID:???]
>>449
プロバイダやgmailを除いたメジャーなアドレスで記号付きのメールアドレスを取得できる所教えてください


453 名前:nobodyさん [2009/03/20(金) 11:54:25 ID:MICYHS4W]
【OS名】debian etch
【PHPのバージョン】php5.2.0-8
PukiWiki Plus!で「ajaxtree.inc.php」プラグインを使おうとしたのですが
キャッシュファイルの作成が正常に行われず色々と調べてみていたところ
下記の部分でよくわからない動きをしていることがわかりました。 (ajaxtree.inc.php 198行目付近)

foreach ($pages as $page) {
if ($leaf[$page] === false) {
plugin_ajaxtree_update_cache($page);
}
echo $page . " " . $leaf[$page] . "<br>\n"; //debug
}

具体的には「plugin_ajaxtree_update_cache」関数が一度でも実行されると
その時点でループが終わってしまい配列の残りの要素が処理されなくなってしまうといった感じです。
(関数から戻ってきたあとのechoまでは処理されています)
ループ後の「$pages」の値には特に変化が無く、エラーも発生していませんでした。
なぜforeachが途中で止まってしまうのかわからずに困っています。
この場合、どういった原因が考えられるのでしょうか?


454 名前:nobodyさん [2009/03/20(金) 11:55:01 ID:uQ1BNnXR]
トラックバックやpingの受信機能を作っています。

fsockopenで送信されたPOSTやGETを受け取ると思うのですが、
連続送信防止の処理って入れられるのでしょうか?

WEBページのフォーム処理からだと、cookieで制御できると思うのですが
fsockopenは出来ないような気がしています。

455 名前:nobodyさん mailto:sage [2009/03/20(金) 12:00:40 ID:???]
>>453
display_errors
error_reporting
>>454
内容を比較すればいいのでは?

456 名前:nobodyさん mailto:sage [2009/03/20(金) 12:02:10 ID:???]
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>449
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |

457 名前:nobodyさん mailto:sage [2009/03/20(金) 12:06:26 ID:???]
小飼の正規表現はda.me..@docomo.ne.jpを通せないだろ
RFCに準拠するばかりで現実で使えないんじゃ同じようにクソ



458 名前:453 [2009/03/20(金) 12:31:15 ID:MICYHS4W]
>>455
ありがとうございます。
該当するコードに特にエラーなどは発生していませんでしたが解決しました。
配列を関数の戻り値の参照として受け取っていたためおかしな挙動をしていたようでした。
$pages =& plugin_ajaxtree_get_pages();
失礼いたしました。


459 名前:449 mailto:sage [2009/03/20(金) 12:38:12 ID:???]
docomoの非準拠アドレスを通すかとか、gmailの無限アドレスを通すかとかは、メールアドレス正規表現とは別の問題だろ?
実装の問題じゃない。ビジネスロジックの問題だ。何をどこまで許容するかは技術の問題じゃない。
コーディングする奴が勝手に決めてはいけない問題だし、従って前提条件が提示されないと「正しい」コードなんぞ書けっこない。
何が「正しい」のか、仕様が決まってないんだから当たり前だな。

「正しい」メールアドレスを「RF2822準拠」と定めるなら、PHPSPOTや百式のコードは明白に間違っていて、小飼のコードは正しい。
docomoの非準拠アドレスを許容しなければいけない、とか、gmailの無限アドを拒否しないといけない、という条件下なら小飼のコードは間違っているだろう。

実際、小飼の出力メッセージはちゃんと「RFCに準拠しているか」で出るだろ。
あのコードが解こうとしている判定問題は「RFCに準拠しているか」であって、「一般社会で通用するメールアドレスか」じゃない。
それをてめえらは勝手に問題を取り替えてガタガタ抜かしてるだけなんだよ。これだからPHPerは馬鹿だとか言われるんだ。
RFCに準拠していないアドレスが通ったり、準拠しているアドがNGだったら文句を言うべきだが、それ以外は筋違いだ。

460 名前:nobodyさん mailto:sage [2009/03/20(金) 12:41:36 ID:???]
じゃなんで正規表現をblogに書いちゃいけないの?

461 名前:nobodyさん mailto:sage [2009/03/20(金) 12:47:51 ID:???]
>>459
RFCに準拠してる正規表現はブログに書いてもOK
RFCに準拠してない現実に即した正規表現はブログに書いたらNG
ってことですね、わかります

462 名前:nobodyさん mailto:sage [2009/03/20(金) 13:09:05 ID:???]
>>459ってブログの張本人だろ

463 名前:nobodyさん mailto:sage [2009/03/20(金) 16:03:22 ID:???]
>>459
自分ルールを持ち出したのは「PHPer」とか言って悦に入っている人だよな。
っていうか誰この人?

464 名前:nobodyさん mailto:sage [2009/03/20(金) 16:20:44 ID:???]
ほとんどの無料有料サービスの登録時にRFCに100%準拠されたメアドは使えない件

465 名前:nobodyさん mailto:sage [2009/03/20(金) 16:21:47 ID:???]
._-0-9a-zA-Zぐらいしかたいていのサービス登録では使えない件
何が言いたいかというとRFC必死だな(笑)

466 名前:nobodyさん mailto:sage [2009/03/20(金) 18:48:51 ID:???]
弾もPHPERも文末判定に$を使っているが
$は行末判定なので最後に改行コードが付いてても通ってしまう。
ちゃんと\zを使えよ
弾&phpspotともどもm9(^Д^)プギャー!

467 名前:nobodyさん mailto:sage [2009/03/20(金) 18:51:14 ID:???]
$が末尾の改行コードに一致するのってPHPだけじゃなくて?



468 名前:nobodyさん mailto:sage [2009/03/20(金) 18:56:31 ID:???]
preg_matchはperl互換だからそれはないだろ

469 名前:nobodyさん mailto:sage [2009/03/20(金) 19:01:48 ID:???]
perlが死滅した、といっても、
ある程度のシェアを取った言語なので、
perlの正規表現の文法は他の言語にも
そのまま受け継がれていくわけだな。

つまり勉強したことが無駄にならず
再利用できると。

シェアととると、こういう「いいこと」があるんだよな。

470 名前:nobodyさん mailto:sage [2009/03/20(金) 20:16:44 ID:???]
何年か前にperl厨が騒いでた
その上でどんなスクリプトでも走るエンジンみたいのどうなったんだよ
えーこら

471 名前:nobodyさん [2009/03/20(金) 22:34:03 ID:oZ8fGjsV]
javascriptがオンかオフかの情報を知りたいのですがどのような方法が妥当かわかりません
以下のような方法も考えたのですがページを移動するか更新しないとクッキーを読めないので困ってます
どなたかアドバイスお願いいたします


javascriptでクッキーを発行する

クッキーが読み込めたらjavascriptがオン・読み込めなければオフ

472 名前:nobodyさん mailto:sage [2009/03/20(金) 22:44:55 ID:???]
>471
処理の順序を考えれば分かるが、無理。

473 名前:nobodyさん mailto:sage [2009/03/20(金) 22:53:31 ID:???]
ajaxでやればできるでしょ

474 名前:nobodyさん mailto:sage [2009/03/20(金) 23:15:48 ID:???]
そもそも、ページを移動も更新もしてない状態で、サーバ側でJavascript有効かどうか判断しなきゃ
いけない状況って何だろう?

475 名前:nobodyさん mailto:sage [2009/03/20(金) 23:17:56 ID:???]
その状況を考えられないならこの業界で食えませんよ

476 名前:nobodyさん mailto:sage [2009/03/20(金) 23:23:33 ID:???]
ajaxでリクエスト飛んできたらon、飛んでこなかったらoff

477 名前:nobodyさん mailto:sage [2009/03/20(金) 23:42:53 ID:???]
>>475
なんで?
Ajax使う前提なら、こんなことで悩まんでしょ。
有効な時にメッセージ出したいなら、Javascriptで出せば良いし、使えない時にメッセージ出したいなら
NOSCRIPT使えばいいし。

トップページへのアクセスだけで、Javascriptを有効にしてるかどうかサーバ側に記録を取りたいとか、そんな感じ?





478 名前:nobodyさん mailto:sage [2009/03/20(金) 23:59:59 ID:???]
>477
だとしても、JavaScript経由で鯖にアクセスさせるだけだしな。
PHPではできない、というのは正しい。
まあ、質問が抽象的すぎるんでなんとも言えん。どうして質問掲示板の類の質問者は情報を出し惜しみするんだか。

479 名前:nobodyさん mailto:sage [2009/03/21(土) 00:11:32 ID:???]
>>478
それはいいがかり。
おまえだって18世紀にペストにかかったら
「ネズミが運んできた病原菌のせいで感染しました」
とは医者には報告しないはずだ

480 名前:nobodyさん mailto:sage [2009/03/21(土) 00:49:23 ID:???]
たとえのほうがわかりづらいってどういうことよ

481 名前:nobodyさん mailto:sage [2009/03/21(土) 02:16:36 ID:???]
www

482 名前:nobodyさん mailto:sage [2009/03/21(土) 02:24:45 ID:???]
そうか?非常に分かりやすい例えに感じたけど

483 名前:nobodyさん mailto:sage [2009/03/21(土) 02:34:45 ID:???]
479=482wwwww

484 名前:nobodyさん [2009/03/21(土) 19:33:45 ID:Kz7V9K+/]
掲示板を作るのですが共同で作る場合、どのようなシステムを導入するといいですか?

485 名前:nobodyさん mailto:sage [2009/03/21(土) 19:35:17 ID:???]
>>484
git

486 名前:nobodyさん mailto:sage [2009/03/21(土) 22:18:16 ID:???]
サーバサイドのプログラムが永久ループしたらどうやって止めるんですか?
そういうのがあると、レンタルサーバ屋に怒られるんですか?

487 名前:nobodyさん mailto:sage [2009/03/21(土) 22:29:13 ID:???]
コンセント抜けばおk



488 名前:nobodyさん mailto:sage [2009/03/21(土) 22:35:15 ID:???]
>>486
30秒で止まる。

489 名前:nobodyさん mailto:sage [2009/03/21(土) 22:39:17 ID:???]
設定次第だがデフォルトは30秒

490 名前:nobodyさん mailto:sage [2009/03/21(土) 22:46:46 ID:???]
止めるのは鯖屋の仕事だから好きなだけ無限ループさせておk

491 名前:nobodyさん mailto:sage [2009/03/21(土) 23:10:45 ID:???]
とっくに想定済みなんですね。
ありがとうございました。

492 名前:nobodyさん mailto:sage [2009/03/21(土) 23:18:28 ID:???]
まぁ鯖潰したら損害賠償だけどな

493 名前:nobodyさん mailto:sage [2009/03/21(土) 23:38:44 ID:???]
>>492
そんなヤワな鯖ねーよ

494 名前:nobodyさん mailto:sage [2009/03/21(土) 23:40:05 ID:???]
>>492
ちょっと中級者ぶりたい年頃だけど外してるの図

495 名前:nobodyさん mailto:sage [2009/03/22(日) 01:29:46 ID:???]
いきなり本番とかやらなければ普通起こさないと思うけど>無限ループ

496 名前:nobodyさん mailto:sage [2009/03/22(日) 01:34:00 ID:???]
よくCMSなんか見てると、全てのファイルの頭に

/**
*
* @package hogehoge
* @version $Id: index.php 0000 2010-01-01 14:00:00Z hogehoge$
* @copyright (c) 2010 fugafuga
* @license ttp://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

こんなの見かけるけど、これは手動で書いてるんですか?
まさかね?

497 名前:496 mailto:sage [2009/03/22(日) 01:35:02 ID:???]
ID



498 名前:496 [2009/03/22(日) 01:35:33 ID:pWqW8Yq7]
また間違えたorz
ごめんなさい

499 名前:nobodyさん mailto:sage [2009/03/22(日) 03:37:07 ID:???]
>>494-495
マジレスつまらん

500 名前:nobodyさん mailto:sage [2009/03/22(日) 05:17:23 ID:???]
すいません。CMSなどはHTMLファイルを生成するんですよね
メニューに一項目増えた場合 全部のHTMLページを
書き換える処理ってしてるんですか?

501 名前:nobodyさん mailto:sage [2009/03/22(日) 06:09:27 ID:???]
>>500
テンプレートにして動的にしてる場合が多い気がする。
スタティックなHTML吐くのはあまり見たことがない。

502 名前:nobodyさん mailto:sage [2009/03/22(日) 06:19:05 ID:???]
>>501
つまりmod rewriteってことですか?
素人ですいません。

503 名前:nobodyさん mailto:sage [2009/03/22(日) 06:19:37 ID:???]
mod_rewriteがどう関係あるんだ?

504 名前:nobodyさん mailto:sage [2009/03/22(日) 06:22:33 ID:???]
つまりHTMLじゃないけれど、HTMLとしてって方法ですか?
自分はプログラムで呼び出すか、SSIしか思い浮かばないです


505 名前:nobodyさん mailto:sage [2009/03/22(日) 06:23:55 ID:???]
プログラムで呼び出せば?

506 名前:nobodyさん mailto:sage [2009/03/22(日) 06:25:11 ID:???]
CMSってHTMLファイルを作っていくイメージがあったんです
すいません。ただ、require include で呼び出したページは
グーグルランクつきにくいです
SSIにしてみたところ、それよりはわずかにつきやすかったです
CMSがHTMLファイルなら、どうやって外部からメニューを
呼び出しているかわからなかったので

507 名前:nobodyさん mailto:sage [2009/03/22(日) 06:28:00 ID:???]
別に動的でもSEO考慮する方法はいくらでもあるべ?



508 名前:nobodyさん mailto:sage [2009/03/22(日) 06:30:30 ID:???]
>>507
具体的に教えて下さい お願いします
もっどりライトは厳しい感じがしました 結果が

509 名前:nobodyさん mailto:sage [2009/03/22(日) 06:31:26 ID:???]
結果がって?

510 名前:nobodyさん mailto:sage [2009/03/22(日) 06:32:34 ID:???]
>>509
グーグルランクのつきが明らかに悪いです(個人の弱小HP)
そしてSSIに変えたところ、3つほどつきました
現在SSIのほうがPHPによる外部ページ呼び出しよりランクがつきやすいです
内部は全く変えてないです

511 名前:nobodyさん mailto:sage [2009/03/22(日) 06:33:30 ID:???]
じゃSSIでいいじゃん

512 名前:nobodyさん mailto:sage [2009/03/22(日) 06:37:40 ID:???]
(;^Д^) そうですか

513 名前:nobodyさん mailto:sage [2009/03/22(日) 07:18:32 ID:???]
そう

514 名前:nobodyさん mailto:sage [2009/03/22(日) 09:24:55 ID:???]
ひどい自演を見た><

515 名前:nobodyさん mailto:sage [2009/03/22(日) 09:59:58 ID:???]
>>492=499
自分はマジレスじゃなかったことにしようとして外してるの図

516 名前:nobodyさん mailto:sage [2009/03/22(日) 10:04:27 ID:???]
>>492がマジレスなわけないだろ。初心者は半年ROMれよ

517 名前:nobodyさん mailto:sage [2009/03/22(日) 10:06:20 ID:???]
またその話かよ
A型はひつこいな



518 名前:nobodyさん mailto:sage [2009/03/22(日) 10:11:46 ID:???]
ホントに鯖潰したら、普通に損害賠償だけどな。

519 名前:nobodyさん mailto:sage [2009/03/22(日) 10:11:46 ID:???]
初心者(笑)は半年ROMれ(笑)よ

520 名前:nobodyさん mailto:sage [2009/03/22(日) 10:24:48 ID:???]
普通は損害賠償とか面倒なことに発展する前に、凍結されたり追い出されたりする

Nucleusでアクセス解析いれたら劇重になって、翌日、鯖停止->強制解約になったよ。オレ

521 名前:nobodyさん mailto:sage [2009/03/22(日) 10:24:54 ID:???]
>>515
図星で逆ギレの図

522 名前:nobodyさん mailto:sage [2009/03/22(日) 10:56:19 ID:???]
>>492=499=521
m9

523 名前:nobodyさん mailto:sage [2009/03/22(日) 11:33:37 ID:???]
粘着すぎる いつもむかむかしてるのかな

524 名前:nobodyさん mailto:sage [2009/03/22(日) 11:39:35 ID:???]
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

525 名前:nobodyさん mailto:sage [2009/03/22(日) 11:46:58 ID:???]
>>484
バージョン管理システムを導入するといいです

>>496
いくつかのIDEでは/**と入れて改行すると自動で作ってくれます
EclipseのPHPプラグインあたりだと
最初に関数を定義してからその上に/**を入れて改行すると
下の関数を見て引数があったら@param
返り値があったら@returnを生成してくれます
その他については必要であったら自分で記述するか
デフォルトの値として設定可能なものなら設定するしかありません

526 名前:nobodyさん [2009/03/22(日) 11:49:05 ID:dhNIUg3n]
多次元配列へのアクセスを動的にやりたいのですが、
どうすればいいですか?

get_multi_array($array,array('hoge','fuga','poge'))
→$array['hoge']['fuga']['poge']を取得

こういう動作をさせたいのです

527 名前:nobodyさん mailto:sage [2009/03/22(日) 12:30:00 ID:???]
>>492=499=521=523=524
立場が悪くなって第三者のフリをしようとしてるけど外してるの図



528 名前:nobodyさん mailto:sage [2009/03/22(日) 12:43:51 ID:???]
>>527
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

529 名前:nobodyさん mailto:sage [2009/03/22(日) 12:56:54 ID:???]
>>528
無視できない時点で同類だって教わらなかったの?
というより自演バレバレだよ初級者君(笑)

530 名前:nobodyさん mailto:sage [2009/03/22(日) 12:57:11 ID:???]
おまえらケンカしろ byひきこもり塾っぽいの

いいんだよ byスレ回り先生

自作自演する若者はためが無い by湯浅誠

自作自演格差社会 〜492のレス能力格差がスレッドを引き裂く

>>528は、新自由主義者
何でも排除して、格差を作ろうとする


531 名前:nobodyさん mailto:sage [2009/03/22(日) 13:10:43 ID:???]
>>529
邪魔なんだよね〜
これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ

532 名前:nobodyさん [2009/03/22(日) 14:07:27 ID:ofSdd/CM]
モバイルからなのでID固定できませんが質問です
"<a href='".$value."'>"などとしたときに
htmlspecialcharsだけでは変数にscript:〜が含まれていた場合に回避できませんが
変数の前に"sample.com/"とURLがあれば問題ないのでしょうか
実際Firefox,safariなどでは普通にnot foundになります

533 名前:nobodyさん mailto:sage [2009/03/22(日) 14:09:38 ID:???]
>>526
こんなのどう?連想配列でも多分問題ないと思う。

<?php
function get_multi_array(array $a, array $keys) {
$tmp = &$a;

foreach ($keys as $key) {
if (! is_array($tmp) || ! array_key_exists($key, $tmp)) return null;
$tmp = &$tmp[$key];
}

return $tmp;
}

// 以下テスト
$array =array(
array(
array(1,2,3), array(4,5,6),
),
array(
array(7,8,9), array(11,12,13), array(14,15,16)
)
);

var_dump(get_multi_array($array, array(0, 1, 2)));


534 名前:nobodyさん mailto:sage [2009/03/22(日) 14:32:22 ID:???]
>>529は見えない敵と戦ってるとみた

535 名前:nobodyさん mailto:sage [2009/03/22(日) 14:33:52 ID:???]
こんな過疎板で煽り合って自分が上にしたい奴ってうつ病だろな

536 名前:nobodyさん mailto:sage [2009/03/22(日) 15:07:18 ID:???]
>>535
よくぞ見抜いた・・

社会不適合者な俺万歳

537 名前:nobodyさん [2009/03/22(日) 17:29:33 ID:XWTxCtFo]
test



538 名前:nobodyさん [2009/03/22(日) 17:35:05 ID:XWTxCtFo]
<form action="log/200902.htm" method="POST">
<input type="text" name="title" value=""><br>
<textarea cols="80" rows="7" name="text"></textarea>
<input type="submit" value="send">
</form>
<?php
$title="<h2>".$_POST["title"]."</h2>";
$text='<div class="text">'.$_POST['text'].'</div>';
if ( get_magic_quotes_gpc()) {
$title = stripslashes($title);
$text=stripslashes($text);}
$text = nl2br($text);
$log = 'log/200902.htm';
$lock = 'lock.txt';
$lock_fp = fopen($lock,"w");
flock($lock_fp,LOCK_EX);
$old_log = file_get_contents($log);
$fp = fopen($log,"w");
fwrite($fp,$title);
fwrite($fp,$text);
fwrite($fp, $old_log);
fclose($fp);
flock($lock_fp,LOCK_UN);
fclose($lock_fp);
?>
これ、とあるサイトから引用してきたスクリプトなんですけど、どうやっても$_POSTの値を取得できずにlog/200902.htmの内容が<h2></h2><div class="text"></div>と内容が空になってしまいます。
POSTの値を取得するにはどうしたらいいんでしょう?どなたか知識のある方、ご教授下さい。

539 名前:nobodyさん mailto:sage [2009/03/22(日) 17:37:44 ID:???]
とりあえず、<?php の直後で
var_dump($_POST);exit;

540 名前:nobodyさん mailto:sage [2009/03/22(日) 17:39:58 ID:???]
それと form のアクションプロパティはそれでいいのか?>action="log/200902.htm"
自身に送るなら空白

541 名前:nobodyさん mailto:sage [2009/03/22(日) 17:50:34 ID:???]
>>535
よくぞ見抜いた・・

社会不適合者な君万歳

542 名前:nobodyさん [2009/03/22(日) 17:52:24 ID:XWTxCtFo]
早速ありがとうございます。var_dump($_POST);exit;としてみたのですがarray(0) { }としか表示されません...
formのアクションプロパティは合ってるかと思いますが…。log/200902.htmというファイルに書き込みたいので。

543 名前:nobodyさん mailto:sage [2009/03/22(日) 17:55:25 ID:???]
formのactionには
データを渡すスクリプトのパスを書くんだよ

どのファイルに書き込むかとかは、
スクリプトの方で処理すること

$_POSTの中身が空の配列ってことは、
データが渡されてないってこと

544 名前:nobodyさん [2009/03/22(日) 18:02:21 ID:XWTxCtFo]
あ!formのaction属性を空にしてみたらこんな表示が出ました。
array(2) { ["title"]=> string(4) "test" ["text"]=> string(4) "test" }

これはデータが渡されてるということなんでしょうか。しかしlog/200902.htmの中身は相変わらずです…。

545 名前:nobodyさん mailto:sage [2009/03/22(日) 18:09:39 ID:???]
exitしてるからログは書き込まれないよ
それはそうとまずHTMLを理解しないと

546 名前:nobodyさん [2009/03/22(日) 18:12:30 ID:XWTxCtFo]
すみません…。あまりにも無知でした。exitすると処理が終了するということはリファレンスサイトで見たはずなのに…。恥ずかしいです。
HTMLにも理解がありませんでした。重ね重ね恥ずかしいかぎりです…。

547 名前:nobodyさん [2009/03/22(日) 18:17:48 ID:XWTxCtFo]
できました!ご教授下さった方のいう通りにしたらlog/200902.htmに書き込むことができました!
本当に無知な私にここまで親身になってくれてありがとうございました。本当に感謝します。
また何かわからないことがあったら自分で調べて、それでもわからなかったらまたこのスレにお世話になると思います。その時はどうか暖かい目で見てやってください…



548 名前:nobodyさん mailto:sage [2009/03/22(日) 18:27:06 ID:???]
ログファイルがhtmってのなんだかな〜

549 名前:nobodyさん [2009/03/22(日) 18:34:08 ID:XWTxCtFo]
はい。htmlにさせて頂きました...

550 名前:nobodyさん mailto:sage [2009/03/22(日) 18:45:54 ID:???]
いやそういうことをいってんじゃないんだけど
まあいいや

551 名前:nobodyさん mailto:sage [2009/03/22(日) 19:52:51 ID:???]
普通はログはテキストのまま、つまり記事本文だけを保持する。
例えば2chは、以下のようなテキスト形式でデータを保存している(本当は違うんだが、まあ割愛)。
 nobodyさん<><>2009/03/22(日) 18:34:08 ID:XWTxCtFo<> はい。htmlにさせて頂きました... <>
そのログファイルの内容を読み込んで、HTMLとして整形して書き出すPHPで本文を表示させるわけだ。

HTMLで保持しない理由はいくつかある。パッと思いつくのは
柔軟性
 例えば、表示されるHTMLを別の形にしたいとか、RSSも書き出したい、という時に再利用しづらい。
 記事削除passをつけたいとか、データ保持先をDBにしたいとか、色んな拡張性が失われたりもする。
セキュリティ
 本文に<script>alert('うけけけけけ');</script>と書かれたらどうなる?とか。
 どちらにせよ対策は必要なのだが、ログをHTMLとして持っていると、どこで対策すりゃいいのかが曖昧になりやすい。
容量
 無駄にデカくなる。大した問題じゃないが。

552 名前:nobodyさん mailto:sage [2009/03/22(日) 20:56:06 ID:???]
実体参照化してからHTML化すれば?

553 名前:nobodyさん mailto:sage [2009/03/22(日) 23:17:35 ID:???]
やり方にもよるかな
ログをhtmlとして書き出す掲示板はkentも作ってたな

554 名前:nobodyさん mailto:sage [2009/03/22(日) 23:23:17 ID:???]
やり方にもよるって・・

ログをHTMLとして書き出しておくのは
論外といったら失礼かもしれないけど、
明らかに保守性なさすぎじゃないか?


555 名前:554 mailto:sage [2009/03/22(日) 23:29:53 ID:???]
書き出しておく・・じゃなくて
保持しておくだった

556 名前:nobodyさん mailto:sage [2009/03/22(日) 23:30:00 ID:???]
テンプレートとログを分けておいて、記録するときにテンプレートを元にhtml化すればおkだけどな

557 名前:nobodyさん mailto:sage [2009/03/22(日) 23:30:47 ID:???]
XMLみたいなもんと思えば、アリじゃないかとも思う。
一件一行で、ヘッダとフッタを除いた状態で保存するなら、そんなに保守性もわるくないと思うが。



558 名前:nobodyさん mailto:sage [2009/03/22(日) 23:34:55 ID:???]
閲覧が多くて書き込みが少ないのならhtml化してもいいかな

559 名前:nobodyさん mailto:sage [2009/03/22(日) 23:43:37 ID:???]
あめぞうスクリプト見れ

560 名前:nobodyさん [2009/03/22(日) 23:49:52 ID:cLpptsUH]
現在自分が作成しているPHPとMySQlを使ったログイン認証システムで
穴がないか不安になってきたので、質問します。
要点のみを記載します。

・ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合
・正しければトークン用のコードを発行し、ユーザ情報を更新
 (テーブルのtokenフィールドに作成した値を追加)
・その他、セッション変数にはログイン時のUAとIPアドレスを代入
・各ページアクセス毎にセッション情報が正しいかをIFで調べる
(会員情報編集などの場合、ユーザIDとトークンコードが正しいか照合)
・パスワードはmd5で保存

と言うことをしています。他に「これもしろ」と言うことはありますでしょうか?

561 名前:nobodyさん mailto:sage [2009/03/22(日) 23:50:51 ID:???]
ソースを見せるのが早い

562 名前:nobodyさん mailto:sage [2009/03/22(日) 23:51:39 ID:???]
ID(又はメールアドレス)とパスワードをフォームに入力して、
 MySQL内の情報を照合


(1)この時に、SQLインジェクション対策はされているのか?

563 名前:nobodyさん mailto:sage [2009/03/22(日) 23:52:30 ID:???]
md5は破られるのでsha2にしたほうが無難

564 名前:nobodyさん mailto:sage [2009/03/22(日) 23:52:40 ID:???]
>>560
そういうしつもんすると>>562みたいな質問がきりがなく出てくるのでソース出したほうが早い

565 名前:nobodyさん mailto:sage [2009/03/23(月) 00:10:54 ID:???]
>>533
やっぱり再帰ですね
ありがとうございました

566 名前:560 mailto:sage [2009/03/23(月) 00:16:39 ID:???]
>>562
しています。まず入力値にhtmlspecialcharsをかけて
DBアクセス時にmysql_escape_stringをしています。

ソースに関してですが、莫大な量になるので掲載を控えます。
それにソースや構文の組み立てを聞きたいのではなく、
自分の足りない知識・誤っている知識を指摘していただきたく思い、質問しました。

567 名前:nobodyさん mailto:sage [2009/03/23(月) 00:29:46 ID:???]
( ゚д゚)



568 名前:nobodyさん mailto:sage [2009/03/23(月) 01:02:57 ID:???]
>>566
>まず入力値にhtmlspecialcharsをかけて

らめぇええええ

569 名前:nobodyさん mailto:sage [2009/03/23(月) 01:35:27 ID:???]
>>565
否。ただのループ。

570 名前:nobodyさん [2009/03/23(月) 02:53:59 ID:RPfvHZ0v]
test.txt
> 0123456789

test.php
> $fp = fopen("test.txt", "r");
> while(!feof($fp)) {
>   print fread($fp, 1);
>   flush();
>   sleep(1);
> }
> fclose($fp);

test2.php
> $fp = fopen("test.txt", "w");
> fwrite($fp, "aaaaaaaaaa");
> fclose($fp);
>
> $fp = fopen("test.txt", "r");
> print fread($fp, 10);
> fclose($fp);

test.phpが走ってる最中にtest2.php走らせても
test.phpの出力にtest2.phpの書き換えは反映されなかった。

読み出しに関してはルーズな実装してもOKって事?

571 名前:nobodyさん mailto:sage [2009/03/23(月) 05:27:55 ID:???]
flushされるタイミングの都合で、たまたまじゃないかなぁ。

572 名前:nobodyさん mailto:sage [2009/03/23(月) 05:29:12 ID:???]
良く見たら明示的にflush は、してるのか。
ごめん。

573 名前:nobodyさん mailto:sage [2009/03/23(月) 22:30:27 ID:???]
>>560とは別人で悪いんだけど、気になったからよこやり入れさせて。

>>568
ID(もしくはメールアドレス)は、必ずしもブラウザで表示するわけじゃないから、
 ・DB内の情報と照合する時 → mysql_escape_string(mysql_real_escape_string)
 ・ブラウザに表示する時   → htmlspecialchars
みたいにする、ってことでおk?
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'<'って保存されてしまうからっていうことかな。
見当違いだったらすまん。

574 名前:nobodyさん mailto:sage [2009/03/23(月) 22:33:45 ID:???]
連続書き込みスマソ

>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。

575 名前:nobodyさん mailto:sage [2009/03/23(月) 22:38:01 ID:???]
そうやって保存されてしまうからっていうのと、
保存されてしまうことによって再利用するとき不便になるからだね

576 名前:nobodyさん mailto:sage [2009/03/23(月) 22:58:16 ID:???]
test

577 名前:nobodyさん mailto:sage [2009/03/23(月) 23:07:14 ID:???]
>>575
なるほど、いい勉強になった。
ありがとう。



578 名前:nobodyさん [2009/03/23(月) 23:45:08 ID:uVBii4+5]
サーバを再起動したらapacheのerr.logに
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?

579 名前:nobodyさん mailto:sage [2009/03/23(月) 23:53:02 ID:???]
>>573-575
でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?

580 名前:nobodyさん mailto:sage [2009/03/24(火) 00:01:55 ID:???]
どこでサニタイズするかは勝手だが、
100%ってことはないので出口でサニタイズしろってエロい人が言ってた

581 名前:nobodyさん mailto:sage [2009/03/24(火) 00:17:34 ID:???]
サニタイズニダ!

582 名前:nobodyさん mailto:sage [2009/03/24(火) 00:41:05 ID:???]
>>578
PHPのバージョンは?

DOS窓から、php -mや、php -iって打っても、エラー出る?

5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?

583 名前:nobodyさん mailto:sage [2009/03/24(火) 04:21:02 ID:???]
すいません。PHP勉強して半年になります。順調に進んでいたのですが
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?


584 名前:nobodyさん mailto:sage [2009/03/24(火) 04:25:00 ID:???]
そりゃechoですからね
出力だけしてくださいよ

585 名前:nobodyさん mailto:sage [2009/03/24(火) 04:25:16 ID:???]
それは、君が>>1を読めない子ちゃんだから。

586 名前:nobodyさん mailto:sage [2009/03/24(火) 04:26:30 ID:???]
すいません、なぜこれでバグになるかわからないんです
echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )

587 名前:nobodyさん mailto:sage [2009/03/24(火) 04:26:58 ID:???]
>>584
おまいさんは、輪をかけてドアホーみたいだけどな



588 名前:nobodyさん mailto:sage [2009/03/24(火) 04:28:52 ID:???]
>>586
バグってないじゃん。仕様通り
文字列の1文字目を置換してる

589 名前:nobodyさん mailto:sage [2009/03/24(火) 04:30:23 ID:???]
バグって増すよ
<?php

$a[0] = 'aaa';
$a[0][1] = 'jjjjk';

print_r($a);
Array ( [0] => aja )

590 名前:nobodyさん mailto:sage [2009/03/24(火) 04:32:35 ID:???]
>>589
バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。

591 名前:nobodyさん mailto:sage [2009/03/24(火) 04:34:04 ID:???]
>>590
そうなるんですか。知りませんでした。今までやってきて
そんな配列あったんですか 適当に使ってました

592 名前:nobodyさん mailto:sage [2009/03/24(火) 04:34:50 ID:???]
>>591
マニュアルに書いてあるよ。

593 名前:nobodyさん mailto:sage [2009/03/24(火) 04:35:22 ID:???]
自分は初心者なので、配列=箱としか書いてあるものをみたことが
なかったんです。助かりました>>1-589

594 名前:nobodyさん mailto:sage [2009/03/24(火) 04:39:30 ID:???]
変数を array で初期化しないで、いきなり配列として使うのは、どうも生理的・本能的にダメ。

595 名前:nobodyさん mailto:sage [2009/03/24(火) 04:42:07 ID:???]
arrayで初期化しても置き換えられますよ
自分初心者だったのでこんなのあったんだとびっくりしました

596 名前:nobodyさん mailto:sage [2009/03/24(火) 04:46:27 ID:???]
残念ながら>>594が言ってるのは次元の違う話だ
PHP使いは適当がモットーだから気にしなくていい

597 名前:nobodyさん mailto:sage [2009/03/24(火) 04:49:11 ID:???]
>>596
そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました



598 名前:nobodyさん mailto:sage [2009/03/24(火) 07:45:46 ID:???]
2重配列って呼び方であってる?

599 名前:nobodyさん mailto:sage [2009/03/24(火) 07:53:32 ID:???]
2次元配列じゃないよ。そのケース。
単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ

600 名前:586 mailto:sage [2009/03/24(火) 08:34:05 ID:???]
難しいなあそんなの出てこなかった
初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。


601 名前:nobodyさん mailto:sage [2009/03/24(火) 08:34:37 ID:???]
そりゃ初心者本だからだろ

602 名前:nobodyさん mailto:sage [2009/03/24(火) 08:52:05 ID:???]
>>589
バグ

>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345

603 名前:nobodyさん mailto:sage [2009/03/24(火) 08:55:32 ID:???]
>>602
いや、だからそれとやってることは一緒だろ

604 名前:nobodyさん mailto:sage [2009/03/24(火) 08:56:49 ID:???]
602が勘違いしてるんじゃないのかね

605 名前:nobodyさん mailto:sage [2009/03/24(火) 09:01:48 ID:???]
コンパイラ言語はデータ型ちゃんと指定するから
静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている

606 名前:nobodyさん [2009/03/24(火) 09:45:45 ID:VfITkfEn]
>>582
versionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました

C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。

C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、

607 名前:586 mailto:sage [2009/03/24(火) 19:06:44 ID:???]
誰かプロの人
$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい




608 名前:nobodyさん mailto:sage [2009/03/24(火) 19:09:04 ID:???]
>>606
記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。

以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。

609 名前:nobodyさん mailto:sage [2009/03/24(火) 20:03:31 ID:???]
>>607
>>1

610 名前:nobodyさん mailto:sage [2009/03/24(火) 20:04:24 ID:???]
>>606
書いてないから確認しとくけどinclude_pathの設定は?

611 名前:nobodyさん mailto:sage [2009/03/24(火) 20:09:50 ID:???]
>>607
置き換わる理由は仕様だから。それだけ。

$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";

$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}

echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";


612 名前:nobodyさん mailto:sage [2009/03/24(火) 20:14:05 ID:???]
>>606
併せて、php.iniで、extension_dirがC:¥PHP¥extになってるか確認してみて。

613 名前:nobodyさん mailto:sage [2009/03/24(火) 20:15:53 ID:???]
すまんinclude_path関係ないね

614 名前:nobodyさん mailto:sage [2009/03/24(火) 20:36:16 ID:???]
>>606
phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。

以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。

615 名前:nobodyさん mailto:sage [2009/03/24(火) 20:37:10 ID:???]
始めの頃ありがちw

616 名前:nobodyさん [2009/03/24(火) 21:07:22 ID:/zsLtnA9]
クラスの数が多くなってきたので(__autoloadで読み込み)
複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします

617 名前:nobodyさん mailto:sage [2009/03/24(火) 21:09:24 ID:???]
計れば良いのでは?



618 名前:nobodyさん mailto:sage [2009/03/24(火) 21:18:30 ID:???]
>複数クラスを一つのファイルにまとめたら速くなるのではと
再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな

619 名前:606 [2009/03/25(水) 00:12:15 ID:4yhBz/QX]
みなさんたくさんのレスありがとうございます

>>612
そうなってました
>>614
C:\WINDOWS  でした。正しいですよね…

>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな

620 名前:nobodyさん mailto:sage [2009/03/25(水) 00:32:37 ID:???]
>616
ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。

ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。

621 名前:nobodyさん mailto:sage [2009/03/25(水) 01:59:46 ID:???]
>>616
環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。

自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。

622 名前:nobodyさん [2009/03/25(水) 11:16:26 ID:yQlt60AA]
PDOで永続接続を使っている場合、prepareを使うと2回目以降の実行が効率化するんでしょうか
それとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか

623 名前:nobodyさん mailto:sage [2009/03/25(水) 11:18:39 ID:???]
prepareって接続してんの?

624 名前:nobodyさん [2009/03/25(水) 15:06:05 ID:Ijn9qBql]
htmlspecialchars($var, ENT_QUOTES, 'utf-8')
でhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#〜;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?

625 名前:nobodyさん mailto:sage [2009/03/25(水) 15:15:24 ID:???]
出力するときに&に置換すればいいじゃん

626 名前:nobodyさん mailto:sage [2009/03/25(水) 16:45:47 ID:???]
フォームの処理でmethodがpostの場合、
一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?

header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。

627 名前:626 [2009/03/25(水) 16:47:05 ID:7ip+uIiL]
すみません、ID隠してました・・・



628 名前:nobodyさん mailto:sage [2009/03/25(水) 17:24:35 ID:???]
>>626
ブラウザの仕様なのでPHPでどうこうできる問題じゃない

629 名前:nobodyさん [2009/03/25(水) 19:52:08 ID:Ut4OfJaE]
俺のマシンはwinXPの32ビットで4Gのメモリを積んでます。
システムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。

スペックはアパッチ、PHP5

630 名前:nobodyさん mailto:sage [2009/03/25(水) 20:13:46 ID:???]
>>629
んなこたーない

631 名前:nobodyさん mailto:sage [2009/03/25(水) 20:38:00 ID:???]
メモリ使ったら速くなる?

632 名前:nobodyさん mailto:sage [2009/03/25(水) 20:47:09 ID:???]
>>626
「リロード対策」というキーワードでググると
情報が出てくる。

だが、自分には複雑すぎて理解できなかったが。

633 名前:nobodyさん [2009/03/25(水) 21:30:14 ID:POBIuYee]
問題の切り分けレベルですいませんが
kokusan.syokuryo.jp/blog_parts.html
このblogパーツですが中身のjs↓
kokusan.syokuryo.jp/blogparts/kokusanParts.js
を機能丸ごと再現してみたいのですが(用途は勉強、兼遊びで)

再現するのに
■サーバサイドの技術は何が必要か
■ローカル側は.jsだからとりあえずはコピペで十分?
という所で(入口ですが)詰まってます。
どなたかご助言plz


634 名前:nobodyさん mailto:sage [2009/03/25(水) 21:32:29 ID:???]
まずJavaScriptの基礎から学ぶといいかと

635 名前:nobodyさん mailto:sage [2009/03/25(水) 21:50:38 ID:???]
>>629
画像データをメモリ上に読み込んだりしない限り
そんな使うことはないだろ
重い処理なんていってもPHPの場合たかがしれてる

636 名前:nobodyさん mailto:sage [2009/03/25(水) 23:08:42 ID:???]
>>625
そうですね
そもそも&までエスケープする仕様はやりすぎのような・・
2chでも&はエスケープしてないし。googleも。

637 名前:nobodyさん mailto:sage [2009/03/25(水) 23:23:27 ID:???]
>>636
xmlデータにおいては、&は実体参照必須だけどね。



638 名前:nobodyさん mailto:sage [2009/03/26(木) 00:04:21 ID:???]
>636
気に食わないなら文句言ってないで自分で実装すりゃいいじゃん。
単純に置換するだけだから、str_replace一発でできるぞ。

俺はやりすぎとは思わないな。入力文字列をそのまま画面に出力したいなら、&の置換もしたほうがいい。

639 名前:nobodyさん [2009/03/26(木) 00:25:15 ID:l1PHOXdz]
数値を0.5刻みでフォーマットしたいのですが、
何かスマートな方法はありますでしょうか?

(例)

1.0以上1.5未満 => 1.0
1.5以上2.0未満 => 1.5
2.0以上2.5未満 => 2.0

よろしくお願いします。

640 名前:nobodyさん mailto:sage [2009/03/26(木) 00:35:55 ID:???]
>>639
2倍にして切り捨てて半分にする

641 名前:nobodyさん mailto:sage [2009/03/26(木) 00:39:42 ID:???]
>>639
四捨五入じゃなくて?

642 名前:nobodyさん mailto:sage [2009/03/26(木) 00:39:59 ID:???]
>>638
安全にこしたことはないですが、今回は実体参照を頃されてしまうのが問題なので・・
それにしても、エンコードを意識せず、単に置換したらいいだけなんですか?
だとしたら、htmlspecialcharsのエンコード指定は何に使われているんだろう

643 名前:nobodyさん mailto:sage [2009/03/26(木) 00:55:11 ID:???]
>>639
round

644 名前:nobodyさん [2009/03/26(木) 01:05:32 ID:fG8U3yBv]
MySQLのSQL文のWHEREを
$where_ary = array("id"=>"1","name"=>"あああ");
foreach($where_ary as $key=>$value){
$array[] = $key."='".$value."'";
}
$where = join("&",$array);

と言うように連想配列を使って生成しています。
上記のようにすると、変数に値が入っている場合は大丈夫なのですが、
MySQLの関数(NOWやDATE_FORMATなど)を使いたい時、使えません。
かといって値の部分に関数を記述しても文字列となります。

もっと効率よく生成するには、どのようにすれば良いのでしょうか?

645 名前:nobodyさん mailto:sage [2009/03/26(木) 01:07:24 ID:???]
>>642
指定はできるけど、何も使われていない、って情報が
どっかのブログに書いてあった

646 名前:nobodyさん mailto:sage [2009/03/26(木) 01:23:03 ID:???]
>>644
Zend_Dbの実装はこんな感じ
framework.zend.com/manual/ja/zend.db.html#zend.db.adapter.quoting

647 名前:nobodyさん mailto:sage [2009/03/26(木) 01:52:56 ID:???]
framework.zend.com/manual/ja/zend.db.select.html#zend.db.select.building.columns-expr



648 名前:644 mailto:sage [2009/03/26(木) 02:06:29 ID:???]
>>646-647
これは非常に参考になります。
実際に自分もSQL文の生成にはクラスを使っているので
Zend Dbを参考に、独自の仕様にしてみます。

649 名前:nobodyさん [2009/03/26(木) 11:39:12 ID:p1YkL4wy]
WindowsにCLIでインストールされたPHPでphp -a ではなく、
ある程度インラインで入力してからまとめて実行したいのですが、
どうすればできますか?


650 名前:nobodyさん mailto:sage [2009/03/26(木) 13:22:22 ID:???]
>>649
C:\>php

651 名前:nobodyさん [2009/03/26(木) 18:55:54 ID:JIscrcVE]
phpで、「何時間毎に」とか、「何月何日に」とかいう指定で、プログラムを走らせたりメールおくったりするにはどうすればいいでしょうか?

652 名前:nobodyさん mailto:sage [2009/03/26(木) 19:01:47 ID:???]
>>651
cron

653 名前:nobodyさん mailto:sage [2009/03/26(木) 19:02:58 ID:???]
>>651
それか、そのファイルに対する最終アクセス時刻を記録しておいて、
「前回のアクセスは3日前だな、、、
だったらよし、今回は3日分の処理を一気にやればいいんだな」
とかってプログラムで判断させて、アクセスするたびに
その処理を実行するとか。

もちろん、この場合、アクセスがなければ処理も実行されない。

654 名前:nobodyさん mailto:sage [2009/03/26(木) 19:03:41 ID:???]
Windowsだったら、タスク スケジューラ
それがUNIXのcronと同じ。

655 名前:nobodyさん mailto:sage [2009/03/26(木) 19:08:12 ID:???]
>>651
こういうこと?
ttp://phpspot.org/blog/archives/2005/11/croncronphp_pse.html

656 名前:nobodyさん mailto:sage [2009/03/26(木) 19:31:31 ID:???]
クソサイトの宣伝すんなや
web cron

657 名前:nobodyさん mailto:sage [2009/03/26(木) 20:06:05 ID:???]
すぐ吠えるDQNって・・・どこまで底辺なんだよ



658 名前:nobodyさん [2009/03/26(木) 20:59:43 ID:JIscrcVE]
ありがとう、普通にcronすればよかった、トンクス

659 名前:nobodyさん mailto:sage [2009/03/26(木) 21:05:33 ID:???]
>>649
STDINを使えという話ではなくて?
jp.php.net/manual/ja/features.commandline.php

660 名前:nobodyさん [2009/03/26(木) 21:23:14 ID:ih4lRG32]
PHPのソースを読んでコメントを抽出する正規表現を書きたいのですが
どうにもうまくヒットさせることができません
/**  */  */
の時に長い方がマッチされてしまいます
どう書けばいいですか?

661 名前:nobodyさん mailto:sage [2009/03/26(木) 21:32:53 ID:???]
"!/\*(.*?)\*/!s"

662 名前:nobodyさん mailto:sage [2009/03/26(木) 21:48:28 ID:???]
>>661
できました!ありがとうございました。
*?で最短にマッチさせられるんですね

663 名前:nobodyさん [2009/03/26(木) 23:16:05 ID:46RAjvuH]
fgetcsv関数って基本的にwhileとセットで使うの?

664 名前:nobodyさん mailto:sage [2009/03/26(木) 23:23:56 ID:???]
retunr値が配列なだけだろ

665 名前:nobodyさん [2009/03/27(金) 07:08:11 ID:viybN2w6]
symfonyにあるような、
ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした

666 名前:nobodyさん mailto:sage [2009/03/27(金) 08:05:52 ID:???]
>>665
既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。

jp.php.net/manual/ja/book.tokenizer.php

667 名前:nobodyさん [2009/03/27(金) 09:19:56 ID:DtOzsPN+]
rename関数でフィアルを移動するプログラムを書いています
移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?



668 名前:nobodyさん mailto:sage [2009/03/27(金) 09:23:54 ID:???]
うん

669 名前:nobodyさん mailto:sage [2009/03/27(金) 15:04:57 ID:???]
>>666
こんな便利そうなものがあったとは!
まさに欲しかったものです
ありがとうございました

670 名前:nobodyさん [2009/03/27(金) 15:35:49 ID:LbT/oMC/]
ただ今MVCにてアプリケーションを作成していて
モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?

671 名前:nobodyさん mailto:sage [2009/03/28(土) 00:29:13 ID:???]
>670
MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。

672 名前:nobodyさん mailto:sage [2009/03/28(土) 00:34:00 ID:???]
バリデーションがC??

673 名前:nobodyさん mailto:sage [2009/03/28(土) 02:42:46 ID:???]
画面やテーブルごとにチェックする項目が異なるのに
バリデーションがCはありえない

674 名前:nobodyさん [2009/03/28(土) 06:25:24 ID:xuBHT5om]
newしたオブジェクトを変数に代入せずにメソッドを呼びたいのですが
そういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです

675 名前:nobodyさん mailto:sage [2009/03/28(土) 06:46:27 ID:???]
>>674
74street.ddo.jp/index.php?PHP%2Ftips%2Fphp003
これかな?

ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。

class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);

676 名前:nobodyさん mailto:sage [2009/03/28(土) 08:45:03 ID:???]
>>674
それは不可能

677 名前:nobodyさん mailto:sage [2009/03/28(土) 08:49:24 ID:???]
>>676
お前、馬鹿だろ
前のレスで完結してるのにわざわざくだらん横槍を入れる必要はない



678 名前:nobodyさん mailto:sage [2009/03/28(土) 08:56:18 ID:???]
静的メソッドしか呼び出せないじゃん

679 名前:nobodyさん mailto:sage [2009/03/28(土) 08:58:31 ID:???]
>>676じゃないが、>>675 は別モンだと思うけどな。

>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。

680 名前:nobodyさん mailto:sage [2009/03/28(土) 11:44:19 ID:???]
というか何の意味があるんだろう

681 名前:nobodyさん [2009/03/28(土) 12:52:45 ID:0oeFWAvW]
マニュアルを見てもいまいちわからないのですが
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
echo $b;
期待する結果は48ですが実際は44になります。($bには2行目の結果が入ったままってことでしょう)
2行目を$b = &$a * 2;のようにすると24になります。(*2は無視?)
期待する結果を表示するにはどのように記述すればいいのでしょうか。
PHP5.2.6

682 名前:nobodyさん mailto:sage [2009/03/28(土) 14:13:07 ID:???]
>>681
言いたい事は理解できた
$b は常に $aに入れた値を2倍にする変数にしたいという事だな

2行目の $b = $a * 2 は $bに$aの値を2倍した値を入れるという命令だ
だから2行目では$bで$a(2)*2で4が入って3行目で4が出力、
4行目で$aに4を代入しているが5行目では$bは変化無しの4が表示されるから44となる

そして $b =& $a * 2 は変数の参照という事になって $b に入れた値は $a にも反映されるという事だ
2行目で変数&bは$aを参照しているとしているから3行目で2が表示されて
4行目で$aに4を入れているが$aと$bは参照の関係にあるから$bは4となり24となる

変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?

683 名前:nobodyさん mailto:sage [2009/03/28(土) 14:21:32 ID:???]
>>681
掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;

684 名前:nobodyさん [2009/03/28(土) 14:30:41 ID:jCCBzDpK]
pChartを使ってレーダーチャートを描いています。
デフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。

どなたか分かる方がいましたら、よろしくお願いします。

685 名前:681 [2009/03/28(土) 15:12:28 ID:0oeFWAvW]
>>682-683
ありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。

686 名前:nobodyさん mailto:sage [2009/03/28(土) 15:25:27 ID:???]
多分681がイメージしているような、「$aを2倍して返す処理」自体を$bに変数として格納するような仕組みはクロージャという。
関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。

687 名前:nobodyさん [2009/03/28(土) 16:48:33 ID:y1nm6eda]
POSTされた各フォーム毎の項目チェックをする時に、
$_POSTを直接チェックするのは何か問題がありますか?

if(!isset($_POST["name"])){
echo "未記入です";
}

それか全て一旦POSTを変数に代入してチェックした方がいいですかね?



688 名前:nobodyさん mailto:sage [2009/03/28(土) 17:15:52 ID:???]
まったく問題ない

689 名前:687 mailto:sage [2009/03/28(土) 17:25:52 ID:???]
>>688
返信ありがとうございます。
なんとなく自信がなく聞いてみたんですが安心しました。
ありがとうございました。

690 名前:nobodyさん mailto:sage [2009/03/28(土) 19:01:42 ID:???]
このスレを見ている人はこんなスレも見ています。(ver 0.20)
【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]

このスレに変態がいる!!

691 名前:nobodyさん mailto:sage [2009/03/28(土) 19:31:18 ID:???]
phpの関数名でググった時
公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど

692 名前:nobodyさん mailto:sage [2009/03/28(土) 19:36:20 ID:???]
>>691
>>1

693 名前:nobodyさん mailto:sage [2009/03/28(土) 22:31:41 ID:???]
>>690
呼んだ?

694 名前:nobodyさん mailto:sage [2009/03/28(土) 22:48:03 ID:???]
journal.mycom.co.jp/news/2009/03/26/029/index.html

695 名前:nobodyさん mailto:sage [2009/03/28(土) 22:52:21 ID:???]
GOTO文wwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

696 名前:nobodyさん mailto:sage [2009/03/28(土) 23:16:06 ID:???]
GOTOを否定する奴は例外も使うなよ

697 名前:nobodyさん mailto:sage [2009/03/28(土) 23:27:52 ID:???]
gotoよりはfinallyが欲しかったねぇ。
なんか都合があるんか知らんが。



698 名前:nobodyさん mailto:sage [2009/03/29(日) 05:04:23 ID:???]
gotoってどういうときにつかうの?

699 名前:nobodyさん mailto:sage [2009/03/29(日) 06:25:15 ID:???]
帰ってきてほしくない時

700 名前:nobodyさん mailto:sage [2009/03/29(日) 09:35:20 ID:???]
人生をやり直したいとき

701 名前:nobodyさん [2009/03/29(日) 13:21:29 ID:EDw1f4T+]
define("TEST",realpath("."));

という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');

としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。

702 名前:nobodyさん mailto:sage [2009/03/29(日) 13:28:04 ID:???]
表示ってどこに?ソースコード中に?

703 名前:701 mailto:sage [2009/03/29(日) 13:29:17 ID:???]
>>702
fopenでファイル作成する時に、その出力側のファイル上に

include_once('/home/test/public_html'.'/test.php');

という形で記述されて欲しいのです。

704 名前:nobodyさん mailto:sage [2009/03/29(日) 13:31:15 ID:???]
意味が分からない
fopenでtest.phpを作成するってこと?

705 名前:nobodyさん mailto:sage [2009/03/29(日) 19:34:50 ID:???]
fopenはファイル開くだけだろ。PHPとしては動かないよ
PHPスクリプトをファイルとして開く理由がわからんが

706 名前:nobodyさん [2009/03/29(日) 20:07:08 ID:g6t/L+Oe]
atelier-ps3.jp/rorona/

このサイトいくらぐらい掛かってると思いますか?


707 名前:nobodyさん [2009/03/29(日) 20:07:18 ID:A+4tAAtu]
配列で存在しないキーにアクセスするとnoticeが出るはずですが、
以下のようにすると出ません。
これは何故ですか?

error_reporting(E_ALL | E_STRICT);

class Hoge {
protected $_value = array();

public function & getEntity($key){
return $_value[$key];
}
}

$hoge = new Hoge();
var_dump($hoge->getEntity('no_key'));



708 名前:nobodyさん mailto:sage [2009/03/29(日) 20:08:51 ID:???]
return $this->_value[$key];
でした
結果は同じですが

709 名前:nobodyさん mailto:sage [2009/03/29(日) 20:18:24 ID:???]
参照だから。

710 名前:nobodyさん mailto:sage [2009/03/29(日) 20:20:00 ID:???]
リファレンス返してるからだろ

711 名前:nobodyさん mailto:sage [2009/03/29(日) 20:23:38 ID:???]
リファレンスだと何故noticeが出ないのですか?

712 名前:nobodyさん mailto:sage [2009/03/29(日) 20:34:22 ID:???]
リファレンスって何か知らんで使ってんの?

713 名前:nobodyさん mailto:sage [2009/03/29(日) 21:07:35 ID:???]
>>711
参照を張るとzvalが増えて変数を定義したのと同じことになるからな。
計算機の基礎だと思うが。

714 名前:nobodyさん mailto:sage [2009/03/29(日) 22:45:02 ID:???]
>>696
強盗みたいだから否定してるのであって例外は問題ない、というのが今の反GOTO派の主流

715 名前:nobodyさん [2009/03/29(日) 23:05:06 ID:lmZMeLkn]
【OS名】CentOS 5.1
【PHPのバージョン】php5.16
【連携ソフトウェア】mysql
【質問内容】

print'<tr>';
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
}

MySQL から 特定のフィールドを取得し,HTML のテーブルに5列ずつ表示しようとしております。
5列毎にprint'</tr>';を挿入して
テーブルの行数をかえたいのですが,どのようにすればよろしいでしょうか?

【求める結果】MySQL テーブルのの行数が8行の場合
<tr>
<td>NAME1</td>
<td>NAME2</td>
<td>NAME3</td>
<td>NAME4</td>
<td>NAME5</td>
</tr><td>
<td>NAME6</td>
<td>NAME7</td>
<td>NAME8</td>
</tr>



お手数ですがよろしくお願いします。

716 名前:nobodyさん mailto:sage [2009/03/29(日) 23:19:48 ID:???]
pager?

717 名前:nobodyさん mailto:sage [2009/03/29(日) 23:21:58 ID:???]
>>713
なるほど、参照を張ると変数定義と同じになるんですね。



718 名前:nobodyさん mailto:sage [2009/03/29(日) 23:22:53 ID:???]
雑だけど。

$i = 1;
while ($row = mysql_fetch_object($res)){

print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
 ++$i;
}
}

719 名前:nobodyさん mailto:sage [2009/03/29(日) 23:28:38 ID:???]
>715
HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?

>718
<tr>がない。

720 名前:715 [2009/03/29(日) 23:39:03 ID:lmZMeLkn]
ご回答ありがとうございます。

>>718 を参考にして,
$i = 1;
while ($row  = mysql_fetch_object($res )){
if($i == 1){
print'<tr>';
}
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
としてみました。
>>719 の件については,とりあえず暫定的に MySQL 内の行数を5の倍数にしておきます。


皆様ありがとうございました。

721 名前:nobodyさん [2009/03/30(月) 05:37:45 ID:Sq1DK82P]
DBなどすべてUTF-8で構築しております。
そのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。

$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));

ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value


※もうひとつのスレッドでは答えがわからずじまいで、
 どうしたらよいかヒントだけでもつかめたらと思います。
 どうぞお願いいたします。

722 名前:nobodyさん mailto:sage [2009/03/30(月) 08:22:50 ID:???]
マルチ乙

723 名前:nobodyさん [2009/03/30(月) 12:12:19 ID:ObvykTsh]
初心者ですが質問させて下さい。
www.gen-x-design.com/projects/php-thumbnailer-class/
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?



724 名前:nobodyさん mailto:sage [2009/03/30(月) 12:16:26 ID:???]
スクリプトの仕組み解らなくてもOSのファイル検索くらいは使えるだろ

725 名前:nobodyさん [2009/03/30(月) 12:28:05 ID:ObvykTsh]
OSのファイル検索?
実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?

726 名前:nobodyさん mailto:sage [2009/03/30(月) 12:41:43 ID:???]
いやだからファイル探したいならファイル検索すればいいじゃん

727 名前:nobodyさん [2009/03/30(月) 12:49:44 ID:ObvykTsh]
検索したくても、どんな形式でどんなファイル名で保存されてるかわからないので
画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです




728 名前:nobodyさん mailto:sage [2009/03/30(月) 13:07:26 ID:???]
別に保存されてないんじゃねーの?

729 名前:nobodyさん mailto:sage [2009/03/30(月) 13:09:40 ID:???]
これしてねーんだろ
$thumb->save('path/to/file.jpg',80);

730 名前:nobodyさん [2009/03/30(月) 13:13:48 ID:ObvykTsh]
あ、それしてないですね
それをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?


731 名前:nobodyさん mailto:sage [2009/03/30(月) 13:26:05 ID:???]
サムネで表示しただけで保存されるほうがうっとうしいわ

732 名前:nobodyさん mailto:sage [2009/03/30(月) 13:53:38 ID:???]
っということは、大きい画像を元に
サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに

733 名前:nobodyさん [2009/03/30(月) 14:28:36 ID:Nai97eUH]
頭がこんがらがってしまったので質問させて下さい。
データベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。

734 名前:nobodyさん mailto:sage [2009/03/30(月) 14:50:52 ID:???]
それでいいよ

735 名前:nobodyさん mailto:sage [2009/03/30(月) 15:01:56 ID:???]
>>733
jp.php.net/manual/ja/pdostatement.rowcount.php
とか類似関数で。

736 名前:733 mailto:sage [2009/03/30(月) 15:12:04 ID:???]
>>734-735
返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。

737 名前:nobodyさん [2009/03/30(月) 18:45:52 ID:Gjy/ZAJ6]
【OS名】Ubuntu 8.10
【PHPのバージョン】5.2.6-2ubuntu4.1
【連携ソフトウェア】Apache/2.2.9
【質問内容】
PHPをさわり初めて一日目の初心者です。
header ( "HTTP/1.0 404 Not Found" , true , 404 );で、.htaccessで指定した404エラーページを
表示させたいのですが、ブランクページになって表示されません。
確かに404エラーページはファイル自体が存在していない場合のみ表示されますので、Location:で
存在しないファイルにリダイレクトさせて見たところ、見事404エラーページが表示されました。
しかし、この方法はアドレスが変更されてしまうので、できればそのPHPのアドレスで、404エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。



738 名前:nobodyさん mailto:sage [2009/03/30(月) 23:26:09 ID:???]
>>737
readfileでエラーページの内容をそのまま流しちゃダメなの?
jp.php.net/manual/ja/function.readfile.php

739 名前:nobodyさん mailto:sage [2009/03/31(火) 06:15:24 ID:???]
クラスについて質問です。
ttp://www.m-fr.net/study/object/object04.html
このサイトで、

>で、こうします。

>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定

とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。

740 名前:nobodyさん mailto:sage [2009/03/31(火) 08:44:30 ID:???]
2行目で得た値を3行目で使っているわけではないと思うぞ?
getとsetの別々の事例かと
あとスレタイ

741 名前:nobodyさん [2009/03/31(火) 10:26:43 ID:MdY2FCLh]
WindowsXP上で開発を行っているのですが、
Windowsの絶対パスでrequireで読み込むとエラーになります。

require_once("C:\htdocs\test.php");

failed to open stream: Invalid argument

どうしたら読み込めるようになるのでしょうか?

742 名前:nobodyさん mailto:sage [2009/03/31(火) 10:35:59 ID:???]
echo "C:\htdocs\test.php"; やってみそ

743 名前:nobodyさん mailto:sage [2009/03/31(火) 10:53:51 ID:???]
>>683
今コード用意しますのでちょっと待っててくださいね

744 名前:nobodyさん mailto:sage [2009/03/31(火) 11:14:25 ID:???]
アンカ間違えましたね^^;
>>681さんおすきなほうどうぞ

その1
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";}

$a = 2;
$b = 2;
cale($a,$b);
$a = 4;
cale($a,$b);



その2
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";
}

// $aと$bはそれぞれ別の値を持てる
$a = 2;

$b = 2;
$cale($a,$b);

// $aと$bは常に同じ値になる
$b = &$a;
$a = 100;
cale($a,$b);
$a = 5;
cale($a,$b);

745 名前:nobodyさん mailto:sage [2009/03/31(火) 11:20:52 ID:???]
>>737

rewrite

746 名前:nobodyさん mailto:sage [2009/03/31(火) 12:20:45 ID:???]
>>737
あなたのやろうとしてることはおすすめできない

747 名前:nobodyさん mailto:sage [2009/03/31(火) 13:58:39 ID:???]
>>737
アパッチ「俺の仕事はもう終わってんだからバックパスすんな」



748 名前:nobodyさん [2009/03/31(火) 15:08:08 ID:H7khy467]
+食べ物
++りんご
++バナナ
++ぶどう


↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?

<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>

749 名前:nobodyさん mailto:sage [2009/03/31(火) 15:12:34 ID:???]
wikiのソース見ればいいのでは?

750 名前:nobodyさん mailto:sage [2009/03/31(火) 15:19:27 ID:???]
>>749
HTMLソース見てもしょうがないだろw

751 名前:nobodyさん mailto:sage [2009/03/31(火) 15:27:10 ID:???]
>>749
そんなんで片付くならこのスレが82代まで行かないでしょw
答えてやればいいじゃんwww

752 名前:nobodyさん [2009/03/31(火) 15:27:12 ID:qal8dqXu]
>>738,745
ありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。

もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: www.example.com/") ;」
などのリダイレクトであれば大丈夫ですか。

753 名前:nobodyさん [2009/03/31(火) 15:27:13 ID:WkuOnscP]
【OS名】TurboLinux
【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。

.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。

これでhostname/index.phpを開くと、
画面上部に「test」と表示されることを期待しているのですが、
TurboLinux + PHP4.3.11のサーバーでは実際は何も表示されませんでした。

もうひとつUbuntu + PHP5.2.4のサーバーがあるのですが、
そちらに同様のコードを設置したところ、意図したとおりに動きました。

何か設定の問題だとは思うのですが、何が問題なのか分からずに困っています。
ひとまず以下のことを試しました。

・phpinfoを確認 ⇒ auto_prepend_fileのLocal Valueは「ap.php」になっている
・auto_prepend_fileの設定をわざと"ap2.php"にした ⇒ ファイルが読み込めないエラー
・ap.phpの中身をわざと文法エラーにした ⇒ 何のエラーも出ない(display_errorsはon)
・ap.php、index.phpの両方でWarningが出るようにした ⇒ index.phpのWarningのみが表示される
・ap.phpの一行目(<?〜?>の外側)に「aaaaa」を追加 ⇒ 何も表示されない

どうもauto_prepend_fileでap.phpを読み込んではいるものの、
ap.phpのコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。

754 名前:nobodyさん mailto:sage [2009/03/31(火) 15:50:33 ID:???]
>>753
>ap.phpの中身は「<? echo("test"); ?>」です。

<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨

755 名前:nobodyさん mailto:sage [2009/03/31(火) 15:53:09 ID:???]
>>753
よくわかんないけど全てのページのヘッダに挿入するならmod_layout
ttp://d.hatena.ne.jp/hogem/20090321/1237569005

756 名前:nobodyさん mailto:sage [2009/03/31(火) 19:15:21 ID:???]
>>748
質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。

757 名前:nobodyさん mailto:sage [2009/03/31(火) 20:09:26 ID:???]
>>748
ttp://d.hatena.ne.jp/noopable/20090202/1233528691



758 名前:nobodyさん mailto:sage [2009/03/31(火) 22:31:20 ID:???]
>674
今日めっけた
ttp://d.hatena.ne.jp/anatoo/20090320/1237530764

function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();

良し悪しはともかく、発想は面白い。

759 名前:nobodyさん mailto:sage [2009/03/31(火) 22:32:52 ID:???]
そこまでして1行にして何のいいことがあるんだろう

760 名前:nobodyさん mailto:sage [2009/03/31(火) 23:09:23 ID:???]
余計な関数が増えることには何の抵抗もないのかw

761 名前:nobodyさん mailto:sage [2009/03/31(火) 23:32:57 ID:???]
一時変数が(複数の場所で)増える事と関数が増える事のトレードオフなら、俺なら関数を増やす。
このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。

762 名前:nobodyさん mailto:sage [2009/03/31(火) 23:35:38 ID:???]
他言語でできるのにPHPでできないのがむかつくんだよな

763 名前:nobodyさん mailto:sage [2009/03/31(火) 23:38:29 ID:???]
オブジェクトの基底クラスにstaticなnewが実装できたら
Hoge::new()->doSomething();
ってできるのにな

764 名前:nobodyさん mailto:sage [2009/04/01(水) 00:05:10 ID:???]
singletonでいいじゃん

765 名前:nobodyさん mailto:sage [2009/04/01(水) 01:36:40 ID:???]
一行にしたいって要求に対して、singleton提案するやつw

766 名前:nobodyさん mailto:sage [2009/04/01(水) 01:37:54 ID:???]
>>761
いっしょに仕事したくないタイプだわ。なんだよrefって

767 名前:nobodyさん mailto:sage [2009/04/01(水) 02:05:39 ID:???]
>>765
一行になるじゃん



768 名前:nobodyさん mailto:sage [2009/04/01(水) 02:20:35 ID:???]
メソッドチェーンがやりたいだけだろ

769 名前:nobodyさん mailto:sage [2009/04/01(水) 02:32:15 ID:???]
誰が?

770 名前:nobodyさん mailto:sage [2009/04/01(水) 02:51:42 ID:???]
俺!

771 名前:nobodyさん mailto:sage [2009/04/01(水) 03:16:29 ID:???]
singletonはウンコすぎ。singleton依存症は治る病気だから通院したほうがいいぞ

1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな

まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが

772 名前:nobodyさん [2009/04/01(水) 07:15:56 ID:zGetu19r]
ファイルをダウンロードできるWebアプリがあって、IE8で保存するフォルダをゆっくり選択してると
サーバ側のPHP(5.2.6/Windows)がタイムアウトしちゃうんですが、そういうもんなんでしょうか。

タイムアウト伸ばすしかないのかなぁ。
ファイルが壊れるだけで、一見したところ気がつかないのが、またいやらしい。

773 名前:nobodyさん mailto:sage [2009/04/01(水) 07:21:55 ID:???]
てか、singletonは全く別次元の話だろ

774 名前:nobodyさん mailto:sage [2009/04/01(水) 07:26:35 ID:???]
>>771
ひとつひとつのクラスにstaticメソッドを実装するってことではなく
rubyみたいにすべてのオブジェクトの先祖になるクラスにstaticを実装するって意味。
今でもrunkit使えば可能なのか、どうか知れないが、
標準で出来たらいいなぁ

775 名前:nobodyさん [2009/04/01(水) 08:25:46 ID:wwrEQ3GF]
WindowsXPで開発しているのですが、
echo realpath(".");

とすると、C:\Program Files\Apache Group\Apache2\htdocs

のように\が付きます。これを/に置換すれば良いだけでしょうが、
最初から\ではなく/にして、ディレクトリ名を取得する方法はないでしょうか?

776 名前:nobodyさん mailto:sage [2009/04/01(水) 08:34:02 ID:???]
>>771
じゃsingletonじゃなくて普通にインスタンス返すメソッドでいいじゃん

777 名前:nobodyさん mailto:sage [2009/04/01(水) 08:43:29 ID:???]
レンたるサーバーなのでMysqlのmax_connectionを増やせまえん。
たまにMysqlへの接続数が多すぎてエラーになります。
そこで、
if(){
通常通りMysqlへ接続}
{接続エラー時の対処}

こんな感じにしたいと思ってるんですが、いい関数ありますか?



778 名前:nobodyさん mailto:sage [2009/04/01(水) 09:25:38 ID:???]
>>771でいいだろ。気持ち悪いコードやメソッド増やしたいやつ多すぎ

779 名前:nobodyさん mailto:sage [2009/04/01(水) 09:28:10 ID:???]
>>777
die

780 名前:nobodyさん mailto:sage [2009/04/01(水) 09:29:50 ID:???]
そもそも、newしてメソッドを一つだけ実行ってのは設計がダメだな。
staticで十分か、コンストラクタに仕事させすぎ。

781 名前:nobodyさん mailto:sage [2009/04/01(水) 09:54:46 ID:???]
>>775
Windowsをunixベースにする

782 名前:nobodyさん mailto:sage [2009/04/01(水) 11:02:36 ID:???]
>>775
nai

783 名前:nobodyさん mailto:sage [2009/04/01(水) 11:04:49 ID:???]
>>777
こっちのほうおすすめ

function errorMysql() {
エラー処理
exit;
}

if (!接続) errorMysql


784 名前:nobodyさん mailto:sage [2009/04/01(水) 11:49:45 ID:???]
例外使えよ

785 名前:nobodyさん mailto:sage [2009/04/01(水) 17:33:12 ID:???]
最近書き込み減ったに
貴様らなにしてんのかね

786 名前:nobodyさん mailto:sage [2009/04/01(水) 18:09:20 ID:???]
もう一つの某巨大掲示板に移動したんじゃね?

787 名前:nobodyさん mailto:sage [2009/04/01(水) 18:21:05 ID:???]
>>786
それってどこよ?



788 名前:nobodyさん mailto:sage [2009/04/01(水) 18:36:52 ID:???]
>>785
PHPの仕事を他の人に任せてコーディングの仕事するようになった

789 名前:nobodyさん mailto:sage [2009/04/01(水) 21:00:24 ID:???]
>>787
おしえてグー

790 名前:nobodyさん mailto:sage [2009/04/01(水) 23:06:31 ID:???]
>774
絶対言われると思った。俺もそれは考えたが、5.3.0より前のPHPでは無理。
親クラスで定義された静的メソッドで、子クラスのインスタンスは生成できない。つまり

class Parent{
static function getInstance(){
 //do something
}
}
class Child extends Parent{}

とあった場合、Parent::getInstance()の実装がどんなだろうと、Child::getInstance()がChildのインスタンスを返すのは不可能。
Childというクラス名すら取得できない。

>780
{ new UrlString("pc11.2ch.net/test/read.cgi/php/1236532468/") }->domain();

コンストラクタによる依存性注入をしてる場合も、newしてすぐメソッドを呼ぶだけでじゅうぶんな事がある。
引数なしのコンストラクタならばたいていの場合不要ってのは同意。

791 名前:nobodyさん [2009/04/02(木) 09:51:30 ID:ij3728yl]
pear.php.net/manual/ja/package.text.text-statistics.intro.php

これって日本語は対応してないの?

792 名前:nobodyさん mailto:sage [2009/04/02(木) 10:31:00 ID:???]
ソース見りゃ分かんべ

793 名前:nobodyさん [2009/04/02(木) 10:35:42 ID:ij3728yl]
>>792
いやいや、、、
まだそこまでレベルいってないですよ
だからあなたが代わりに見て判断してください

794 名前:nobodyさん mailto:sage [2009/04/02(木) 10:44:44 ID:???]
じゃレベル上げろ

795 名前:nobodyさん mailto:sage [2009/04/02(木) 10:56:23 ID:???]
長い文と難しい単語(音節のたくさんある)の割合で計算してるみたいだから、
原理的には日本語でも計算は可能だろうけど、日本語ではMecabとかないと大変だし、
多分計算式に定義されてる係数は日本語の場合を考慮していないので、
信頼出来る結果のためには自分で文献にあたるとか実地調査して決定する必要があるべ。


796 名前:nobodyさん [2009/04/02(木) 11:12:51 ID:CfxT7le3]
【OS名】windows xp home edition
【PHPのバージョン】php5ぐらい
【連携ソフトウェア】mysql
【質問内容】

フォームのセレクト項目で悩んでいます。
form.phpを表示させるとき、セレクト項目を
mysqlから取り出して表示させているのですが
(idとその名前)
セレクト項目が4つもあるので、何か一気に取り出す方法が
あったりするのですか?それとも、一個一個4つのセレクト用に
select genre_id,genre_name from genre;
(genreはジャンル)
というふうにするしかないですか?


797 名前:nobodyさん [2009/04/02(木) 11:30:18 ID:4VqTVZ/0]
mysqlの勉強をしてます

以下のようなデータをデータベースに登録してます
id,name,age
1,田中,20
2,木村,31
3,坂下,43


このデータをテーブルに書きだしたいのですが
pearなどのライブラリを使用しない場合、どのようなコードを書くのが効率いいでしょうか?
mysql以外のデータベースは使用しないのでmysqlに特化した書き方をどなたかご教示お願いいたします



798 名前:796 mailto:sage [2009/04/02(木) 11:40:45 ID:???]
>>797
$link = mysql_connect('localhost','ユーザ名','パスワード名');
mysql_select_db('データベース名');
$sql = "select * from テーブル名";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$data['id'];
$data['name'];
$data['age'];
}

じゃないの?


799 名前:nobodyさん [2009/04/02(木) 11:48:45 ID:e2MYzFKZ]
すみません、僕もちょっと似たようなこと?で質問させてください
>>797さんのデータで
id,name,age
1,田中,20
2,木村,31
3,坂下,43
とありますが、たとえばID2の木村さんの行だけを取得する場合、
while ( $data = mysql_fetch_array ( $result ) ) {
if (2==$data['id']) {
$id = $data['id'];
$name = $data['name'];
$age = $data['age'];
break;
}
}
とやってきたのですが、MYSQLではピンポイントで取得することができないってことでしょうか?

800 名前:796 mailto:sage [2009/04/02(木) 11:59:21 ID:???]
>>799
嘘だよね? select * from テーブル名 where id=2;
あるいは、 where name='木村';

801 名前:nobodyさん mailto:sage [2009/04/02(木) 12:07:31 ID:???]
>>796
mysql_fetch_arrayの結果を4回使いまわす

802 名前:796 mailto:sage [2009/04/02(木) 12:09:54 ID:???]
>>801
違うんです。4つそれぞれ別なんです。
テーブル結合でも想像できないのでやっぱり4回やらないとだめなのかな

803 名前:nobodyさん mailto:sage [2009/04/02(木) 12:29:08 ID:???]
XAMPPをインストールしました。
MySQLにパスワードを設定しようとphpmyAdminでuser テーブルを表示させましたが
Hostが%のレコードがありません。localhost と127.0.0.1というのだけです。
パスワードを設定するのはlocalhost と127.0.0.1でいいのでしょうか?

804 名前:796 mailto:sage [2009/04/02(木) 12:40:16 ID:???]
$xxx[0] = "genre";
$xxx[1] = "property";
$xxx[2] = "actress";

$i=0;
$g=0;
while ( $i < count($xxx) ) {
$sql = "select $xxx[$i]_id,$xxx[$i]_name from $xxx[$i]";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$xxb[$g][$xxx[$i]]['id'] = $data[0];
$xxb[$g][$xxx[$i]]['name'] = $data[1];
$g++;
}
$i++;
}
これでいい?

805 名前:nobodyさん mailto:sage [2009/04/02(木) 12:56:43 ID:???]
気持ちの悪いメンテナンスしづらいコードですね

806 名前:796 mailto:sage [2009/04/02(木) 12:58:10 ID:???]
>>805
これでいけました
>>796の質問者です。
一回のSQLで4つのテーブルのIDと名前をゲットできました

807 名前:nobodyさん [2009/04/02(木) 13:01:43 ID:vfSwYPOW]
【OS名】centos
【PHPのバージョン】php5.26
smarty使用
【連携ソフトウェア】mysql
【質問内容】
初めての質問です。
よろしくお願いします。

登録フォームが都合上ページの下部にあるのですが
PHPで入力エラーを同じページの同じ登録フォームのある部分に表示しております。
ページ上部に登録フォームのアンカーへ移動するリンクはありますが
PHPではいたエラー文言付画面の表示時に下部のアンカーへ移動して表示するには
javascript以外に方法はないでしょうか?
要はwww.etc.com/touroku.php#a
みたいにやるにはどうすればいいのか、よろしくお願いいたします。





808 名前:796 mailto:sage [2009/04/02(木) 13:05:48 ID:???]
正確に書けば、$xxb[$xxx[$i]][$g]['id'] = $data[0];
かな
for($i=0;$i<count($xxb['genre']); $i++)
で各セレクト分でしよう

809 名前:796 mailto:sage [2009/04/02(木) 13:26:45 ID:???]
>>804
途中で$g=0;を入れるのを忘れました。
$i++の後

810 名前:nobodyさん mailto:sage [2009/04/02(木) 13:51:13 ID:???]
796さん、あなたを下スレ公認回答者に認定いたします

811 名前:nobodyさん mailto:sage [2009/04/02(木) 18:28:53 ID:???]
>>807
actionかlocationでの遷移先をそれに設定すればいいのでは?

812 名前:nobodyさん [2009/04/02(木) 19:09:54 ID:vfSwYPOW]
>>811
ありがとうございます、できました!!


813 名前:nobodyさん [2009/04/02(木) 21:54:38 ID:SbciSXr8]
すません
pukiwikiとかの既存ソースを使ってるのですが
PHPがサバの設定でポート指定されていて
既存ソースだと、リンク先がPHPの場合、ポート指定が外されてしまうのです

TOPページが :7070 で実行してたら
遷移先が :7070 が外れてしまうという状態です

解決方法とかご教授願えますか。
質問場所が悪ければ、聴ける場所なども教えていただけると助かります

814 名前:nobodyさん mailto:sage [2009/04/02(木) 21:56:16 ID:???]
pukiwikiの設定でサイトURL入れるとこあるんじゃ?

815 名前:nobodyさん [2009/04/02(木) 22:33:32 ID:SbciSXr8]
なるほど…
ちょっと探してみます。

ただ、pukiwikiに限らず、他のPHPでも
同じ状況になってしまうので根本解決するための方法など
ご存知でしたらお願いします。

816 名前:nobodyさん mailto:sage [2009/04/02(木) 22:33:55 ID:???]
絶対リンクをやめる

817 名前:nobodyさん mailto:sage [2009/04/02(木) 23:10:28 ID:???]
スクリプトの先頭でob_start()。
コールバック関数を指定して出力内容を全部受け取り、URLを全部置換する。



818 名前:nobodyさん mailto:sage [2009/04/02(木) 23:15:28 ID:???]
絶対リンク埋め込みだとしてもhttp://で検索すればすぐ書き換えられそうじゃん

819 名前:nobodyさん [2009/04/03(金) 01:14:27 ID:QmVSt/Vd]
【OS名】win xp sp3
【PHPのバージョン】php5.29
【連携ソフトウェア】mysql
【質問内容】

$val = NULL;
$query = "insert into test (id, comment) value ($val, 'test')";

上記のSQLをダンプしてみると
NULLを代入した変数$valがNULLとして展開されていません。
もぬけの殻となってしまっています。

※ダンプしたクエリ
insert into test (id, comment) value (, 'test')

なのでクエリーを投げるとエラーとなってしまいます。
NULLをinsertしたい場合は変数にいれず、
直接クエリの文に記述しないといけないのでしょうか?

820 名前:nobodyさん mailto:sage [2009/04/03(金) 01:28:48 ID:???]
>819
現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。

つうか、何もinsertしなければ、デフォルト値であるNULLが入るけどな。
(カラムにnullが許可されており、他のデフォルト値を指定していない場合に限る)

821 名前:nobodyさん mailto:sage [2009/04/03(金) 01:33:38 ID:???]
DB上のnullじゃなくて言語上でnullだから無くて当たり前

822 名前:nobodyさん mailto:sage [2009/04/03(金) 01:33:52 ID:???]
単にこうするんじゃないか?
$val = 'NULL';

823 名前:nobodyさん mailto:sage [2009/04/03(金) 01:34:01 ID:???]
$val = 'NULL';
でNULLをDBに入力できる

824 名前:819 mailto:sage [2009/04/03(金) 01:37:29 ID:???]
>>820

>プリペアドステートメント
はじめて聞きました。

>何もinsertしなければ、デフォルト値であるNULLが入る
これは理解していたのですが、インサート項目が非常に多く、
そのほとんどが必須ではないので、クエリを組み立てるのがめんどくさく
値がわたってこようがこなかろうがすべての項目をインサートさせてしまう感じで作ってしまいました。

プリペアドステートメント勉強します。
ありがとうございました。

825 名前:819 mailto:sage [2009/04/03(金) 01:39:55 ID:???]
>>822
>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。

826 名前:nobodyさん mailto:sage [2009/04/03(金) 01:44:23 ID:???]
されないだろ
insert into test (id, comment) value (NULL, 'test')

827 名前:nobodyさん [2009/04/03(金) 02:04:33 ID:7RHF46qi]
申し込みフォームの作成について
form1.phpにて記述されたformの内容をPOSTで
form2.phpという確認画面で受け取るような
プログラムを作ってるんですが、
確認画面にて前に戻るボタンと送信ボタン2つを作りたい場合は
それぞれに同じ内容のhiddenを設定するしか方法はないんですかね?
もしスマートな方法がありましたらアドバイスよろしくお願いします。




828 名前:nobodyさん mailto:sage [2009/04/03(金) 02:07:57 ID:???]
セッション使えば?

829 名前:827 mailto:sage [2009/04/03(金) 02:11:24 ID:???]
>>828
返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。

830 名前:nobodyさん mailto:sage [2009/04/03(金) 02:26:52 ID:???]
hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる

831 名前:nobodyさん mailto:sage [2009/04/03(金) 02:29:07 ID:???]
>>827
試してないけど、javascriptでformのactionを変更できるんじゃないの。
msdn.microsoft.com/ja-jp/library/cc409726.aspx

このへんは趣味の問題かもしれんが、セッションに値を保持するのは、
同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、
あんまりお勧めはできん。

832 名前:nobodyさん mailto:sage [2009/04/03(金) 02:30:00 ID:???]
>>830
戻るでグダグダになるのはセッションじゃないかい?

833 名前:nobodyさん mailto:sage [2009/04/03(金) 02:38:12 ID:???]
とりあえずhiddenを批判するやつはどこにでもいる

834 名前:nobodyさん mailto:sage [2009/04/03(金) 03:42:37 ID:???]
入力、確認を違うファイルにするとエラー処理がめんどい

835 名前:nobodyさん mailto:sage [2009/04/03(金) 04:07:02 ID:???]
php5.3rc1使ってる人に質問です。
php.iniに書いたmb_string系の設定って反映されてますか?
あと何故かapcも動かない、、、
いくら設定を見直してもなにが悪いのかわかりません。
解決策をご存知の方いましたら、教えてください。

836 名前:835 mailto:sage [2009/04/03(金) 06:55:01 ID:???]
解決しましたすみません;ケアレスミスでした・・・

837 名前:nobodyさん mailto:sage [2009/04/03(金) 07:27:17 ID:???]
>>783

ありがとうございます。それでいってみたいと思います。



838 名前:nobodyさん [2009/04/03(金) 07:28:49 ID:b3GlDVd8]
クエリの時のプリペアドステートメントって、どういう効果があるんですか?
一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします

839 名前:nobodyさん mailto:sage [2009/04/03(金) 08:01:16 ID:???]
>>838
繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは
SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。

840 名前:nobodyさん mailto:sage [2009/04/03(金) 08:43:25 ID:???]
そんなのクオートすりゃ済む話だろ

841 名前:nobodyさん mailto:sage [2009/04/03(金) 08:45:48 ID:???]
>>819
もうプリペアでやってるかもしれないけど
$a = "";
$var = "'".$a."'";
$query = "insert into test (id, comment) value ($val, 'test')";

842 名前:nobodyさん mailto:sage [2009/04/03(金) 10:01:31 ID:???]
NULLと空文字は違うだろw

843 名前:nobodyさん mailto:sage [2009/04/03(金) 10:05:52 ID:???]
昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ

844 名前:nobodyさん mailto:sage [2009/04/03(金) 11:18:56 ID:???]
根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い
neta.ywcafe.net/000974.html

845 名前:nobodyさん mailto:sage [2009/04/03(金) 11:26:15 ID:???]
俺も思う
サンプルコードにこれ見よがしにつっこむ奴なんなの
ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ

846 名前:nobodyさん mailto:sage [2009/04/03(金) 11:29:51 ID:???]
高木先生大の批判は辞めて下さい

847 名前:nobodyさん mailto:sage [2009/04/03(金) 11:45:02 ID:???]
>>844
また宣伝か



848 名前:827 mailto:sage [2009/04/03(金) 15:07:28 ID:???]
返事が遅くなりすいません。
フォームの件ですが色々試しましてSESSIONでいくようにしました。
色々とアドバイス本当にありがとうございます。
それでもう一つ質問なんですが、
フォームのチェックボックスの内容をhtmlに直に書かず、
config.phpなどに$val=array("aaa","bbb","ccc");
みたいな感じで記述しhtmlでforeachを使い
全て書き出すみたいな事をしたいんですが、参考書などを確認したら
配列で記述するのではなくfunctionで
function val(){
$val = array("aaa","bbb","ccc");
return $val;
}
という書かれ方がされてました。
関数にせず配列だけが記述すると何かマズイんですか?
質問が少しわかりにくいですがもしよければ
アドバイスよろしくお願いします。


849 名前:nobodyさん mailto:sage [2009/04/03(金) 15:17:48 ID:???]
>>848
$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい

850 名前:nobodyさん mailto:sage [2009/04/03(金) 15:40:20 ID:???]
最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?

851 名前:827 mailto:sage [2009/04/03(金) 15:41:11 ID:???]
>>849
返信ありがとうございます。
例えばこれから先チェックボックスの値dddが増えた場合、
$val=array("aaa","bbb","ccc","ddd");
でも
function val(){
$val = array("aaa","bbb","ccc","ddd");
return $val;
}
でも変わらない気がするんですが・・・
素人質問本当にすいません。
今から考えてみます。

852 名前:nobodyさん mailto:sage [2009/04/03(金) 15:48:11 ID:???]
>>851
いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな
function val(){
 $val = array("aaa","bbb","ccc","ddd");
 // 天気が雪の場合のみ配列にeeeを追加する
 if( $this->weather == "snow" ){
  array_push( $val, "eee" );
 }
 return $val;
}


853 名前:nobodyさん mailto:sage [2009/04/03(金) 15:49:16 ID:???]
>>851
前者でおk

854 名前:827 mailto:sage [2009/04/03(金) 16:12:12 ID:???]
>>852
>>853
返信ありがとうございます。
今後、配列を元に何か条件をつけるなどの機会がある場合は
関数にしておく方が好ましいという事ですね。
例文まで書いていただき本当にありがとうございました!

855 名前:nobodyさん [2009/04/03(金) 18:24:43 ID:ZpjcrZDP]
文字列のシングルクォーテーションのみを
エンティティに変換したいのですが、どうすればいいのでしょうか?
htmlspecialcharsはダブルクォーテーションも変換しますし・・。

856 名前:nobodyさん mailto:sage [2009/04/03(金) 18:32:47 ID:???]
vs php(VS2005評価版)でデバッグ実行しようとすると
次のエラーが出てしまいます。
何が原因なのでしょうか?

Fatal error: Unknown: Failed opening required 'C:/Documents and Settings/繧イ繧ケ繝育畑縺ョ繝ヲ繝シ繧カ/My Documents/Visual Studio 2005/Projects/PHP_TEST/PHP_TEST/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0

文字化けしちゃってますが
C:\Documents and Settings\ゲスト用のユーザ\My Documents\Visual Studio 2005\Projects\PHP_TEST\PHP_TEST\index.php
のところで何かエラーが発生している様です。

※phpのコード

<?php

   /* TODO: Add code here */
   print("テスト");
?>




857 名前:nobodyさん mailto:sage [2009/04/03(金) 19:08:16 ID:???]
>>855
strtr



858 名前:nobodyさん [2009/04/03(金) 19:44:58 ID:2mI6CRy6]
【OS名】debian linux
【PHPのバージョン】5.2.0

参照渡しで変数を送り
変数が未定義なら空の文字列を返し
変数が定義済みならそのまま返す関数を考えました。

$test = hoge_variable($v);

function hoge_variable(&$v) {
  if(! isset($v) ) {
    return '';
  }
  return $v;
}

テストに入る内容は望みのものですが、
変数$vが未定義だった場合、定義されて(?)NULLが入るようです。
この挙動について、どういった理由でそうなるのか、
また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。

859 名前:nobodyさん mailto:sage [2009/04/03(金) 20:02:31 ID:???]
>>858
&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL

&$vにしなければよい。

860 名前:nobodyさん mailto:sage [2009/04/03(金) 20:14:47 ID:???]
return ''; を return $v=''; でよくね?

定義されてないからNULLだぜ?

861 名前:nobodyさん [2009/04/03(金) 20:15:15 ID:2mI6CRy6]
>>859
やはりそんな感じだったんですね。
関数はエラーレベルによっては出るNotice: Undefined variable
の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable
がでてしまう感じで…。
定義されたくない時は直接issetをしていくしかないということですかね。
というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?

862 名前:nobodyさん mailto:sage [2009/04/03(金) 20:18:37 ID:???]
宣言すりゃいいじゃん

863 名前:nobodyさん [2009/04/03(金) 20:35:14 ID:2mI6CRy6]
状況的には例えばこういう未定義かもしれない所からひっばってくる時で、
$flag = $_POST['flag'];
そういう意味で先の
$flag = hoge_variable($_POST['flag']);
だったんですけど、
例えNULLでも配列に定義されてしまうと、
foreachとかする時に邪魔になったりとかそういう感じのことでした。
やはり基本的には
$flag = '';
if (isset($_POST['flag'])) {
  $flag = $_POST['flag'];
}
みたいなことで行くのがいいのですかね。

864 名前:nobodyさん mailto:sage [2009/04/03(金) 20:46:30 ID:???]
フレームワークには用意されてたりするけどね

865 名前:nobodyさん mailto:sage [2009/04/03(金) 22:15:46 ID:???]
>>856
文字コードがUTF-8でBOMが入っているとか?
UTF-8Nにしてみたら?

866 名前:nobodyさん mailto:sage [2009/04/03(金) 22:53:01 ID:???]
>>863
> $flag = '';
> if (isset($_POST['flag'])) {
>   $flag = $_POST['flag'];
> }
自分はそうしてる
変数が増えてくるとコードがのびがちなので
三項演算子使って
$flag = isset($_POST['flag'])?$_POST['flag']:null;
といった感じにしてる

867 名前:nobodyさん mailto:sage [2009/04/03(金) 23:35:31 ID:???]
>838-840
クォートで処理していると、インジェクションが無いか処理を注視しないといけない。
プリペアドステートメントは、インジェクションが無い事が一目で分かる。
SQLの構文と変数が分離されるので見やすくなるって利点もある。

>863
functon getPostedVariable($key){
return isset($_POST[$key])?$_POST[$key]:null;
}
とかやると楽なのでオススメ。
プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。
メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。
$request = new Request($_POST, $_GET);
echo $request->post('flag');



868 名前:nobodyさん mailto:sage [2009/04/03(金) 23:36:22 ID:???]
Zend_Request使えよ

869 名前:nobodyさん mailto:sage [2009/04/03(金) 23:49:57 ID:???]
宗教上の理由によりお断りします

870 名前:nobodyさん mailto:sage [2009/04/04(土) 01:03:53 ID:???]
PHPを勉強し始めたのですがphpではクラスを宣言する場合に、
public private とかって宣言する事は出来ないのでしょうか?

public class Test
{
  public function TestMessage()
  {
    print("あいうえお");
  }

}


871 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:48 ID:???]
>>870
classはできない。functionや変数は可能。

872 名前:nobodyさん mailto:sage [2009/04/04(土) 01:54:55 ID:???]
>>870
他言語の素養があるおまいさんはまずマニュアルを読みなはれ。

873 名前:nobodyさん mailto:sage [2009/04/04(土) 02:00:30 ID:???]
privateなclassってどんなん?

874 名前:870 mailto:sage [2009/04/04(土) 02:00:58 ID:???]
>>871
サンクス

>>872
.Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。
マニュアルをちょっと読む事にします。

というより一つ疑問なんですけどC#とかC++とかだと次のパターンAでみんな記述しているのに
PHPとかだとパターンAの書き方をする人が多いのはなぜでしょうか?
C#だと今まで私が関わって来たプロジェクトは100%パターンAで記述されています。


【パターン@】
if( 1 == 1)
{

}

【パターンA】
if(1 == 1{

}


875 名前:nobodyさん mailto:sage [2009/04/04(土) 02:04:36 ID:???]
>>874
両方ともパターン1かよ

876 名前:nobodyさん mailto:sage [2009/04/04(土) 02:05:23 ID:???]
まちがえた
両方ともパターン2かよ

877 名前:nobodyさん mailto:sage [2009/04/04(土) 02:08:21 ID:???]
VisualStudioのコード補完のデフォルトがそうなってるだけだろ
JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ



878 名前:nobodyさん mailto:sage [2009/04/04(土) 02:09:00 ID:???]
@とAに見える俺は目がおかしい・・・?
てかA括弧閉じてないけど、スペースのことを言ってるのか・・・?

879 名前:874 mailto:sage [2009/04/04(土) 02:11:43 ID:???]
ああすまん俺の頭が混乱してた

>>874がどちらのこと言ってるのか良く分からないけど
俺は@はメソッドの時に使う。
一応Zendのコーディング規約に則ってやってるけど
個人の作業なら別にそんなの君の価値観でやればいいだろ

880 名前:878 mailto:sage [2009/04/04(土) 02:13:15 ID:???]
あああ俺は874じゃなくて878

881 名前:nobodyさん mailto:sage [2009/04/04(土) 02:14:37 ID:???]
>874
PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。
で、どっちも1番の括弧スタイルを採用してるんだ。
C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ?
PHPが初めての言語です、って奴が多いのも影響していると思う。

勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。
俺も2番のK&Rスタイルで書くしな。

882 名前:nobodyさん mailto:sage [2009/04/04(土) 02:16:56 ID:???]
>>881
framework.zend.com/manual/ja/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif
if ($a != 2) {
$a = 2;
}
知ったか乙


883 名前:nobodyさん mailto:sage [2009/04/04(土) 02:18:31 ID:???]
>882
悪い、寝ぼけてた。
関数定義とクラス定義の箇所を読んでたわ。
PEARもifはそのスタイルだな。

if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}

884 名前:nobodyさん mailto:sage [2009/04/04(土) 02:21:18 ID:???]
MS厨はfunction名を大文字で始めとけ

885 名前:nobodyさん mailto:sage [2009/04/04(土) 02:25:13 ID:???]
classの修飾子にはpublic、final、abstractが使えるよ

886 名前:870 mailto:sage [2009/04/04(土) 02:37:49 ID:???]
>>878 >> 879 >> 880

【パターン@】
if( 1 == 1)
{

}

【パターンA】
if(1 == 1){

0}

の間違いです。括弧が抜けてましたね。


>>877
そう言われれば確かに勝手に整形されちゃいますね。

>>881
なる程2通りの書き方があったんですね。
いずれにせよ@番で統一されているみたいなのでちょっと安心しました。
今後も@で書いて行こうと思います。
(C#)と同じなのでこちらの方が気分的に見やすいです。

PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?



887 名前:870 mailto:sage [2009/04/04(土) 02:39:20 ID:???]
うーん、どう考えても↓の方が見易いのですが、、、、
皆さんも↓の方が見やすくないですか?

>>883

if ((condition1) || (condition2))
{
  action1;
}
elseif
((condition3) && (condition4))
{
  action2;
}
else
{
  defaultaction;
}




888 名前:nobodyさん mailto:sage [2009/04/04(土) 02:39:35 ID:???]
書き込むボタン押す前に見直ししろ

889 名前:nobodyさん mailto:sage [2009/04/04(土) 02:41:13 ID:???]
俺だったらこれだな。極めて合理的だ

if ( (condition1) || (condition2) ) { action1; }
elseif ( (condition3) && (condition4) ) { action2; }
else { defaultaction; }

890 名前:nobodyさん mailto:sage [2009/04/04(土) 02:48:19 ID:???]
>>889
うげぇー

891 名前:nobodyさん mailto:sage [2009/04/04(土) 02:51:50 ID:???]
>>889
オナニーコード

892 名前:nobodyさん mailto:sage [2009/04/04(土) 02:53:10 ID:???]
>887
そのスタイルはないな。見づらい。

インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。
Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。

893 名前:nobodyさん mailto:sage [2009/04/04(土) 03:03:22 ID:???]
>>887
視点移動が多くなって見づらい

894 名前:nobodyさん mailto:sage [2009/04/04(土) 03:25:39 ID:???]
>>892 >>893
本気で言ってますか?
コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、
メンテナンス性もあがる気がするのですが。

895 名前:nobodyさん mailto:sage [2009/04/04(土) 03:30:54 ID:???]
それはひらがなだけで書かれた文章の方が読みやすいってのと同じレベルの主張だと思う。
まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。

896 名前:nobodyさん mailto:sage [2009/04/04(土) 03:31:20 ID:???]
ZendとかPEARとか使ってるなら、逆効果だろ
統一させた方が見やすい

897 名前:nobodyさん mailto:sage [2009/04/04(土) 04:00:44 ID:???]
見やすいのはいいけどスクロールしないと下のほうが見えなくなるのが無理



898 名前:nobodyさん mailto:sage [2009/04/04(土) 04:11:29 ID:???]
>>887
そんなとこより括弧と条件式の間のスペースを空けろってな

899 名前:nobodyさん mailto:sage [2009/04/04(土) 05:30:26 ID:???]
オレ竜で書くのがいちばんさ

900 名前:nobodyさん mailto:sage [2009/04/04(土) 05:58:30 ID:???]
>>887
EclipseでJavaとPHPをやってる俺からいうと
if (condition) {
}
のほうが見やすい
他の人も同じようなこといってるが
最初に使い慣れたIDEの標準の補完機能によって
どちらが使いやすいか分かれるんだろう
あとはコーディング規約の問題

901 名前:nobodyさん [2009/04/04(土) 07:35:04 ID:+rg3YxkW]
fopenってロックの引数がないんですが
ちゃんとロックされるんですか?
同時書き込みでファイル壊れたりしませんか?

902 名前:nobodyさん mailto:sage [2009/04/04(土) 07:37:06 ID:???]
fopenはリソースを指定してるだけ
書き込みを行う関数はfwrite

903 名前:nobodyさん mailto:sage [2009/04/04(土) 07:39:05 ID:???]
マニュアルのちょっと上にflockってあるだろ

904 名前:nobodyさん mailto:sage [2009/04/04(土) 07:43:24 ID:???]
ロックは別にするんですね
ありがとうございました。

905 名前:nobodyさん [2009/04/04(土) 11:05:08 ID:UT159Z4L]
winでは動かない関数があるのでこのさい仮想マシン上にlinuxを入れることにしました
ノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい

906 名前:nobodyさん mailto:sage [2009/04/04(土) 11:16:09 ID:???]
俺、クラスや関数は>>874でいう@、条件文なんかはAで書いてる・・・・

907 名前:nobodyさん mailto:sage [2009/04/04(土) 11:42:14 ID:???]
@の書き方って、昔ならではのC言語の関数書くときの引数の型宣言の名残なのかね



908 名前:nobodyさん mailto:sage [2009/04/04(土) 12:46:42 ID:???]
現在Apache+PHP5+MySQL5を使用してWEBサイトを作る練習をしているのですが、

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
  hogehoge.html
  tomato.php

に各WEBページ(phpファイル)を置いて

localhost/

でアクセスしているのですが、これを

C:\Work
  hogehoge.html
  tomato.php
でアクセス出来る様にするにはどうすれば良いでしょうか・
※デフォルトのパスをC:\Workにしたいと思っています。

909 名前:nobodyさん mailto:sage [2009/04/04(土) 12:47:32 ID:???]
php関係ない
apacheのdocument root
あと>>1

910 名前:908 mailto:sage [2009/04/04(土) 13:04:00 ID:???]
>>909
ありがとうございます。

document root を
【httpd.conf】
DocumentRoot "C:/htdocs"
に変更しApacheを再起動したのですが
Web サイトによってこのページの表示を拒否されました
というエラーが出て一向にページを見る事が出来ません。
なぜでしょうか?


911 名前:nobodyさん mailto:sage [2009/04/04(土) 13:13:06 ID:???]
ファイルをC:/Workにおいてるのになんでhttpd.confのほうは「C:/htdocs」にしたん?

912 名前:nobodyさん mailto:sage [2009/04/04(土) 13:41:34 ID:???]
>>910
>>1読め糞野郎

913 名前:nobodyさん mailto:sage [2009/04/04(土) 13:43:54 ID:???]
ていうかPHP関係ないって言ってんだろカス

914 名前:nobodyさん mailto:sage [2009/04/04(土) 13:58:00 ID:???]
DocumentRoot を C:/Work にすればいいんじゃねーの。
あとID出せよ

915 名前:nobodyさん mailto:sage [2009/04/04(土) 15:00:42 ID:???]
documentrootだけ変えても意味ないよ
documentrootのディレクトリ設定のパスも書き変えないと意味ないよ

916 名前:908 mailto:sage [2009/04/04(土) 15:19:05 ID:???]
>>911 ファイルは、C:/htdocsに配置しました。

>>914
IDを出す、 というのは所謂 fusianasan ですか?

>>915
ありがとうございました。

設定ファイル系を色々といじってみたところ無事動作する様になりました。
ありがとうございました。

917 名前:nobodyさん mailto:sage [2009/04/04(土) 15:27:18 ID:???]
ルールも守れないような奴は二度と来んな



918 名前:858 [2009/04/04(土) 15:39:59 ID:Q5CHJrya]
遅レスすみません。
>>866>>867氏他皆様ありがとうございます。
いろいろ試してみたいと思います。

919 名前:nobodyさん mailto:sage [2009/04/04(土) 20:31:48 ID:???]
慇懃無礼なやつだなw

920 名前:220x151x2x6.ap220.ftth.ucom.ne.jp mailto:sage [2009/04/04(土) 20:44:31 ID:???]
◆質問用テンプレ
【OS名】WindowsXP
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql5
【質問内容】
セッションが破棄されるタイミングがいまいち分かりません。
セッションファイルの数を数える事により、現在サイトにアクセスしている人の
大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。

理想を言えば、ユーザにログインボタンを押してもらい  session_destroy を呼ぶ
事によりセッションファイルを削除するのが良いとは思いますが、

如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。
ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか?

通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?


921 名前:nobodyさん mailto:sage [2009/04/04(土) 20:48:04 ID:???]
>>920
>>1

922 名前:nobodyさん mailto:sage [2009/04/04(土) 21:11:33 ID:???]
>>920
頑張ってfusianasanしたのはいいんだが君が表示してるのはIPだ
IDを出してくれたまえ

923 名前:nobodyさん mailto:sage [2009/04/04(土) 21:12:45 ID:???]
ID出てないが一応マジレスするとブラウザが閉じられたという情報は送られません

924 名前:nobodyさん mailto:sage [2009/04/04(土) 21:39:31 ID:???]
ttp://jp2.php.net/manual/ja/session.configuration.php
いつ消えるかはsession.gc_maxlifetimeで決まる。

集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。
画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。
例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。
ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。

925 名前:nobodyさん mailto:sage [2009/04/04(土) 22:06:27 ID:???]
>>924
荒らすな

926 名前:nobodyさん mailto:sage [2009/04/04(土) 22:18:43 ID:???]
俺はセッション使わないでアクセスログでオンラインカウンターをやってる

927 名前:920 ◆gRDEQwu9i2 mailto:sage [2009/04/04(土) 22:21:55 ID:???]
>>922
これの事だったんですねw
勘違いしてました。

>>923
そうですよね。


>>924
ちょっと色々といじってみます。

>>925
別に荒らしてはいない気がしますが・・・

>>926
DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。




928 名前:nobodyさん mailto:sage [2009/04/04(土) 22:25:35 ID:???]
死ねカス

929 名前:nobodyさん mailto:sage [2009/04/04(土) 22:34:25 ID:???]
春だなw

930 名前:nobodyさん mailto:sage [2009/04/04(土) 22:34:35 ID:???]
>>927
まじれすすると、それはトリップ
ID表示はメール欄を空白にするかageと書く

931 名前:nobodyさん mailto:age [2009/04/04(土) 23:03:22 ID:???]
てst

932 名前:nobodyさん mailto:sage [2009/04/04(土) 23:06:05 ID:???]
さくらインターネットでサーバ借りてるんだけど
function ExecuteSanitizing(&$strSanitizing)
{
 $strSanitizing = htmlentities($strSanitizing, ENT_QUOTES, mb_internal_encoding());
}

$str = "<b>あいうえお</b>";
$str = instance->ExecuteSanitizing($str);
echo $str;

として出力するとローカルでは文字化けしないのにさくらインターネットだと文字化けしちゃいます。
なぜでしょうか?


933 名前:nobodyさん mailto:sage [2009/04/04(土) 23:26:21 ID:???]
エスパーさん出番ですよ

934 名前:p7033-ipbfp405osakakita.osaka.ocn.ne.jp [2009/04/04(土) 23:30:26 ID:UHDnoHcu]
私を笑いものにするがいい

935 名前:nobodyさん mailto:sage [2009/04/04(土) 23:40:07 ID:???]
>>932
>>1

936 名前:fusianasa‎n mailto:sage [2009/04/04(土) 23:40:52 ID:???]
俺はfusianasanを制御できるから書きこんでもIP表示されないんだけどさ

937 名前:nobodyさん mailto:sage [2009/04/04(土) 23:43:27 ID:???]
>>936
それってどうやってやってんの?




938 名前:f‎usianasan mailto:sage [2009/04/04(土) 23:46:28 ID:???]
>>937
いや、おれ2ちゃんのボランティアやってるからこのぐらいの特権は持ってるよ

939 名前:nobodyさん mailto:sage [2009/04/04(土) 23:48:52 ID:???]
f&lrm;usianasan
なにがボランティアだつまらん

940 名前:nobodyさん mailto:sage [2009/04/04(土) 23:52:00 ID:???]
釣れたw

941 名前:f&lrm;usianasan mailto:sage [2009/04/04(土) 23:57:19 ID:???]
テスト

942 名前:f‎usianasan mailto:sage [2009/04/04(土) 23:58:04 ID:???]
>>939
どうすれば出来るですか?

あいうえお

943 名前:f‎usianasan mailto:sage [2009/04/05(日) 00:00:02 ID:???]
てす

944 名前:nobodyさん mailto:sage [2009/04/05(日) 00:06:15 ID:???]
>>932
ローカルとさくらのphp.iniのmbstringの設定が違う

945 名前:nobodyさん mailto:sage [2009/04/05(日) 00:30:10 ID:???]
>>901
fopenはファイルのポインタを獲得するだけ。
ロックはその後で、別の関数で行う。

946 名前:nobodyさん mailto:sage [2009/04/05(日) 00:31:03 ID:???]
ameblo.jp/tondemonight/entry-10178347889.html
クラスメソッドをabstractにしようと思いまして、abstractをつけて関数定義したところ、以下のようなエラー。

Class SampleClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods

エラーの原因がわからず、30分も調べてしまいました。
原因はclassの定義で本来なら「abstract class SampleClass」 としなくてはいけないところを
「class SampleClass」と定義していたことでした。

エラーメッセージからでは気づきにくいことでした・・・

だとさ

947 名前:nobodyさん mailto:sage [2009/04/05(日) 00:42:58 ID:???]
ポインタって言うな



948 名前:nobodyさん mailto:sage [2009/04/05(日) 00:45:11 ID:???]
SampleClassには1つのabscractメソッドが含まれます。
だからこのクラスはabstractとして宣言されるか、残りのメソッドを実装しなければいけません。

このメッセージで分かりづらいってなら、どう出せばいいんだろう。

949 名前:nobodyさん mailto:sage [2009/04/05(日) 00:48:33 ID:???]
MSもSUNもやってるんだから
ZendJapanもエラーメッセージを日本語化すべきだな

950 名前:nobodyさん mailto:sage [2009/04/05(日) 01:35:51 ID:???]
日本語化したら分かるんかい?

951 名前:nobodyさん mailto:sage [2009/04/05(日) 02:02:56 ID:???]
>>944
ありがとうございます。ローカルのphp.iniと設定をあわせたところ
正常に表示される様になりました。

ちょっとphp.iniについて質問があるのですが
ローカルだと
C:\WINDOWS\php.ini
という具合にphp.iniファイルを配置しているのですが
レンタルサーバ(さくらインターネット)の場合には
/home/street-fighter/www/php.ini
という具合にphp.iniを自前で用意するのが普通なのでしょうか?

※今後、さくらインターネット以外のサーバを借りるかもしれないのですが、
さくらインターネット以外の場合にも、*/www/直下にphp.iniファイルは保存
するのでしょうか?

/home/street-fighter/www/php.ini



952 名前:nobodyさん mailto:sage [2009/04/05(日) 02:07:24 ID:???]
>>951
自分が借りているレンタルサーバーの場合、

(1)そもそもユーザーがphp.iniを編集できない
(2)php.iniがpublic_htmlの外に置いてあった

この2パターンがありました。

953 名前:nobodyさん mailto:sage [2009/04/05(日) 02:09:39 ID:???]
>>951
>>1

954 名前:nobodyさん mailto:sage [2009/04/05(日) 02:39:34 ID:???]
asobi.sqweebs.com/cdxidyfk/p2ruc43y.php

質問用テンプレ作りました。
どうぞテストもかねて使ってみてください。

955 名前:nobodyさん mailto:sage [2009/04/05(日) 03:48:15 ID:???]
ブラクラ注意

956 名前:nobodyさん mailto:sage [2009/04/05(日) 10:38:30 ID:???]
>>954がもしブラクラなら運営板で報告してもらえる

957 名前:nobodyさん [2009/04/05(日) 11:30:01 ID:rlL9K/DC]
変数内の特定の文字列を取得しようと、以下のようにしました。

//$text
-----
あいうえお
-----

//取得する為の正規表現
preg_match_all("/-----¥n(.*)¥n-----¥n/is",$text,$array)

しかし、「-----」の間を上手く取得できません。
どういった正規表現のコードを書けば良いか教えて下さい。



958 名前:nobodyさん mailto:sage [2009/04/05(日) 12:04:57 ID:???]
そりゃs修飾子付けたら¥nと.の区別が無くなるがな

959 名前:nobodyさん mailto:sage [2009/04/05(日) 12:10:08 ID:???]
せめてこう書けよ
-----

-{5}

960 名前:nobodyさん mailto:sage [2009/04/05(日) 12:10:54 ID:???]
-{5}\n(.*)-{5}\n

961 名前:nobodyさん mailto:sage [2009/04/05(日) 12:20:05 ID:???]
どうでもいいが改行は必ず\nなのか?
\rとか\r\nは含まないんだな?

962 名前:nobodyさん mailto:sage [2009/04/05(日) 12:43:45 ID:???]
Linuxサーバでそんなファイル作ったら行末に変な文字出ちゃうぜ
環境によって必要ならそういう対応すればいいだけ

963 名前:nobodyさん mailto:sage [2009/04/05(日) 12:52:14 ID:???]
変な文字っていっても^Mに見えるCR(Carriage return)でしょ
ウニックス系で\nと書くとLF(0x0a)を表し、
ウィンドズ系で\nと書くとCR+LF(0x0d 0x0a)を表すのが基本でしょ

964 名前:957 mailto:sage [2009/04/05(日) 13:26:52 ID:???]
皆さん、レスありがとうございます。
ただ、以下のようにしましたが、やっぱり取得できません。

$text = trim("
-----
あいうえお
-----
");
preg_match_all("/-{5}\n(.*)-{5}\n/",$text,$array);


965 名前:nobodyさん mailto:sage [2009/04/05(日) 13:52:29 ID:???]
lol

trim
trim
trim
trim
trim
trim
trim
trim
trim
trim

966 名前:nobodyさん mailto:sage [2009/04/05(日) 13:55:26 ID:???]
>>964
>1
スレのルールも守れない奴に正規表現が守れるものか

967 名前:nobodyさん mailto:sage [2009/04/05(日) 13:55:58 ID:???]
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);



968 名前:957 [2009/04/05(日) 14:00:27 ID:rlL9K/DC]
2回目以降もID出すんですね。sage無ければいけないと思っていました。

それで、>>967のコードをそのままコピーして
print_rで出力してみたのですが、やはり文字の「あいうえお」が取得できません。
テスト環境がWindowsXPのファイルがUTF-8ですが、それが関係するのでしょうか?
ただ、他の文字コードにしてもやっぱり取得できません。。

969 名前:nobodyさん mailto:sage [2009/04/05(日) 14:03:21 ID:???]
うにコードならU修飾子ぐらい付けろや

970 名前:nobodyさん mailto:sage [2009/04/05(日) 14:06:09 ID:???]
俺の環境では取得できるんだがな・・・

971 名前:nobodyさん mailto:sage [2009/04/05(日) 14:08:54 ID:???]
環境によるのかな

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>

</head>

<body>

<?php
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);

print_r($m);
?>
</body>
</html>


結果
Array ( [0] => Array ( [0] => ----- あいうえお ----- ) [1] => Array ( [0] => あいうえお ) )

972 名前:957 [2009/04/05(日) 14:11:33 ID:rlL9K/DC]
>>970-971
そうですか・・。

テストしているローカル環境のPHPが5.2.5で
試しにさくらのレンタルサーバ(5.2.8)にもアップして試してみたのですが、
971さんのような結果になりません・・。

973 名前:nobodyさん mailto:sage [2009/04/05(日) 14:11:50 ID:???]
俺はこれでおkだった

<?php

$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}\n(.*)\n-{5}/",$text,$array);

var_dump($array);

?>

974 名前:nobodyさん mailto:sage [2009/04/05(日) 14:12:26 ID:???]
>>972
>>969

975 名前:nobodyさん mailto:sage [2009/04/05(日) 14:18:21 ID:???]
まさかと思うけどさー
改行コードがCR+LFだからとかいうオチじゃないよね?
もしこれで通ったらぶっ飛ばすぜ

<?php

$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}[\n|\r]+(.*)[\n|\r]+-{5}/",$text,$array);

var_dump($array);

?>

976 名前:nobodyさん mailto:sage [2009/04/05(日) 14:23:01 ID:???]
別に員だけどさ
お尻の改行だけを取るならrtrim("\n",変数)の方が誰が見ても分かりやすくていいと思うんだ

977 名前:nobodyさん mailto:sage [2009/04/05(日) 14:24:31 ID:???]
[\n|\r]

こういう書き方するなら正規表現もっと勉強したほうがいい



978 名前:nobodyさん mailto:sage [2009/04/05(日) 14:29:09 ID:???]
>>975

× \n|\r
○[\r]?\n

979 名前:957 [2009/04/05(日) 14:47:03 ID:rlL9K/DC]
>>973-978
全く反応無しです・・。
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
という結果にしかなりません・・。

作成手順は、これまでDreamweaverを使っていたのですが、terapadに変更しました。
そしてこれまで挙がっているソースをコピーして保存して実行したのですが、
それでも上記のような結果になります。
文字コードをEUCにしてもSJISにしても結果は同じです・・。

やっぱりPHPのバージョンの問題ですかね・・・


980 名前:nobodyさん mailto:sage [2009/04/05(日) 14:54:28 ID:???]
pearの勉強をしよと思ってるんですけど
オススメの入門サイトはありますか?

できればpearを使った場合のメリットとかも十分に解説されているサイトを希望します。

981 名前:nobodyさん mailto:sage [2009/04/05(日) 15:07:29 ID:???]
terapadとかナメてんのかよ
サクラエディタとか秀丸とかEmEditor使えよ

982 名前:nobodyさん mailto:sage [2009/04/05(日) 15:24:51 ID:???]
釣りだろ

983 名前:nobodyさん mailto:sage [2009/04/05(日) 16:37:11 ID:???]
最近よくいる低レベル回答者を叩くのが楽しみでここ見てます

984 名前:nobodyさん mailto:sage [2009/04/05(日) 16:38:57 ID:???]
叩いてないじゃん

985 名前:nobodyさん [2009/04/05(日) 22:31:43 ID:QUmCZ8RS]
配列にひらがなのみの文字列を不定数で格納します
この配列をあいうえお順でソートしたいと思います
標準関数ではあいうえお順でソートする関数がないので、自分でユーザー定義関数にしようと思います
あいうえお順にするためにどのようなアルゴリズムを用いればいいのかどなたかヒントだけでもお願いいたします

【サンプルの配列】
$hiragana = array(
"かいわれ",
"れたす",
"あめ",
"さらだ"
);

↑をソートして、結果が↓

$hiragana = array(
"あめ",
"かいわれ",
"さらだ",
"れたす"
);




986 名前:nobodyさん mailto:sage [2009/04/05(日) 22:36:37 ID:???]
sort($hiragana);

987 名前:nobodyさん mailto:sage [2009/04/05(日) 22:46:14 ID:???]
>>986
平仮名はソートでけへんよ



988 名前:nobodyさん mailto:sage [2009/04/05(日) 23:08:08 ID:???]
>>986 じゃないが、とりあえず utf-8なら問題なくできたみたいだけど、なんか違うのけ?

989 名前:nobodyさん mailto:sage [2009/04/05(日) 23:56:37 ID:???]
バイナリ単位での比較だからひらがなだろうができる

990 名前:nobodyさん [2009/04/06(月) 00:09:45 ID:CWy5GQCe]
質問
CGIゲームを設置したんだけど
サイトによっては自動的に更新されてるんですよ
ページを定期的に読み込むにはどうしたらいいのか教えてください

991 名前:nobodyさん mailto:sage [2009/04/06(月) 00:16:48 ID:???]
cron

992 名前:nobodyさん mailto:sage [2009/04/06(月) 01:04:38 ID:???]
meta refresh

993 名前:nobodyさん mailto:sage [2009/04/06(月) 04:19:15 ID:???]
次スレ
pc11.2ch.net/test/read.cgi/php/1238958898/

994 名前:nobodyさん mailto:sage [2009/04/06(月) 05:48:09 ID:???]


995 名前:nobodyさん mailto:sage [2009/04/06(月) 22:26:16 ID:???]
ume






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef