【PHP】下らねぇ質問はID出して書き込みやがれ 101
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/11/15(月) 13:00:07ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 100
http://hibari.2ch.net/test/read.cgi/php/1288168893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0237nobodyさん
2010/11/23(火) 19:23:33ID:NoNXE+F/0238nobodyさん
2010/11/23(火) 19:30:48ID:???PHP: file_get_contents - Manual
http://php.net/manual/ja/function.file-get-contents.php
第5引数でバイト数指定できる
0239nobodyさん
2010/11/23(火) 20:47:22ID:ZNYYZV27print_r(glob('*表示*'));
とすると、0x5Cに引っかかるのか、ファイルが存在しても何も表示されません。
mb_internal_encoding などを変えてみたり、mb_convert_encoding もしてみましたが、解決できていません。
何とかならないでしょうか。よろしくお願いします。
0240nobodyさん
2010/11/23(火) 20:52:40ID:???0241nobodyさん
2010/11/23(火) 21:13:13ID:???0242nobodyさん
2010/11/23(火) 21:19:51ID:???0243nobodyさん
2010/11/23(火) 21:49:42ID:???0244nobodyさん
2010/11/23(火) 22:06:37ID:???それも駄目でした。
php4.4.9でも同じになるようです。
もちろん、'*示*' だと正常に結果を返してくれます。
0245nobodyさん
2010/11/24(水) 04:36:40ID:???mb_internal_encodingやmb_convert_encodingをどう変えてみたのか具体的に。
環境変数$LANGに合わせてエンコードを変えていますか。
0246239
2010/11/24(水) 07:53:39ID:???>>245 ありがとうございます。
環境変数$LANGとは何のことでしょうか?
試したコードは以下のようになります。
以下を一行にしたものをコマンドプロンプトから実行します。
php -r "mb_language('Japanese');
mb_internal_encoding('SJIS-win');
mb_regex_encoding('SJIS-win');
print_r(glob(mb_convert_encoding('*表示*','SJIS-win')));"
0247nobodyさん
2010/11/24(水) 09:19:11ID:???http://www.geocities.jp/rui_hirokawa/php/win/
0248nobodyさん
2010/11/24(水) 10:02:09ID:???0x5CはWindowsではディレクトリの区切りを表す文字コード
つまり'*表示*'とした場合、「表」の先頭コード0x95で終わるディレクトリ以下にある「示」で始まるものを探索してるということ
0249nobodyさん
2010/11/24(水) 10:38:27ID:???0250nobodyさん
2010/11/25(木) 01:51:53ID:???globがUTFを返せばいいんだろ?
環境が無いので試せないが、php.iniの設定で変更できんのか?
0251nobodyさん
2010/11/25(木) 05:58:30ID:???プログラムはUTFで書いて、データはSJISが普通。
読み上げと書き込みの時に変換する。
0252nobodyさん
2010/11/25(木) 06:04:08ID:???0253nobodyさん
2010/11/25(木) 07:31:23ID:???そうじゃなくてglobに渡す&返す文字列がSJISじゃなければ
>>248-249のようなことにならなくて済むと思うんだが
0254nobodyさん
2010/11/25(木) 09:26:23ID:???理由はwin32/glob.c、win32/readdir.cあたりを見れば分かる。
globみたいのは元々ネイティブAPI丸投げだし、Windows環境のエミュも結構てきとう。
回避策1: glob('*')とかreaddirで全部読んで、PHPスクリプト内でフィルタリングする。
回避策2: win32/readdir.cを改造してUTF-8とかに変換する。
win32/glob.cをstreamWrapper系に改造すればもっと汎用的になるのかな?
よく知らないけど。
0255nobodyさん
2010/11/25(木) 10:32:38ID:???Windowsってファイル名は内部ではUnicodeで管理してるんじゃなかったっけ。
0256nobodyさん
2010/11/25(木) 11:22:17ID:???NTFS上にもUTF-16で保存されてる。
Win32APIのAとWとUNICODEマクロの話は省略。
win32/readdir.cではFindFirstFileA/FindNextFileAでSJISに変換済みのchar*を読んでる。
0257nobodyさん
2010/11/26(金) 07:38:25ID:8z1vMVxd自動的にプログラミングで判別してカテゴリに分けたいです。
検索する文字列はクーポンのタイトルとクーポンの紹介文のみを使います。
※「飲食」のカテゴリに分けたい時
mb_strpos を使い、「カレー」、「焼肉」、「ピザ」 などの文字が紹介文に入ってて、
「エステ」、「マッサージ」、「脱毛」 などの文字列が入ってない。
上記のようなプログラムで判別しようと思っているのですが、
このやり方の問題点、もしくは最適な関数、もっとよいやり方などがあれば
教えてもらえないでしょうか?m(_ _)m
0259nobodyさん
2010/11/26(金) 08:22:08ID:???0260nobodyさん
2010/11/26(金) 08:42:25ID:6Tea9Sr/mb_strposで問題なさそうなのですね。ありがとうございます。
>>259
朝から吹き出してしまったw
飲食カテゴリ
・下記のどれか1つでも含む
「焼肉」 「カレー」 「食べ放題」 「レストラン」 (ここのワードは慎重に選ぶ)
・以下のワードをいずれも含まない
「エステ」、「マッサージ」、「脱毛」、、、、、、、(ここのワードは多くしてもよし)
こんな感じで考えております。
0262nobodyさん
2010/11/26(金) 13:57:25ID:hU0kBnUaコマンドプロンプトから「tasklist /v」をした時の結果を取得したくて
exec('tasklist /v',$ret);と書きました。
イメージ名とかPIDは正常に取得できるのですが
ウインドウタイトルの大半がN/Aになってしまい、取得出来ません。
コマンドプロンプトから「tasklist /v」をした時の結果と同じ値を取得するにはどうしたらよいのでしょうか
0263nobodyさん
2010/11/26(金) 17:34:24ID:???マニュアル嫁
とりあえず、execにはこう書いてあるな。
返り値
コマンド結果の最後の行を返します。コマンドを実行し、 一切干渉を受けずに直接コマンドから全てのデータを受けとる必要が あるならば、PassThru() 関数を使ってください。
実行されたコマンドの出力を取得するには、必ず output パラメータを設定・使用してください。
0264nobodyさん
2010/11/26(金) 17:54:59ID:???うちでは問題なし。そうでないのも取れる。
N/Aってなってるの、なんちゃらSERVICEじゃねーの?
0265nobodyさん
2010/11/26(金) 19:03:09ID:???このphpと同じPCの同じユーザーで同時に動いています。
exec、passthru、shell_exec、systemで
$cmd='tasklist /v /fi "imagename eq aviutl.exe"';
を実行させたのですが、全てウインドウタイトルが「N/A」となってしまいます。
コマンドプロンプトから
tasklist /v /fi "imagename eq aviutl.exe"
と実行するとウインドウタイトルも「出力中 50%」と取得出来るのですが。
0267nobodyさん
2010/11/26(金) 19:20:15ID:???>>262で十分理解できるだろ?>>263も明らかに見当違いの回答だし。
まぁうちには環境がないので何のアドバイスもできんが。
0268nobodyさん
2010/11/26(金) 19:25:08ID:???0269nobodyさん
2010/11/26(金) 19:44:57ID:???0270nobodyさん
2010/11/26(金) 20:40:39ID:???$cmd='tasklist /v';
exec($cmd,$ret1,$ret2);
print_r($ret1);
の結果が
http://sakuraweb.homeip.net/uploader/src/up139167.png
このようになり、aviutlだけでなく、メモ帳や専ブラ等々、全てのプログラムでウインドウタイトルがN/Aとなっていて取得できません。
phpの設定はこのような感じです。
http://sakuraweb.homeip.net/uploader/src/up139168.png
httpdの実行権限の問題かなと思ったのですが、ウインドウタイトルが取得できている方、
httpd.exeのユーザー名は何になっていますか?
http://sakuraweb.homeip.net/uploader/src/up139167.png
自分は97行目の通り、"NT AUTHORITY\SYSTEM"となっています。
0271nobodyさん
2010/11/26(金) 22:19:29ID:???> ID変わって失礼します。
> ID変わって失礼します。
0272nobodyさん
2010/11/26(金) 22:25:08ID:I8yzn2Dg0273nobodyさん
2010/11/26(金) 22:36:35ID:???http://bbs.wankuma.com/index.cgi?mode=al2&namber=23325&KLOG=44
かな?
0274nobodyさん
2010/11/26(金) 23:42:37ID:???ありがとうございます。
ですが、このトピックの方はApacheでは実行できてIISでは実行できない
という現象みたいで、自分はApacheで実行できない状態なんです。
>>どうやら、Apacheではcmd.exeの指定は要らないが
とありますので、これじゃない と思います。
0275239
2010/11/27(土) 00:05:56ID:???if (strpos($filename, '\\') === false)
$files = glob($dir.$filename.'.*');
else if (preg_match('/^Windows/i', $_SERVER['OS']))
exec('dir /B "'.$dir.$filename.'.*"', $files);
ただ、dirコマンドを何度も呼ぶとヒープメモリ?を食いつぶすのか、新しいプロセスを立ち上げることができなくなります。
この状態になると、Windowsを再起動しないと何もできなくなります。
タスクマネージャを見た限りでは特にメモリは消費していないのですが…
phpを再起動させても効果はないようです。
最終的にはreaddirで何とかしようと思いますが、
ヒープメモリ?を解放する方法などがあればご教示ください。よろしくお願いします。
0277nobodyさん
2010/11/27(土) 08:32:01ID:HnSqylEA「鍋」 「焼肉」 などの文字列を検索するロジックを書いています。
mb_strpos を使っていますが、 特定の文字列が発見された時にtrueを返す
ereg関数のほうがよいでしょうか?
0278nobodyさん
2010/11/27(土) 09:24:29ID:???0281nobodyさん
2010/11/27(土) 15:37:06ID:???前後のコードを見ないと何とも言えないが、
「dirコマンドを何度も呼ぶ」というのはどういう状態?
同じプログラムの中で exec('dir 〜 を何度も実行してるってこと?
$filesは毎回初期化してるの?
0282nobodyさん
2010/11/27(土) 16:20:26ID:JYCUoFVzuniqid()では同じマイクロ秒で生成されると駄目なようで、uniqid(mt_rand())では長すぎるので困っています。
0283nobodyさん
2010/11/27(土) 16:33:37ID:???0284nobodyさん
2010/11/27(土) 16:42:10ID:JYCUoFVzDBやファイルを使い生成した文字列がユニークかどうかを走査するのではなく、もっとスマートな処理方法はないでしょうか?
0285nobodyさん
2010/11/27(土) 16:45:23ID:???0287nobodyさん
2010/11/27(土) 16:48:25ID:???0288282
2010/11/27(土) 17:04:34ID:JYCUoFVzただ、保存する度に問い合わせて衝突するなら新しく生成してまた問い合わせる・・・を繰り返えすのが普通なのでしょうか?
uniqid(mt_rand(), true)を使えば膨大な量のデータがあっても衝突無しに一発で保存できます。けど文字数が多すぎます。
なので、TouTube(あるいはTinyURL)のように英字の大文字小文字を使用してより短い文字列に出来ないかと考えています。
>>286
連番では駄目です。
0289282
2010/11/27(土) 17:09:10ID:JYCUoFVzすみませんタイプミスです。正しくはYouTubeです。
書いていて気づいたのですが、要はuniqid(mt_rand(), true)で生成される文字列が大文字小文字を交えた半角英字と数字と一部の記号なら短くなりそうなので、
そういった類のスクリプト等があれば教えてください。
0290nobodyさん
2010/11/27(土) 17:09:41ID:???0291nobodyさん
2010/11/27(土) 17:10:27ID:???あらかじめDBにユニークIDを鬼のように入れておいて、割り当てられてないレコードを引っ張り出して処理するしかないと思うが
0292282
2010/11/27(土) 17:15:04ID:JYCUoFVzそれをやるなら空でInsertしたDBのauto_incrementなPRIMARYを使って再度そのレコードをUpdateした方がよくはないでしょうか?
0293nobodyさん
2010/11/27(土) 17:15:15ID:???tempnam
でいけるんちゃう?
0294282
2010/11/27(土) 17:26:12ID:JYCUoFVz試してみましたが、ファイル名が連番で保存されていました。
今、一つ閃いた事があるので試しきます。
上手くいけば報告します。
みなさんありがとうございました。
0296nobodyさん
2010/11/27(土) 17:57:47ID:???0298nobodyさん
2010/11/27(土) 19:36:36ID:???連番駄目なのは、どうせ見た目だけだろ、上司がそういったとか。
0299282
2010/11/27(土) 20:15:21ID:JYCUoFVz閃いた事=>>297でして、無事解決しました。
本当にありがとうございます。
0300nobodyさん
2010/11/27(土) 23:39:27ID:???0301nobodyさん
2010/11/28(日) 00:20:55ID:???sha1の結果を10進数にすることが不可能だった
桁あふれ?桁おち?用語よくわかんないけど全部は出きらない感じ
あれって解決方法あったのかなぁ
0302nobodyさん
2010/11/28(日) 01:29:17ID:???http://ideone.com/pKvtM
0303nobodyさん
2010/11/28(日) 02:56:22ID:???0304275
2010/11/28(日) 04:10:26ID:???ありがとうございます。
関数で頻繁に呼び出しています。
メモリリークですが、どうもAviraAntiVir5が原因だったようです。
お騒がせしました。
0305nobodyさん
2010/11/28(日) 04:12:42ID:???7bitぐらいにするミラクルな方法はないものか
0306304
2010/11/28(日) 04:13:27ID:???http://hibari.2ch.net/test/read.cgi/sec/1290286255/11
0307nobodyさん
2010/11/28(日) 04:19:36ID:???0308nobodyさん
2010/11/28(日) 10:37:38ID:???まぁアルファベットを含めた連番?だけど。
0309nobodyさん
2010/11/28(日) 11:18:44ID:???ユニーク生成しているのと大差ないからな
0310nobodyさん
2010/11/28(日) 14:37:02ID:???3-4つくらい同じ動画になって、以降は動画が存在しないな
0311nobodyさん
2010/11/28(日) 14:42:38ID:???0312nobodyさん
2010/11/28(日) 15:15:14ID:???連番じゃ無いのではないか?
0313nobodyさん
2010/11/28(日) 15:20:14ID:???0314nobodyさん
2010/11/28(日) 15:20:39ID:???0315nobodyさん
2010/11/28(日) 15:24:55ID:???0316nobodyさん
2010/11/28(日) 15:40:17ID:???エラーチェックの意味無いな。
0317nobodyさん
2010/11/28(日) 15:41:23ID:???0318nobodyさん
2010/11/28(日) 16:06:18ID:???0319nobodyさん
2010/11/28(日) 16:17:36ID:???意味を持つ有効なデータが上位4bit分しかなくて下位2bitが余っただけでしょ
よくあること
0320nobodyさん
2010/11/28(日) 17:53:00ID:???0321nobodyさん
2010/11/28(日) 18:12:56ID:oUHpYIlN初期値で選択ずみにしようと思っているのですが、
セキュリティ的にはまずいのでしょうか?
もしNGなら、なぜダメかを教えていただければ。
0323nobodyさん
2010/11/28(日) 18:17:54ID:oUHpYIlNありがとうございます。
では、特に問題はないのですね。
結構、初期値がチェックしてないサイトをよく見てたので、
ダメなのかなと思ってました。
0324nobodyさん
2010/11/28(日) 18:19:27ID:???0325nobodyさん
2010/11/28(日) 18:20:25ID:oUHpYIlNなるほど。では、やはりチェック外しておこうかと思います。
ありがとうございました。
0327nobodyさん
2010/11/28(日) 18:43:04ID:???0328nobodyさん
2010/11/28(日) 18:44:08ID:???Onにしないでどうする
共用PC使う人がチェク外せばいいだろ
0329nobodyさん
2010/11/28(日) 18:46:49ID:???0330nobodyさん
2010/11/28(日) 18:50:33ID:???0331nobodyさん
2010/11/28(日) 18:54:50ID:???0332nobodyさん
2010/11/28(日) 18:56:28ID:???0333nobodyさん
2010/11/28(日) 19:03:16ID:???0334nobodyさん
2010/11/28(日) 19:05:01ID:???0335nobodyさん
2010/11/28(日) 19:54:53ID:???McAfeeのダウンロードがデフォルトでチェックされているので
うっかりしていると勝手にインストールされそうになることがあるので止めて欲しい。
「次回から自動的にログイン」も同様で、チェックしたい人が意識して
チェックさせるようにすべき。
無意識ではなく、確実に本人の意思でチェックしていることが重要だと思う。
■ このスレッドは過去ログ倉庫に格納されています