【PHP】下らねぇ質問はID出して書き込みやがれ 95
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/04/19(月) 09:15:05ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0797nobodyさん
2010/05/21(金) 11:27:29ID:???かっこつけてMVCとか言うんじゃないのよ
0798nobodyさん
2010/05/21(金) 11:43:37ID:???0799nobodyさん
2010/05/21(金) 15:17:26ID:???0800nobodyさん
2010/05/22(土) 00:17:44ID:???まあ、機能が貧弱なのであまり使いたくはないが。
0801nobodyさん
2010/05/22(土) 00:22:09ID:???0802nobodyさん
2010/05/22(土) 01:06:33ID:???しかしごく一部のバイナリがそのまま出力されるようです
どのようにしたら良いですか
function clean($str) {
$str = mb_convert_encoding($str,"UTF-8","UTF-8");
$str = preg_replace('/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/','',$str);
$str = stripslashes(htmlspecialchars($str,ENT_QUOTES,"UTF-8"));
return $str;
}
0803nobodyさん
2010/05/22(土) 15:06:24ID:XHChMTdn0804nobodyさん
2010/05/22(土) 15:19:16ID:???0805nobodyさん
2010/05/22(土) 16:25:48ID:???何でもできるというなら、
テンプレートの継承(またはレイアウトテンプレート)と
文脈に応じた自動エスケープ機能と
あとマトモなHTMLとしてプレビューできる構文
を寄越せ
0806nobodyさん
2010/05/22(土) 16:30:19ID:???0807nobodyさん
2010/05/22(土) 16:53:47ID:???文脈に応じたっていうのはちょっとしんどそう。他の具体例を挙げてもらえるかな。
まともなHTMLがほしければ整形ツールでも使えば?
0808nobodyさん
2010/05/22(土) 19:24:40ID:???0809nobodyさん
2010/05/23(日) 00:38:43ID:???違うならちょっとわかんね
0810nobodyさん
2010/05/23(日) 00:40:46ID:???自分でやったことをいいたかっただけになってるな。
まぁ、smartyを指して貧弱だというのはphpの機能自体が貧弱だといっているのと同じだよね
0811nobodyさん
2010/05/23(日) 16:43:09ID:8iYZevyzRubyやPythonみたいに
0812nobodyさん
2010/05/23(日) 16:46:18ID:???0813nobodyさん
2010/05/23(日) 16:51:48ID:8iYZevyzでは例えば、
Dir.glob("*.txt").each {|x| File.remove(x)}
とかってPHPだとどうやって書きます?
0814nobodyさん
2010/05/23(日) 16:57:20ID:???0815nobodyさん
2010/05/23(日) 16:57:48ID:???0816nobodyさん
2010/05/23(日) 17:20:08ID:???どういう意味かわからないけど、カレントディレクトリの.txtを消すでいいかな?
【hoge.php】
<?php
$list = scandir(getcwd());
foreach ($list as $value) {
if (preg_match("/\.txt$/", $value)) {
unlink($value);
}
}
?>
【コマンド】
php -f hoge.php
0817nobodyさん
2010/05/23(日) 17:29:17ID:???0818nobodyさん
2010/05/23(日) 17:29:31ID:8iYZevyzコードありがとうございます
こちらが例示したコードの意味はその通りです
多少冗長になるものの可能そうですね
取っ掛かりにさせてもらいます、どうもです
0819nobodyさん
2010/05/23(日) 17:30:38ID:8iYZevyzそのままの関数があるんですね、どもです
0820816
2010/05/23(日) 17:31:15ID:???glob関数は知りませんでした
まぁ初心者に毛が生えた程度なので勘弁してくだしあ
0821nobodyさん
2010/05/23(日) 17:41:08ID:???0822nobodyさん
2010/05/23(日) 17:47:18ID:???0823nobodyさん
2010/05/23(日) 17:49:22ID:???いい加減適材適所という言葉を覚えろや
0825nobodyさん
2010/05/23(日) 17:55:11ID:???jpegを例にしただけで、mimeがplain/textだとしても他にも、
C言語のc、Perlのpl、Rubyのrbなどplain/textの拡張子が3文字とは限らないわけで。
0826nobodyさん
2010/05/23(日) 17:58:44ID:???今回の場合は .txt のみを対象にしてるわけだから 4文字でいいじゃん
そういうのを屁理屈っていうんだよ
0827nobodyさん
2010/05/23(日) 17:58:58ID:???0829nobodyさん
2010/05/23(日) 18:02:59ID:????
>>827
できるわけがない。
>>824のレスに対してのレスなので、
jpegっていったことに関して画像は関係ないだろといわれてると思ったので、
>>825のようなレスを返しただけ。
0832nobodyさん
2010/05/23(日) 18:13:30ID:???質問主のやりたいこととは無関係な話なわけだが・・・
0833nobodyさん
2010/05/23(日) 18:34:06ID:???>>813のどこにそんなことが書いてあるの?
0835nobodyさん
2010/05/23(日) 18:42:54ID:???拡張子がtxtのファイルを探したい
↓
正規表現で探す
↓
文字列探索でいいだろとつっこみが入る
↓
文字列探索だけだと.txt.phpみたいのもかかるかとおもって正規表現にした
↓
末尾から4文字切り取れ
これのどの辺がおかしいのかよく分からんのだが・・・。詳しく説明してくれないか。
0836nobodyさん
2010/05/23(日) 18:52:38ID:???回答者が想定しているケースは「みたいなもの」と言ってるように.txt.phpだけではないということ。
.txt.phpだけに限れば.txtになるが、.txt.cだったら.tになる。
よって4文字と文字数を限定するのは当てにならない。
0837nobodyさん
2010/05/23(日) 18:55:47ID:???それか泥臭くとも>>816(正規表現式は間違ってるが)と答えるな
拡張子と質問者が明示して尋ねてるのなら末尾Nバイト比較でいいが今回は余計な一言だった
0838nobodyさん
2010/05/23(日) 19:01:07ID:???このスレではよくあること。
0840nobodyさん
2010/05/23(日) 19:10:50ID:???0842nobodyさん
2010/05/23(日) 20:09:35ID:PZlPEOvW0843nobodyさん
2010/05/23(日) 20:13:44ID:???0844nobodyさん
2010/05/23(日) 20:45:23ID:???まあ切り取ってという表現が誤解を招いたのかな。
もう少し柔軟に解釈しろよw
0848nobodyさん
2010/05/23(日) 21:51:40ID:???0850nobodyさん
2010/05/23(日) 22:01:48ID:???>>>824は末尾から四文字を比較しろって言ってるだけだろ?
いいえ違います
ちゃんと流れを読んで下さい
>>816で文字列探索に正規表現なんて必要ない→
.txtという文字列があったら削除だと.txt.phpでも削除されてしまう
だから正規表現で.txtで終わるにすればいい→
それでも正規表現を使わずに末尾から4文字(.phpの部分)を切り取ればいい→
それだとtext.jpegとか.xxxが4文字でない場合はどうするの?→
以下流れを読まないやつのレスで話が異次元へ
こういう流れ
0851nobodyさん
2010/05/23(日) 22:05:09ID:WeyQqAH3真正すぎて見てられないわ
なんで >>836 で拡張子が php であるはずの .txt.php を末尾4文字を除去して txt として評価してんの?馬鹿じゃねーの?
if (substr($filename, -4) == '.txt') unlink($filename);
こうするだけだというのに何言ってんだか
0854nobodyさん
2010/05/23(日) 22:13:15ID:???任意の拡張子に応用する場合のことを言ってるの?だとしても任意の拡張子の文字数数えればいいだろ。馬鹿じゃねーの?
0855nobodyさん
2010/05/23(日) 22:13:57ID:???0858nobodyさん
2010/05/23(日) 22:14:56ID:???0859nobodyさん
2010/05/23(日) 22:15:50ID:???みんな間違ったこと言ってないだろ。
要するに正規表現使っても、末尾で比較しても同じこと。
拡張子判定のロジックの例を言ってるだけだ。
例として末尾四文字の比較を上げてるだけで、終端最初のピリオドを調べて切り出し比較してもいいし、pathinfo使ってもいい。
正規表現使うより末尾で比較した方が処理としては速いからそっちを進めてるだけでしょうが。
お前の理屈なら>>816の正規表現でtext.jpegの拡張子で.txt判定出来るの?って言ってることと同じ。
0860nobodyさん
2010/05/23(日) 22:16:08ID:???動的にカウントするぐらいなら最初から正規表現でいいやん。
これって結局正規表現アレルギーがまた暴れてるんでしょ?
0864nobodyさん
2010/05/23(日) 22:38:06ID:???正規表現が万能とでも思ってるのか?
0865nobodyさん
2010/05/23(日) 22:40:01ID:???.txtが文字列に入ったら消したい(>>813)→
.txt.phpを想定して.txtで終わるように正規表現で変えてみました(>>816)→
.txtで終了するの探すのに正規表現なんていらんよ(>>817 >>821)→
>>821-822間で勘違い発生→
以下考えてることがバラバラでgdgd
結論:>>824が喧嘩腰ではなく懇切丁寧にうまく勘違いを訂正できればよかったのだが
勘違いしてる相手には異次元にしか聞こえかった
0867nobodyさん
2010/05/23(日) 22:44:49ID:???0870nobodyさん
2010/05/23(日) 22:47:55ID:???0871nobodyさん
2010/05/23(日) 22:49:15ID:???0872nobodyさん
2010/05/23(日) 22:50:16ID:???お前らも同類
0873nobodyさん
2010/05/23(日) 22:52:32ID:???0874nobodyさん
2010/05/23(日) 22:52:37ID:???0875nobodyさん
2010/05/23(日) 22:52:58ID:???0876nobodyさん
2010/05/23(日) 22:55:45ID:???複雑だから?速度面で?
0877nobodyさん
2010/05/23(日) 22:56:07ID:???0878nobodyさん
2010/05/23(日) 23:05:50ID:???すごいやつがいたんだなwww
0879nobodyさん
2010/05/23(日) 23:08:56ID:???0880nobodyさん
2010/05/23(日) 23:11:09ID:???終わったのにいつまでもやってんじゃねえよ
wwwwwwwwwwwwwwwwwwwwwwww
0881nobodyさん
2010/05/23(日) 23:17:24ID:???ありがとう。
こっちも一応速度テストは>>816と>>851とおまけでglob使うのでしてみた。
>>816が0.0009x
>>851が0.0006x
globが0.001x
結果は、
>>851 > >>816 > glob
globって遅いんだね。
やっぱ速度差なのかな?1/10000秒単位だから、もっと他に理由があると思ったんだけど。
0884nobodyさん
2010/05/23(日) 23:21:40ID:???正規表現は書き方と対象文字列の長さによって大きく速度が変わるよ。
あと、>>851は
strrchr($v, '.') == '.txt'
こうすりゃもっと簡単で柔軟。
0885nobodyさん
2010/05/23(日) 23:22:23ID:???ディレクトリ名がhoge.txtの場合を考えないとだめなんでないの
0886nobodyさん
2010/05/23(日) 23:24:21ID:???いいこと聞いた。今度試してみよう。
0887885
2010/05/23(日) 23:30:01ID:???0888nobodyさん
2010/05/24(月) 00:06:24ID:DmnGs3M4for($i=4;$i<21;$i++){
$key = $i-4;
array_push($tes,$key=>$row[i]);
}
array_pushで$aに連想配列で値を追加していきたいですが、エラーに成ってしまいます。
正しい書き方はどんな感じでしょうか?ちなみに、$row,$keyはintです。
0889nobodyさん
2010/05/24(月) 00:11:39ID:???0890nobodyさん
2010/05/24(月) 00:12:00ID:???array_push($tes, array( $key => $row[i] ) );
それともこっち?
$tes[$key] = $row[i] ;
0891nobodyさん
2010/05/24(月) 00:25:59ID:???print_rすると、
0=>11,1=>21,2=>5,・・・・
となって欲しいのですが、どうなのでしょうか?
0892nobodyさん
2010/05/24(月) 00:51:39ID:???0893nobodyさん
2010/05/24(月) 00:53:00ID:???なら>>890のでできるはずだけど
$tes = array();
for($i=4;$i<21;$i++){
$key = $i-4;
$tes[$key] = $row[$i];
}
print_r($tes);
0894nobodyさん
2010/05/24(月) 01:15:26ID:???$rowはpearのDBからの取得です。
$tes = array();
$row = $res->fetchRow();
for($i=4;$i<21;$i++){
$key = $i-4;
$tes[$key] = $row[i];
}
みたいにやってみたんですが、$rowの値が$tes入ってないようです><
お手数おかけして申し訳ないです。
0895nobodyさん
2010/05/24(月) 01:19:37ID:???$tes[$key] = $row[i];
$tes[$key] = $row[$i];
どこが違うかよく見てみ
0896nobodyさん
2010/05/24(月) 01:21:28ID:???スレ汚し申し訳けありませんでした。
解答ありがとうございました
■ このスレッドは過去ログ倉庫に格納されています