トップページphp
1001コメント306KB

【PHP】下らねぇ質問はここに書き込みやがれpart11

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆HhTh8Gv36s 2005/10/18(火) 05:53:51ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
0233nobodyさん2005/10/21(金) 01:23:05ID:???
function is_nullpo($a) { return is_null($a); }
0234nobodyさん2005/10/21(金) 01:35:07ID:???
select * from table
で取り出したデータが例えば

ID   key
1   100
2   130
3   200
4   50
5   95

であるとします。
このときID=2のkeyの値が何番目に大きいかを取得するのに
スマートな方法ってありませんか
いちいちソートしないと駄目でしょうか。
0235nobodyさん2005/10/21(金) 01:36:09ID:???
>>234
SQLでソートしてから取り出せば?
0236nobodyさん2005/10/21(金) 05:28:36ID:???
SELECT で返って来たものって値ですか?参照ですか?

あるカラムにでかいデータが入っているとき
そのカラムをSELECTで取り出すと
そのコピーが与えられるんでしょうか
それともただの参照ですか?

後者ならいいんですが、前者だと効率悪いですよね
0237nobodyさん2005/10/21(金) 06:51:30ID:???
>>236
前者(値渡し)でも効率悪くないので安心しましょう。
PHPはあなたが想像しているより幾分賢いんです。

内部ではrefcountというもので管理されていて(本来はゴミ集め用だが)、まあわかりやすい説明としては、
「文字列・配列・オブジェクトは値を書き換えようとしたときに初めてコピーが作られる」

・・・散々ガイシュツなんだけどね
0238nobodyさん2005/10/21(金) 06:55:43ID:???
PHPのデータの扱いではなく、データベースのカーソルの話のような気がするが。。。
0239nobodyさん2005/10/21(金) 09:11:00ID:???
>>238
236は
>返って来たもの
の話をしているようだけど。

カーソルの話ってよくわからんな。
DBサーバからソケット伝ってくる分はもちろんそのデータの大きさに応じたコストがかかるけど。
それ以上の不必要なコピーは特にないと思われ。
0240nobodyさん2005/10/21(金) 09:31:32ID:???
>>236
238のいうリザルトセットのカーソルの話だとすると
それをDBMSが実装してるか、PHPのドライバが実装してるか
その辺に依存する。普通にやった場合は大抵
リザルトセットは実体をクライアント側(PHP管理下)のメモリーに持ってくるよ。
0241nobodyさん2005/10/21(金) 10:09:01ID:???
>>240
リザルトセットの実体の場所なんて>>236の質問と関係ねーべ。
まさかサーバ側のメモリに配置されたデータに対して「参照かどうか」聞いてるはずないし。
(もしそうだとしたらスレ違い)
0242nobodyさん2005/10/21(金) 10:50:53ID:???
まぁ、なんだ、PHPでの参照(リファレンス)というとPHPの管理下にある実体が存在するわけで、
その実体がPHPの管理下に作られた(DBから取得された)時点で
(DBからの)コピーか参照かの優劣は無くなってるな。
0243nobodyさん2005/10/21(金) 11:13:59ID:+5Hvdb6f
phpというかcgi全般の質問なんですけど、
タイマーみたいな機能(一定時間毎に処理させる)を実現するにはどうしたらいいんでしょうか?
たとえば、あるファイルに日時がついていて、その日時が過ぎれば、違うフォルダに移動させる、みたいな
cgiにアクセスしたら、過ぎた日時のファイルを移動させる、という擬似的なものしか思い浮かばないんですが、
やっぱそんな感じでしか無理なんでしょうか?
わかりにくくてすいません。
0244軟式PHP2005/10/21(金) 11:15:58ID:???
>>243
UNIX,Linuxならcron。
Windowsならタスクスケジューラー。
0245nobodyさん2005/10/21(金) 11:33:30ID:???
>>243
pseudo-cron
http://www.bitfolge.de/pseudocron-en.html
これ思い出した.アクセスがほとんどないサイトだったら使い物にならない.
でも cron が使えないレンタルサーバとかだったらこういう方法しかない.
0246nobodyさん2005/10/21(金) 11:45:43ID:???
imap_fetch_overviewでヘッダ情報を取得したんですが。
fromの値が途中で切れてしまいます。

