【PHP】下らねぇ質問はここに書き込みやがれpart17
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/24(金) 22:05:48ID:YHkZgU8bここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/l50
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/l50
過去スレは>>2
0229204
2006/03/02(木) 12:20:20ID:???うーん、間違った行為なんでしょうか
ループが無駄に長いもので、ループの外にrequire書いてもいいんですが。
requireとその中にユーザ関数があるんですが、記述が離れると一覧性が下がるかなぁと。
>>227
oops,
require 'user_function.inc';
とでも皆さん脳内変換してくれてたんですね・・。
0230221
2006/03/02(木) 12:22:04ID:???「クッキーを削除する場合には、ブラウザの削除機構を起動するために必 ず有効期限を過去に設定する必要があります。 前の例でクッキーを削除する方法のサンプルです。」と
公式マニュアルにもあるのか。
値が無いCookieをSetすることでFirefoxやIEでは正常にCookieが削除されるけど、これは仕様外の動作なのかな。
0231nobodyさん
2006/03/02(木) 13:04:31ID:???「クッキーは設定されたものと同じパラメータで削除する必要があります。 値が空文字列("")で、その他の全ての引数が前にsetcookieをコールした時と 同じである場合に、指定された名前のクッキーはリモートクライアント上から 削除されます。」
とも書いてあるんだから両方とも正しいんじゃない?
0232nobodyさん
2006/03/02(木) 13:42:54ID:???詳細を知る方法はないでしょうか?
sql文をよく間違うのですが、
原因を見つけるまでかなり時間がかかります。
$error = mysql_query($sql);
echo $error;
これでは無理でした・・・
0233nobodyさん
2006/03/02(木) 13:49:35ID:???を使いましょう。
ユーザ関数で
0234nobodyさん
2006/03/02(木) 14:22:21ID:???0236nobodyさん
2006/03/02(木) 15:11:17ID:???>$error = mysql_query($sql);
これで$errorにクエリが成功/不成功したかという情報が入ってるから、
その情報を元に、別の関数(直前のクエリのエラーを得る)で詳細を取得。
つかマニュアル読める環境で作業してないのけ?
0237nobodyさん
2006/03/02(木) 15:54:52ID:wuWQEqGXhatena というテーブルに word というカラムがあります。このカラムには hatena goog good のように単語が半角スペースにて区切られ格納さています。
例えば hatena という単語と完全一致する単語があるレコードすべてを表示するにはどうしたらいいのでしょうか?
この場合、wordというカラムに hatena だけが入っているレコードはもとより hatena www yahoo のように他の単語もはいっているレコードも表示しなければなりません。
どうぞよろしくお願いします。
0238nobodyさん
2006/03/02(木) 15:58:13ID:???0239nobodyさん
2006/03/02(木) 15:59:11ID:???0240nobodyさん
2006/03/02(木) 16:00:45ID:wuWQEqGX0242nobodyさん
2006/03/02(木) 16:11:25ID:wuWQEqGXわれながら考えたのですが、preg_match()でなんとかとはいきませんでした。
0244nobodyさん
2006/03/02(木) 16:14:27ID:wuWQEqGX0245nobodyさん
2006/03/02(木) 16:16:35ID:???>>236が言うように、マニュアルですぐに分かりそうなもんだが。
mysql_error -- 直近に実行されたMySQLコールのエラーメッセージを返す
mysql_errno -- 直近のMySQL処理からエラーメッセージのエラー番号を返す
0248nobodyさん
2006/03/02(木) 16:20:26ID:wuWQEqGXそれだと haten sql でもヒットしてしまいませんか?
0249246
2006/03/02(木) 16:21:15ID:???SELECT 〜 WHERE word LIKE '%hatena%
0250nobodyさん
2006/03/02(木) 16:22:36ID:wuWQEqGXところで爆発って?
0251nobodyさん
2006/03/02(木) 16:26:16ID:???あ、単語のみか。不恰好だが、
SELECT 〜 WHERE word = 'hatena'
OR word LIKE 'hatena %' OR word LIKE '% hatena %' OR word LIKE '% hatena'
>>250 いや、書き込みボタン押してないのに、何故か書き込まれたので。
025285
2006/03/02(木) 16:27:29ID:tZ9efk0Aファイルを連番で1.4メガバイトずつに分割したいのですが、
やり方がわかりません。
fopen、fread、fwriteを使うという事を以前教えてもらい、googleで検索しましたが、よく分かりません。
どのように記述すればよいか教えてください。
例えば、hoge.swf(3MB)を、hoge1.swf(1.4MB),hoge2.swf(1.4MB),hoge3.swf(200KB)に分割するような感じです。
0253nobodyさん
2006/03/02(木) 16:28:55ID:???スプレッドシートではなく、DBMSを使ってるらしいことは判ったが、
>hatena という単語と完全一致する単語があるレコードすべてを表示する
条件にマッチするものを取得→表示で問題があるのか?
それとも表示の条件と取得の条件が異なるのかい
取得に関して話が出てきてないように思えるが、
そうなら何のために取得が必要なのか説明もしてくれ。
0254nobodyさん
2006/03/02(木) 16:38:38ID:???hoge.swfをfopen(rb)、hoge1.swfをfopen(wb)
freadでhoge.swfから固定バイト読み込みhoge1.swfに書き込み
(読み込みは小分けにするのが普通だから何度か繰り返す。1MBぐらないなら一気にやってもいいも)
最後にhoge1.swfをfclose。
hoge.swfのEOFに達してなければ新しくhoge2.swfをfopen、hoge1.swfと同様に処理。
全ての最後にhoge.swfをfclose。
0256nobodyさん
2006/03/02(木) 16:57:22ID:???requireはいちいちディスクアクセス&ソースのコンパイルが入るので
そんな真似すると遅い&サーバー負荷になるよ。
せっかくのPHPのキャッシュ機能も宝の持ち腐れ。
そもそも一瞥できないほど長いループブロック書いてる時点でダメダメって気がするけど。
0257nobodyさん
2006/03/02(木) 17:03:02ID:???分割はそのうち出来るだろうから他の識者に任せるとして、
それよりも、分割してダウンロードさせたファイルを端末サイドで
結合させるロジックに非常に興味があるな。
しかもauだそうで…
まさか、公式BREWアプリでやろうってか?
BREWの通信制限3Mの壁とか…
なぞは深まる・・・
0258nobodyさん
2006/03/02(木) 17:03:24ID:???select 〜 where word like '% $w %' or word like '$w %' or word like '% $w'
って空白込みでlikeを使う手じゃないの?
wordカラムのデータを '単語 単語 単語' にしないで ' 単語 単語 単語 ' って先頭と末尾にも空白入れとけば
select where word like '% $w %'
で一発だけど、そんな先のことを見据えた設計はしてないんでしょう。
いずれにせよPHPは「全く」関係ない。
0259nobodyさん
2006/03/02(木) 17:06:38ID:???$handle_r = fopen("hoge.swf", "rb");
$capacity = (int)(1.4*1024*1024);
for($n = 0; $data = fread($handle_r, $capacity); $n++) {
$filename_w = "hoge" .$n. ".swf";
$handle_w = fopen($filename_w , "wb");
fwrite($handle_w, $data);
fclose($handle_w);
}
fclose($handle_r);
0260nobodyさん
2006/03/02(木) 17:08:17ID:???1.元のファイルを”r”で開く。
2.1.4MB分読み込む
3.分割ファイルNo.1を"w"で開く
4.3のファイルに2の内容を書き込む
5.3のファイルを閉じる
6.2にもどって次の分割ファイル名をNo.2にする
7.元のファイルを全部出力し終わったら1のファイルを閉じる
幼稚園児に物を教えてるみたいだ
0262nobodyさん
2006/03/02(木) 17:19:32ID:???という質問が来そうな気がする
0263nobodyさん
2006/03/02(木) 17:20:00ID:???マニュアル見ればすぐ判るじゃん(w
っていうか、そもそも「1.4メガバイト」とか言ってる時点で、
バイナリを扱う知識に欠けているのは予想できるんだが。
たぶん引数に14000000とか指定するんだろうな。
0267204
2006/03/02(木) 19:03:53ID:???include_onceのほうがいいのかしら・・
外に出せって事ですよね早い解決は
>>そもそも一瞥できないほど長いループブロック書いてる時点でダメダメって気がするけど。
ごもっとともです・・、勉強がてらなのに一人では大き目のプログラムを行き当たりばったりで書き始めたバージンソースなので
今見ると自分でも寒いソースだ・・と痛感致します
><
0268nobodyさん
2006/03/02(木) 19:29:53ID:???> たぶん引数に14000000とか指定するんだろうな。
いえ、そこは1433600を指定してました。皆様のレスを見ているとそれも間違いのような気がしますが。
バイナリの知識に乏しいというのは正解です。
0269nobodyさん
2006/03/02(木) 19:31:40ID:???そこはちゃんと考えてあります。
自分専用の非公開ツールとして作ってるので、Windows上で結合しますよ。
0271nobodyさん
2006/03/02(木) 20:36:14ID:???PHPからoracleへ接続したいのですが
oracleクライアントを使わずに接続する方法を知っている方はおられませんか?
JAVAではthinを使って接続しました。
似たような方法があれば教えてください。
環境は 窓2000にoracle10 REDHAT9にPHP4.4.0です。
よろしくお願いします。
0276nobodyさん
2006/03/02(木) 23:37:27ID:???select 〜 where concat(" ", word, " ") like '% hatena %'
でどうかな(MySQLの場合だが)
0278nobodyさん
2006/03/03(金) 02:17:49ID:???各板から出される削除依頼の件数と、
その比率を全部調べて表にしてほしいんだけど。
0279nobodyさん
2006/03/03(金) 02:20:02ID:???質問でも雑談でもOKのスレッド 52
http://ex9.2ch.net/test/read.cgi/accuse/1129722955/
0280nobodyさん
2006/03/03(金) 04:44:58ID:???例えば掲示板へ書き込まれた本文の内容などの文字列を、
・改行が6回以上含まれているものは、5回目の改行位置までを表示
・改行が5回までのものはそのまま表示
※ここでの改行は"<br />"です。
のようにしたい場合、あれこれ考えて以下のようにしたのですが、もっとスマートな方法があるよ!とかあったら教えてください。
個人的にpreg_match()を2連続叩いているのがなんか気持ち悪いので。
<?php
$vl["body"] = 掲示板に書き込まれた本文の内容;
//改行が6回以上あったら5回目の改行までを表示
if ( preg_match("/(.*?<br \/>){6}/", $vl["body"]) ) { ?>
preg_match("/(.*?<br \/>){5}/", $vl["body"], $match);
echo $match[0] . ".......省略して表示されています。";
//改行が5回までならそのまま表示
} else {
echo $vl["body"];
}
?>
よろしくおながいします。
0281280
2006/03/03(金) 04:47:43ID:???0282nobodyさん
2006/03/03(金) 05:15:09ID:???$array = explode('<br />', $vl["body"]);
for ($i = 0; $i < 5; $i++) echo $array[$i].'<br />';
028307012320212468_mb
2006/03/03(金) 06:38:49ID:j89wU6/4> 偽だよな?と釣られてみる。
いえ、本人ですが。
どうやれば信じてもらえるかわからないので、フシアナサンをします。
0284nobodyさん
2006/03/03(金) 07:48:02ID:???0285nobodyさん
2006/03/03(金) 10:07:21ID:???だから初回ID+次回から名前に番号、なんじゃないのか?
0286nobodyさん
2006/03/03(金) 11:07:53ID:???ちなみにそれってどういう利点があるの?
PCがインターネットに繋がってないか極端に回線速度が遅い場合以外の利点が思い付かないんだけど。
> PCがインターネットに繋がってないか極端に回線速度が遅い場合以外の利点が思い付かないんだけど。
後者です。ダイヤルアップ回線で伝送損失60デシベルです。
0289nobodyさん
2006/03/03(金) 11:48:47ID:???Windowsなら、 copy /b a+b+c d
みたいに標準ツールでできるもんな
Win以外でも同じだが
0290nobodyさん
2006/03/03(金) 11:53:36ID:???それを言っちゃおしまいでw
自分でしか使わないようなら、何もPHPを使わなくても、フリーの分割・結合ツールを使った方が早い。
>>91のころはサーバ側で分割する必要があると思っていたが…
それにしたって、最初から分割してアップしておけばいい話だな。
0291280
2006/03/03(金) 12:06:33ID:???すみません。条件が抜けていました。
私が書いたのにあるように、
・6行以上ある場合は、"省略して表示されています"というメッセージを5行目の末尾に追加し、そこまでを表示
が、必要です。
282さんの例のは一番最初に試した方法なのですが、
それだと配列の長さをによってif()で分岐させなければならないので、
結果として長くなってしまいました。
0292nobodyさん
2006/03/03(金) 12:15:54ID:mLdhBg36プログラム内で現在実行されているPHPがDSOなのかCLIなのか
を判別したいのですが何か方法はありますでしょうか?
よろしくお願いします。
0293nobodyさん
2006/03/03(金) 12:21:18ID:???最後に
if(count($array) > 5){echo '省略して表示されています';}
で良いんじゃね?
0294280
2006/03/03(金) 12:23:34ID:???自分の例と282さんの書いた例を改良したものでは、長さ的にはあんまり変わりません。
「他にどんな書き方があるかな?」が知りたいだけの、
まさしく「くだらない質問」です。
282さんのに手を加えるとこんな感じですよね。
$vl["body"] = 掲示板に書き込まれた本文の内容;
$array = explode('<br />', $vl["body"]);
if ( count($array) > 5 ) {
for ($i = 0; $i < 5; $i++) {
echo $array[$i] . '<br />' . '.......省略して表示されています';
}
} else {
echo $vl["body"];
}
0295280
2006/03/03(金) 12:31:34ID:???すみません。。書いてたら返信が。
$vl["body"] = 掲示板に書き込まれた本文の内容;
$array = explode('<br />', $vl["body"]);
for ($i = 0; $i < 5; $i++) {
echo $array[$i].'<br />';
}
if(count($array) > 5) {
echo '省略して表示されています';
}
ってことですね。
いまいちすっきりしませんが、ご意見をありがとうございます。
0296nobodyさん
2006/03/03(金) 12:33:20ID:???それだと、3行とかの場合にWarningが出るから
$vl["body"] = 掲示板に書き込まれた本文の内容;
$array = explode('<br />', $vl["body"]);
for ($i = 0; $i < 5; $i++) {
if(isset($array[$i])){
echo $array[$i] . '<br />';
}
}
if ( count($array) > 5 ) {'.......省略して表示されています';}
かな。
0297280
2006/03/03(金) 12:37:38ID:???ちなみに>>295のやり方だと、本文の行数が4行以下の時(<br />が2個しかない等)に
存在しない配列の添え字を参照してしまうので、NOTICEエラーになります。
0298nobodyさん
2006/03/03(金) 12:38:23ID:???0299280
2006/03/03(金) 12:41:38ID:???explodeのやり方だと、結果としてはやっぱり微妙に長くなるようです。
030207012320212468_mb
2006/03/03(金) 13:07:19ID:j89wU6/4自分のPCのHDD内にあるファイルを分割するならそれで良いんですが、
その「フリーの分割結合ツール」を始め、インターネット上にあるソフトウェアやマルチメディアファイルは、
データ量が大きいため、ダイヤルアップで何十分もかけて課金されながらダウンロードするのがもったいなく感じ、このツールを考案しました。
0303280
2006/03/03(金) 13:13:14ID:???スクリプトの行数(というか工程)を極力減らして、viewが見づらくならないようにしようとしていました。
速度の問題もよくよく解っていることなので、色々天秤にかけた結果、
ロジック側を改良してview側では <?php echo $vl["body"] ?> だけで済むようにすることにしました。
ロジック側が各画面での書き込みデータ取得を共通化したモジュールなので、
ちょっと作業は増えますが、
1.一覧表示用データ形式で取得
2.詳細表示用データ形式で取得
3.管理画面表示用データ形式で取得
などのようにロジックを作成し、
呼び出し時のパラメータで切り替えられるようにしようと思います。
色々とありがとうございます。
0304nobodyさん
2006/03/03(金) 13:17:12ID:???つまりはなんだ、君のやろうとしているのはこういうこと貝?
1)取得対象のファイルのURLとを元にPHPにデータを取ってこさせ、サーバ上に保存
2)保存されたデータファイルを携帯電話でダウンロード(ここで分割の必要性)
3)携帯にダウンロードした細切れファイルを外部メモリなどを経由してPCへ転送
4)PC上で合体!
で、2)でつまずいているという事だな?
030607012320212468_mb
2006/03/03(金) 13:20:02ID:j89wU6/4まさにその通りです!
0307nobodyさん
2006/03/03(金) 13:27:37ID:???$vl["body"] = 掲示板に書き込まれた本文の内容;
$i = 0;
foreach(explode('<br />', $vl["body"]) as $l) {
if(++ $i >= 5) { echo '省略して表示されています'; break; } else { echo $l; }
}
0308nobodyさん
2006/03/03(金) 13:28:58ID:???0309nobodyさん
2006/03/03(金) 13:34:57ID:???これじゃダメ?
$str = "str1<br>str2<br>str3<br>str4<br>str5<br>str6<br>str7";
$reg = preg_replace("/((.*?<br>){5})(.*)/","$1省略して表示されています",$str);
echo $reg;
0313nobodyさん
2006/03/03(金) 13:46:47ID:???昔、それのメール版を作った事あるよ。IPリーチャブルな環境じゃなかったので。
誰かが作った公開サイトもあった。今考えると何も対策もなかったので、
メールボムの温床になりかねんが、随分と大らかな時代だった。
0315nobodyさん
2006/03/03(金) 15:55:16ID:j89wU6/4今から書き写してテストしてみます。
ファイル名を
$filename_w = dirname($path) + $n + "_" + $basename($path);
と記述しましたが、syntaxエラーが出ます。
どのようにすれば上手くいきますか?
0318nobodyさん
2006/03/03(金) 17:00:54ID:???こんな品質じゃ仕事で使えないじゃん。
0321nobodyさん
2006/03/03(金) 17:24:40ID:j89wU6/4できました!ありがとうございます!
あとは3g2ファイルのヘッダを付加して
DL用の<OBJECT>タグをつければ完成です!
0323nobodyさん
2006/03/03(金) 18:06:04ID:Mb/ANEcxhttp://life7.2ch.net/test/read.cgi/jinsei/1140716130/l50
ここで偽善者がオナニー暴れしてます
0326nobodyさん
2006/03/03(金) 19:26:10ID:???0327nobodyさん
2006/03/03(金) 19:32:11ID:???■ このスレッドは過去ログ倉庫に格納されています