実際のfromは下記の通りですが
common.gsc <faq@yokohama.riken.go.jp>

取得したfromはこうなってしまいます。""が付くのも謎です・・
"common.gsc"

$head = imap_fetch_overview($mbox,113);
foreach($head[0] as $key => $value)
{
print $key . ":" . $value . "<br>";
}


よろしくお願いいたしマフ
0247軟式PHP2005/10/21(金) 12:09:32ID:???
>>246
それさ、そのまま出力したんじゃ<>で囲まれた部分がタグとして
認識されて表示されないんじゃないのかな?
ソースを表示して見てミソ。
0248nobodyさん2005/10/21(金) 12:11:43ID:???
>>247
おお、ありがとう・・
俺レベル低っ!  orz
0249nobodyさん2005/10/21(金) 12:34:28ID:???
>>248
外部から取得したデータをHTMLとして出力するときは
サニタイズするようにしたほうが身のため.
0250nobodyさん2005/10/21(金) 13:36:08ID:???
phpでポートの監視は可能ですか?
0251nobodyさん2005/10/21(金) 13:48:25ID:???
>>250
監視の意味する所がよく分からんが、いわゆるsocketのbindなら可能。
0252nobodyさん2005/10/21(金) 13:52:07ID:???
>>251
自鯖の状態を、別のサイトから見ようとしてます。
socketのbindですか…調べてみます。ありがとうございました。
0253nobodyさん2005/10/21(金) 14:08:47ID:???
httpサーバーが動いているOSの名前や種類を判別する方法ってありますか?
UNIX系とWindows系でファイルパスの区切りが/と\のように違うので
OSを判別できれば個別にプログラムで対応できるかと思いまして。
0254nobodyさん2005/10/21(金) 14:13:36ID:???
>>252
その目的だとbindではなくてfopenやfile等で自鯖の適当なファイルを
読み込むスクリプトを書いてcronで回すような形になる。
でもワザワザPHPで書かなくてもwget等を使ってシェルスクリプトをcronで回した方が楽だと思う。
02552542005/10/21(金) 14:16:08ID:???
ちょっと言葉足らず。
自鯖のhttpの状態を監視したい場合の話。http以外の監視なら別の手段になるね。
0256nobodyさん2005/10/21(金) 14:17:07ID:???
>>253
仮に出来たとしても
人のサーバーならやめれ
自分の管理のサーバーなら勝手にやって
0257nobodyさん2005/10/21(金) 14:31:02ID:???
配布用途じゃないかなぁ。
まぁでも、あんまり必要じゃないような。

定義済みの定数
ttp://www.php.net/manual/ja/reserved.constants.php
02582532005/10/21(金) 14:32:17ID:???
>>256
一般に公開するときはレンタルサーバー(UNIX)上なんでパスの区切りは
/(スラッシュ)というのはわかっているんですが、公開する間に自鯖で
表示テストなどをするときはWindows上で動くApache+PHPで表示させて
ます。このときはパスの区切りは\(円マーク)になるんでその違いを
吸収させるスクリプトを作りたかったのですが・・・
02592532005/10/21(金) 14:36:26ID:???
>>257
PHP_OSですね。
サンクスです( ´∀`)ノ
0260nobodyさん2005/10/21(金) 14:41:12ID:???
ちなみに、プログラミングやるなら、円マークとか言ってると笑われるぞ?
バックスラッシュって言うようにしといたほうがいいよ。
0261nobodyさん2005/10/21(金) 14:44:03ID:???
”お金のしるし”でいいですか?
0262nobodyさん2005/10/21(金) 14:49:40ID:???
バックスラッシュ書き込みたいんだが意外と難しいな・・・



↑バックスラッシュに見えるか?
0263nobodyさん2005/10/21(金) 14:53:19ID:???
>>254
や、phpのお勉強がてら…。
80以外にも25と110を監視します。

$http = fsockopen($host, 80, $errmp, $errmsg, 1);
echo "http:";
if(!$http){
echo "NG" . "<br>";
}else{
echo "OK" . "<br>";

こんな感じの処理が思いついたんですが、
問題点があったらご指摘願います。
0264nobodyさん2005/10/21(金) 14:54:44ID:???
>>258
・DIRECTORY_SEPARATOR (string)
・PATH_SEPARATOR (string)
http://jp2.php.net/dir
そこに書いてあるとおり拡張(ext/standard/dir.c)での定義だから
使えない環境があると思うけど。

OSの種類、名前は隠してなければPHPINFO、種類だけなら定義済み定数PHP_OS。
他にはunameコマンドの実行結果から取れる可能性もある(Unix系)。

0265nobodyさん2005/10/21(金) 14:56:12ID:???
>>262
たまに\の変わりにその全角バックスラッシュ使う人がいるけど
あれはやめてほしい.. かえって見にくい.
02662642005/10/21(金) 14:59:49ID:???
つかPHPの関数使った方が上手いことやってくれそうだな<uname
http://jp2.php.net/manual/ja/function.php-uname.php
0267nobodyさん2005/10/21(金) 15:00:00ID:???
>>255
Listenしてるかどうかだけならtcpで叩けば万事OKじゃん

>>258
DIRECTORY_SEPARATOR
0268nobodyさん2005/10/21(金) 15:05:18ID:???
>>263
真面目にやるなら、そんな感じで各鯖のポートへアクセス。
んでも接続ブッタ切りになるので、きちんとプロトコルに従って接続終了した方がよいような。
httpならgetなりheadなり。
不真面目というか手抜きというか、psとかのプロセスのリストを取得して
確認したいプロセスが存在するかチェックするPHPスクリプトをwebサーバ経由で叩く。
02692532005/10/21(金) 15:10:11ID:???
>>267
> DIRECTORY_SEPARATOR

(*´∀`)
0270nobodyさん2005/10/21(金) 15:19:26ID:???
>>269
/で統一してればWindows版のPHPは内部でちゃんと処理してくれるから問題ないよ。
0271nobodyさん2005/10/21(金) 15:21:15ID:???
つまり内部じゃないんだろ
0272nobodyさん2005/10/21(金) 15:35:18ID:???
PHPでSQL文は、外だし(外部ファイル化)にする事は可能なのでしょうか?
02732532005/10/21(金) 15:38:16ID:???
>>270
php.iniの設定次第でつか(,,゚д゚)
0274nobodyさん2005/10/21(金) 16:26:12ID:8sbI4mJR
質問です!配列がありまして、「配列の中身が無くなるまでループ」というのはどうやるんでしょう。

ちなみに、配列は $_FILES[] です!
0275nobodyさん2005/10/21(金) 16:28:14ID:???
っ PHPマニュアル
0276nobodyさん2005/10/21(金) 16:30:52ID:???
>>274
おまwwwそれ基礎過ぎだってww
0277nobodyさん2005/10/21(金) 16:32:30ID:8sbI4mJR
while($_FILES){
処理
}

これでできますかー?
ループなのでミスったら怖いから試せません(><)
0278nobodyさん2005/10/21(金) 16:41:13ID:8sbI4mJR
誰か教えて下さい(><)

お母さんに聞いたら、2ちゃんねるならすぐ答えてくれるよって言ってたのに(><)
0279nobodyさん2005/10/21(金) 16:42:53ID:???
自分用の開発環境で、動かしてみましょう。
確実に動作する事が確認できるまでは、間違っても共有鯖に上げてはいけません。
0280nobodyさん2005/10/21(金) 16:43:03ID:???
聞く前に実行してみろ
0281nobodyさん2005/10/21(金) 16:46:14ID:???
if (i++ > 10000) die("stop");とでも放り込んどけ
0282nobodyさん2005/10/21(金) 16:48:17ID:???
みんな付き合いのいい奴だな
0283nobodyさん2005/10/21(金) 16:52:46ID:???
>>277
もしループが止まらなかったらときは
急いでPCの電源ケーブルを引っこ抜けばいい.
そうすれば熱暴走による爆発炎上は避けられる.
0284nobodyさん2005/10/21(金) 16:53:08ID:???
たいていの場合30秒で停止するから便利だな
0285nobodyさん2005/10/21(金) 16:57:41ID:8sbI4mJR
if でやってみたら出来たんだけど、これをループでスマートにならない?(><)



if($_FILES["img1"]["tmp_name"]){
echo "ファイル1あるよ<br>";
$i++;
}
if($_FILES["img2"]["tmp_name"]){
echo "ファイル2あるよ<br>";
$i++;
}
if($_FILES["img3"]["tmp_name"]){
echo "ファイル3あるよ<br>";
$i++;
}
if($_FILES["img4"]["tmp_name"]){
echo "ファイル4あるよ<br>";
$i++;
}
0286nobodyさん2005/10/21(金) 17:01:17ID:???
>>285
while(list() = each()) {
}
または
foreach(){
}
0287nobodyさん2005/10/21(金) 17:03:44ID:???
foreach
0288nobodyさん2005/10/21(金) 17:10:31ID:???
foreach って、二次配列で使ったことないんだけどどうすればいいのですか。

foreach($_FILES as $value){
echo $value."<br>";
}

結果

Array
Array
Array
Array


こっちが「あれ〜ぃ?」と言いたいよ。
0289nobodyさん2005/10/21(金) 17:13:28ID:???
いいからマニュアル読め
0290nobodyさん2005/10/21(金) 17:15:50ID:???
マニュアルとリファレンス本と母親の知識とを総合した結果であります。
0291nobodyさん2005/10/21(金) 17:18:53ID:???
(´-`).。oO(すげえ母ちゃんだな・・・)
0292nobodyさん2005/10/21(金) 17:23:53ID:???
テキストファイル($log_file)から最初の1行目だけ読み込みたいと思っています。
抽出した文字列は$ip_addressという変数に格納したいです。
テキストファイルの最後に改行マークがあっても無くても無視したいのですが
それを実現するもっとも簡単な方法といったらなにがあるでしょうか?

$ip_address = @readfile($log_file);

この方法で読み込むと、文字列以外に意味不明な数字が最後に
付与されてしまいました(おそらく読み込んだバイト数?)
0293nobodyさん2005/10/21(金) 17:25:05ID:???
>>288
不覚にもワロタ
0294nobodyさん2005/10/21(金) 17:25:07ID:???
分からんかったらこれでもつかっとけ
for($i=1;$i<5;$i++){
$img = "img".$i;
if($_FILES[$img]["tmp_name"]){
echo "ファイル".$i."あるよ<br>";
}
}
0295nobodyさん2005/10/21(金) 17:25:07ID:???
>>288
foreach ($_FILES as $array) {
echo $array["tmp_name"]."<br>";
}
0296nobodyさん2005/10/21(金) 17:29:31ID:???
やっべ、>>295に感動した。まさにコレをしたかったんです!

ありがとうございまっする(≧▽≦)フォー
0297nobodyさん2005/10/21(金) 17:31:32ID:???
>>292
とりあえず
$ip_address = trim(fgets(fopen($log_file, "r")));
0298nobodyさん2005/10/21(金) 17:34:54ID:tv2tmgT4
×××○○○××××××
×××△△△××××××
×××□□□××××××
×××☆☆☆××××××
・・・
(この先同じような形がずっと続く)

上の文字列を下のような形に書き換えるには
どういう正規表現を使ったらいいのでしょうか?
×××○○○××××××○○○
×××△△△××××××△△△
×××□□□××××××□□□
×××☆☆☆××××××☆☆☆
説明が下手ですみません

0299nobodyさん2005/10/21(金) 17:37:08ID:???
>>234
SQLでWHEREしてカウント
0300nobodyさん2005/10/21(金) 17:39:35ID:???
>>297
trimなんて便利な関数が有ったんですか。
どうもです
0301nobodyさん2005/10/21(金) 17:48:39ID:???
>>298
同じ記号は同じ文字を表してる?
たとえば
×××○○○×××××× なら
AAABBBAAAAAA
っていう具合?
もうちょっと具体的な文字列を教えてもらえると答えやすいと思う.
0302nobodyさん2005/10/21(金) 17:55:53ID:???
アミノ酸とか遺伝子系かしら・・
0303nobodyさん2005/10/21(金) 18:01:29ID:tv2tmgT4
アマゾンですた・・
<img src="http://rcm-images.amazon.com/images/P/4532074045.09.LZZZZZZZ.jpg" border="0">

<img src="http://rcm-images.amazon.com/images/P/4582277276.09.LZZZZZZZ.jpg" border="0">

<img src="http://rcm-images.amazon.com/images/P/4753392058.09.LZZZZZZZ.jpg" border="0">

<img src="http://rcm-images.amazon.com/images/P/4785611812.09.LZZZZZZZ.jpg" border="0">
<img src="http://rcm-images.amazon.com/images/P/4794212402.09.LZZZZZZZ.jpg" border="0">

<img src="http://rcm-images.amazon.com/images/P/4806756180.09.LZZZZZZZ.jpg" border="0">
0304nobodyさん2005/10/21(金) 18:09:07ID:tv2tmgT4
すいません、説明不足でした。
imgタグにリングをはりたいんです。
<a href=http://www.amazon.co.jp/exec/obidos/ASIN/4806756180>;<img src="http://rcm-images.amazon.com/images/P/4806756180.09.LZZZZZZZ.jpg" border="0"></a>
0305nobodyさん2005/10/21(金) 18:15:30ID:???
>>303
そのデータはどういうふうに存在してるの?
HTMLの中?
<html><body>hogehoge<img src="http....

$img = '<img src="http....
みたいにそのデータだけが入ってたり,配列にひとつひとつ入ってたりしないよね?
0306nobodyさん2005/10/21(金) 18:25:47ID:tv2tmgT4
それ以外なにもないhtmlファイルかtxtファイルどちらでも
よいです。
file関数でよみこみ、配列を分解するとき、変数の
10桁の数字を<a href・・・にくっつける
という方法がありますけど、どうやってそれをするか
分かりません

0307nobodyさん2005/10/21(金) 18:28:07ID:tv2tmgT4
PHPの正規表現のそういうとこが
他の言語よりなんかむずかしく感じます
0308nobodyさん2005/10/21(金) 18:29:35ID:???
CGI版PHPについて質問させてください。PHPのバージョンは5.0.3です。
#!/usr/local/bin/php
<?php
echo 'ぬるぽ';
?>
これはLinux上では正常に動作しましたが、Windows上では(Premature end of script headers)ヘッダーが変だと警告がでました。そこで、
#!C:\php\php
Content-Type: text/html

<?php
echo 'ぬるぽ';
?>
こうすると(ぬるぽ)正常に動作しましたが、今度はLinux上ではContent-Typeから全部出力されてしまいました。

Windows上で初めの方法でも動作するようにするにはどうすればよいのですか?
0309nobodyさん2005/10/21(金) 18:46:25ID:???
可変数個の引数を取る関数をPHPで記述するにはどうしたらいいでしょうか?
C言語で言うargc、argvのような機能があれば嬉しいです。
0310nobodyさん2005/10/21(金) 18:53:34ID:???
   〃∩ ∧_∧
   ⊂⌒( ´・ω・)くぜんぶマニュアルに書いてあったでつ
     `ヽ_っ⌒/⌒c  ttp://www.php.net/manual/ja/functions.arguments.php
0311nobodyさん2005/10/21(金) 19:06:54ID:???
>>310
どうもでつ( ´・ω・)っ
0312nobodyさん2005/10/21(金) 19:16:10ID:???
結局>>303-304ぐらいの正規表現も書けない人間が集まっているスレです。

つ preg_replace
0313nobodyさん2005/10/21(金) 19:20:26ID:tv2tmgT4
>>312
preg_replaceってperlの正規表現が
PHPで使えるような関数だったっけ?
ずっと前それでやったけど
結局できないままです。

できるんだったら教えてください
0314nobodyさん2005/10/21(金) 19:39:33ID:???
出来るからマニュアル片手にやってみれ
0315nobodyさん2005/10/21(金) 19:44:28ID:???
>>313
つ 詳説正規表現
0316nobodyさん2005/10/21(金) 20:00:42ID:tv2tmgT4
>>315
それ一応もってるんですけど
読むひまがなくて・・
0317nobodyさん2005/10/21(金) 20:07:19ID:???
>>316
ここ見てる暇があるなら読めよwww
0318nobodyさん2005/10/21(金) 20:10:13ID:???
回答者がそろそろ疲れて(呆れて)きたようです
0319nobodyさん2005/10/21(金) 20:12:11ID:???
というか、正規表現の質問だからスレ違いな罠
0320nobodyさん2005/10/21(金) 20:12:46ID:???
何だこの流れは
0321nobodyさん2005/10/21(金) 20:12:57ID:???
そこまで言うなら貼ってやれよ

正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/
0322nobodyさん2005/10/21(金) 20:54:12ID:HUuZEDtu
アホな質問ですいません。超初心者なもので。ただいま勉強中です。

データベース(mysql)の更新をphpでさせようと
input type="text" size="3" name="test" value=""
value値にnullを設定してみました。
フィールドタイプがtextになっていれば、null値が代入されるのですが、
フィールドタイプがintの所だと、0になってしまうのです。
null値を代入したいときはどうすればいいのでしょうか。
0323nobodyさん2005/10/21(金) 20:57:34ID:???
>>322
PHPの質問じゃない。
MySQLのスレ池。
0324nobodyさん2005/10/21(金) 20:58:07ID:HUuZEDtu
>>322 フィールドタイプがtextでもnullではありませんでした。0ではないだけで、唯の空白でした。
0325nobodyさん2005/10/21(金) 20:59:03ID:HUuZEDtu
>>323 そうでしたか。ありがとうございました。そっちへ行ってみます。
0326nobodyさん2005/10/21(金) 21:11:34ID:???
>>322
NULLはNULLであって、NULL以外の何物でもない
0327nobodyさん2005/10/21(金) 21:24:35ID:HUuZEDtu
>>326 value="null" ならどうなんでしょうか。

やっぱりダメでした。

スレ違いなのにすいません。
0328nobodyさん2005/10/21(金) 21:27:16ID:???
>>327
だからvalueが空だったらDBには「NULL」を入れるのだよ。
0329nobodyさん2005/10/21(金) 21:37:59ID:???
長さ0文字の文字列≠NULL値≠文字列"NULL"
基本のような気が
0330nobodyさん2005/10/21(金) 21:49:27ID:???
hogeDBにhogetable1,hogetable2があって
hogetabale1には
a b d
1 2 3
5 6 7
8 9 0

hogetable2には

ggg
hhh
iii

と入ってた場合
while ($row = mysql_fetch_assoc($result){
echo<<<HOGE
<p>$row[a]</p>
<p>$row[b]</p>
<p>$row[c]</p>
<p>$row[d]</p>
HOGE;
}
これを表示するにはどうすれば良いのでしょうか?
0331nobodyさん2005/10/21(金) 21:52:12ID:???
>>330
つ JOIN


ってか、スレ違い大杉
0332nobodyさん2005/10/21(金) 21:56:20ID:???
今日はDB関連多いね.
■ このスレッドは過去ログ倉庫に格納されています