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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/08/07(月) 13:11:50ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
05445232006/08/16(水) 13:37:07ID:???
>>540
> そのアクセスよりも20分以上前のセッションファイル
これは「ファイル生成時刻が20分以上前の」セッション・ファイルのことだと解釈して良いのでしょうか?

> 期限が0のクッキーは保存されない
とのことですが、ではその場合ブラウザはどうやってセッションIDを(一時的にでも)保存し、どうやってサーバーに対して送信しているのでしょうか?
前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?というくらいしか思いつきません。
05455232006/08/16(水) 13:41:27ID:???
>>542
>リロードしてるうちに普通にgc起動

私もその可能性くらいしか思いつかないのですが、
なにしろgcの確率が1/1000で、しかもアクセス回数は自分だけなので
せいぜい数十分の間に数回〜数十回程度です。

なのに、こうした数字の割には、頻繁にセッション切れが起こっている気がします。

それと、「session.gc_divisorはPHP 4.3.2以降」という記述がそのページに見当たらないのですが…??
念のため私の環境でphpinfoをやってみましたが、たしかに4.3.10でsession.gc_divisorの項目も存在しています。
05465232006/08/16(水) 13:43:43ID:???
>>543
実は鯖にPleskが入っておりまして、
なかなか怖くてPHPのバージョンアップに踏み切れません・・・
(Plesk自身がPHPで構築されているため、いろいろ依存関係とかあるらしいです)

どなたかPlesk環境でPHPのバージョンアップを経験された方いらっしゃいますでしょうか?
0547nobodyさん2006/08/16(水) 14:22:32ID:???
randで1〜20まで乱数を生成して、
10以下の場合は終了で、
11以上の時は10以下になるまで乱数の生成をやりなおし、
10以下になったところで終了し、
何回乱数を生成しなおしたかをカウントしたいのですが、
どのように書いたらいいのかわかりません・・・

$rand = rand(1, 20)
if($rand <= 10) {
echo "終了";
}
elseif($rand >= 11) {
ここでループの処理?
}

どなたかお助けくださいorz
0548nobodyさん2006/08/16(水) 14:41:55ID:???
function hoge($a, $b) {
$rand = rand($a, $b);
if ($rand <= 10) {
echo $rand;
} else {
hoge($a, $b);
}
}
試行回数調べたいなら静的変数使うといい。
0549nobodyさん2006/08/16(水) 14:42:01ID:???
>>547
夏休みの宿題か?

while(1) {
// 乱数生成
// 何回生成したかカウントアップ
// 10以下だったらbreak;
}
0550nobodyさん2006/08/16(水) 15:05:19ID:???
>>548-549
どうもありがとうございます。
早速ソースを参考にさせていただきましたが、
まだ思ったとおりにいかないので、
このソースを元に試行錯誤してみたいと思います。

>夏休みの宿題か?
確率の計算のものがあって、どうしても計算しきれなかったので、
ずっともやもやしていて、シミュレーターでもつくって、
だいたいどのくらいの値か出してみようと思った次第ですorz
0551nobodyさん2006/08/16(水) 15:09:32ID:???
フォームから渡されたデータを
半角と全角の数字のみ
入力を受け付けるにはどうしたらいいでしょうか?
0552nobodyさん2006/08/16(水) 15:14:20ID:???
>>551
正規表現、もしくは条件分岐。普通は前者
[0-9][0-9]
0553nobodyさん2006/08/16(水) 16:00:57ID:oFrHrQOU
この掲示板を荒らして下さい。非力なぼくの代わりにこいつらを懲らしめて下さいhttp://look2.jp/friend2006/
0554nobodyさん2006/08/16(水) 16:03:46ID:???
>>551
全角数字を半角数字に置換
後は数字かどうかのチェック(正規表現、is_なんたら関数、ctypeなんたら関数)
0555nobodyさん2006/08/16(水) 17:23:22ID:???
>>551
mb_ereg('[0-90-9]', $_POST['num']);
0556nobodyさん2006/08/16(水) 17:30:47ID:???
>>550
確率?
n回目に10以下が出る確率
1/2のn乗
てことか?これでPHPを使う意味がわからんw
0557nobodyさん2006/08/16(水) 17:45:27ID:???
>>550
数学板いって訊いてこればいいだろう
0558nobodyさん2006/08/16(水) 18:40:10ID:???
実践したいってんだから止める理由も無いだろうに
0559nobodyさん2006/08/16(水) 18:46:29ID:???
数学板には「King」が居るからヤダ
0560nobodyさん2006/08/16(水) 18:54:51ID:???
いまだ! 600げっと!
05615502006/08/16(水) 19:05:28ID:???
>>556
いいえ。確率と一言でいったので誤解を招きましたが、
実際はもっと複雑な問題なんです。
上のほうのソースは部品として使うだけなので。
他の計算部は別に作ります。
0562nobodyさん2006/08/16(水) 19:18:58ID:???
既出かもしれませんが一応ググってみて見つけられなかったので質問です。

文字列変数が、マルチバイト文字を含んでいるかどうか、の判定ロジックで
ベター、もしくはベストなものってどうやるんでしょうか?

とりあえず思いつくのはstrlenとmb_strlenで値が違えばマルチバイト含む、
といった判定方法くらいなのですが…
0563nobodyさん2006/08/16(水) 19:22:41ID:???
>>562
このスレではその方法がベストじゃね?でFAになってるぽい
0564nobodyさん2006/08/16(水) 19:22:51ID:???
>>562
/[^ -~]/

これに引っかかるならマルチバイト含んでる。
文字コード依存なし。
0565nobodyさん2006/08/16(水) 19:25:15ID:???
>>563
レスどもです。
とりあえず様子みながらこの方法で行ってみます。
0566nobodyさん2006/08/16(水) 19:31:37ID:BwdVe+rW


xsasというWAMPパッケージで、php_openssl.dllとphp_curl.dllを「F:\XSAS_XCP\diskw\usr\local\PHP\extensions」へ
置いて、php.iniで;を消しました。 しかし、xsas起動時つまりApache起動時に「・・・モジュールが見つかりません」
となってしまいます。

0567nobodyさん2006/08/16(水) 20:11:39ID:???
>>564
なにその顔文字ふざけてるの
0568nobodyさん2006/08/16(水) 20:14:19ID:???
>>564 はmb関数が無くても動くけど、正規表現だから少し重いね
0569nobodyさん2006/08/16(水) 20:21:34ID:???
>>566
php.iniのextension_dirがその
F:\XSAS_XCP\diskw\usr\local\PHP\extensions
になってる?
0570nobodyさん2006/08/16(水) 20:29:20ID:???
>>568
mb関数が1文字ずつ全半角を判定するのって正規表現より速いの?
0571nobodyさん2006/08/16(水) 20:29:24ID:???
>>564
それ、アポストロフィとかあると誤判定になる
0572nobodyさん2006/08/16(水) 20:35:44ID:???
>>571
なんで?ascii(コントロールコード以外)全部入ってるような気がするけど
0573nobodyさん2006/08/16(水) 21:09:25ID:???
どこできいたらいいかわからないのでここでききます

PHP + MYSQLで膨大なデータベースから全文検索したいんですが
text like "%検索語%" みたいにすると死ぬほど遅いです。

レンタルサーバー(XREA)を使っているのであまりいじれないんですが
どうすれば高速化できますか?
0574nobodyさん2006/08/16(水) 21:16:26ID:???
textカラムもlike演算子もチューニングの厳しいネタだなぁ…
少なくともtextにindexは振ってあるんだよな?もちろん。
とりあえずここで聞くよりDB板の方がマシそうだけど…
DB以外での解決方法を模索してるのか?
0575nobodyさん2006/08/16(水) 21:27:10ID:???
mysqlの場合、like検索で頭に%つけると、indexは使われないんです
ていうかマニュアル見てください
http://mysql.com/doc/refman/4.1/ja/fulltext-search.html
0576nobodyさん2006/08/16(水) 21:31:34ID:???
ひとまず質問者はsageてID出せ
0577nobodyさん2006/08/16(水) 21:32:50ID:???
じゃとりあえずsageます
0578nobodyさん2006/08/16(水) 21:33:42ID:???
>>575
回答者がマニュアル読ませんじゃねーよ
必要な情報がマニュアルにあるなら、お前が抜粋して書いとけ
0579nobodyさん2006/08/16(水) 21:34:12ID:ShnVBp2+
ハイハイageの間違いだよね
0580nobodyさん2006/08/16(水) 21:56:57ID:???
>回答者がマニュアル読ませんじゃねーよ

?
0581nobodyさん2006/08/16(水) 22:40:16ID:???
> 膨大なデータベースから全文検索

Web鯖と別に、高速なデータベース専用鯖を持つべきです
0582nobodyさん2006/08/16(水) 23:16:41ID:???
回答するときのマニュアルのリンクはったらいけないの???
0583nobodyさん2006/08/16(水) 23:30:57ID:???
いや、マニュアルのリンク貼るのは普通。
0584nobodyさん2006/08/16(水) 23:48:40ID:???
回答者にマニュアル読ませんじゃねーよ
と言いたかったと思われ
0585nobodyさん2006/08/17(木) 00:05:46ID:lrPl7LqR
http://wolfside.com/i/x/risou.php

これの理想ヒップと理想ウエストを作って欲しいのですが、
phpを作成代行してくれるスレなどはありますか??
0586nobodyさん2006/08/17(木) 00:17:15ID:???
>>573
1.日本語は単語の区切りが無いのでなんとか分割したい
>形態素解析(Chasen、MeCabとか)して単語に分ける
2.MySQLの全文検索は日本語に対応していない
>1で解析した文を16進とかにして保存する。検索するときも文を
 形態素解析して16進に変換してFullText検索する
連鯖ではいろいろな面でかなり辛そう。
参考サイト:http://www.ironhearts.com/diary/archives/000868.html

連鯖だと全文検索したいフィールドをテキストに落とすことを考えて
テキスト全文検索(kakasiとかNamazuとか)で検索するてのが現実的かー
0587nobodyさん2006/08/17(木) 00:21:35ID:???
>>585
ヒップやウエストに理想もへったくれもあるか
0588nobodyさん2006/08/17(木) 00:32:15ID:???
データ型を調べる関数はありますか?

具体的には、ある値のデータ型が「int」かどうかを調べたいのですが……
よろしくです。
0589nobodyさん2006/08/17(木) 00:37:37ID:???
>>588
まぬある見てくれ
http://jp.php.net/manual/ja/ref.var.php
0590nobodyさん2006/08/17(木) 00:42:23ID:???
>>589
どうもありがとう。

マニュアルのどこを見てよいのか分からなかったであります。
「変数操作関数」だったのね。

必死に数学関数を見て探していた……orz
05915852006/08/17(木) 00:47:33ID:lrPl7LqR
>>587
理想ヒップは身長×0.53
理想ウエストは身長×0.38
らしいです。

>>585のリンク先みたいに作れませんかね??
0592nobodyさん2006/08/17(木) 00:54:05ID:???
PHPで日付を表示してみたのですが
日本時間が表示されません。
海外の時間+9時間で合わせてみたのですが
それでも時間が合いません。
分とかもずれてるんです
サーバーの時計が合ってないのですか?
どうすれば良いですか?困ってます
教えてください
サーバーはアリゾナにあるらしいのですが
ほんとかどうか知りません
0593nobodyさん2006/08/17(木) 00:57:02ID:???
>>591
ほれ
<?php
$t = $_GET["t"];
echo <<<EOT
<html><head><title>理想のぼでい</title></head><body>
<form action="/" method="GET">
身長<input type="text" size=4 name="t" value="{$t}"> <br>
<input type="submit" value="compute">
</form><br>
EOT;
if ($t != "") {
echo "身長".$t."cmのばやい<br>";
echo "トップバスト:".($t * 0.525)."cm<br>";
echo "アンダーバスト:".($t * 0.423)."cm<br>";
echo "二の腕:".($t * 0.15)."cm<br>";
echo "ウエスト:".($t * 0.38)."cm<br>";
echo "ヒップ:".($t * 0.535)."cm<br>";
echo "太もも:".($t * 0.30)."cm<br>";
echo "ふくらはぎ:".($t * 0.205)."cm<br>";
}
?>
あとは何とかしろ。つかここはそういう質問はだめだかんな。
自分で作ってわからないことを質問するってのがここの掟
0594nobodyさん2006/08/17(木) 00:59:25ID:???
>>591
<?php
$niceHip = $_POST['height']*0.53;
$niceWaist = $_POST['height']*0.38;
print "理想のヒップ={$niceHip}cm<br>";
print "理想のウェスト={$niceWaist}cm<br>";
?>
05955852006/08/17(木) 01:12:26ID:lrPl7LqR
>>593-594
はつながっているんですか??

・・・それにしてもすごいですね。
こんなにすぐ作れちゃうもんなんですね。
0596nobodyさん2006/08/17(木) 01:23:27ID:???
>>591
理想ヒップは160cmで84.8cmか…俺はもう少し大きい方が好みだなぁ。
0597nobodyさん2006/08/17(木) 03:25:27ID:???
パンチ3/5今どうしてるかな
0598nobodyさん2006/08/17(木) 04:35:10ID:???
>>592
サーバーの時計がずれてるんならサーバーの管理者に頼んで合わせてもらわんと。
0599nobodyさん2006/08/17(木) 09:32:01ID:???
>>593
bcmath 使わなくていいのか?!(・∀・)
0600nobodyさん2006/08/17(木) 10:22:04ID:???
>>585
計算系のものならJavaScriptのほうがいいだろ
0601nobodyさん2006/08/17(木) 10:35:16ID:???
>>599
こんなもんに誰が精度を求めるのか。
0602nobodyさん2006/08/17(木) 11:15:37ID:???
こんなもんに誰が精交を求めるのか。
0603nobodyさん2006/08/17(木) 11:49:12ID:???
こんなもんに誰が精液を求めるのか


に見えた
0604nobodyさん2006/08/17(木) 13:00:50ID:???
>>544
>前述しましたように「ieHTTPHeaders」で確認しますと、たしかにセッションIDはローカルのどこかに記憶されているようです。
>Cookieファイルが見当たらないのに値が保存されているということは、あとはメモリ上に確保されている?

亀レスであれなんだがおそらくその解釈で合ってると思う。
HTTP通信をキャプチャしたらCookieの項目があった=ローカルマシンのどこかにその値がある
・・・ということなので、ファイルが存在しないのならメモリにあるとしか考えられない。
0605nobodyさん2006/08/17(木) 13:53:41ID:???
>>599
それ使うとどうなるんだっけ??
0606nobodyさん2006/08/17(木) 14:22:03ID:???
php-bcmath
0607nobodyさん2006/08/17(木) 15:34:52ID:???
>>605
浮動小数点に伴う誤差がなくなる
0608nobodyさん2006/08/17(木) 15:50:07ID:???
よくわからんが、1/3*3がきちんと1になるのか?
0609nobodyさん2006/08/17(木) 15:51:54ID:???
速度が犠牲になることをお忘れなく。
0610nobodyさん2006/08/17(木) 16:13:29ID:FtiwPZNr
>>593
を設置するには2つファイルが必要ですか??
0611nobodyさん2006/08/17(木) 16:18:16ID:???
>>608
それはできません
浮動小数点の誤差というのは
echo floor((0.1+0.7)*10);
が8ではなく7になるという現象
0612nobodyさん2006/08/17(木) 16:19:52ID:???
>>610
あのソースをコピーしてメモ帳とかのエディタに貼り付けて、
test.phpっていう名前で保存して、
サーバにアップロードして、test.phpにアクセスすればOK。
もちろんPHPが使えるサーバじゃないとだめ。
っていうかこのソースパースエラー出るよ。
0613nobodyさん2006/08/17(木) 16:31:54ID:FtiwPZNr
・・・やってみたんですが変になります。。。
パーミッションとかいじりますか??
0614PJP2006/08/17(木) 16:38:31ID:Ex5q979l
$logfile='1.log';
$lines = file($logfile);
$countline=count($lines);
これで$countlineが常に1になってしまいます。

データは以下のように保存しています。
$logdata='テスト';
$fp = fopen ($logfile, "w");
fputs ($fp, $logdata);
for($i = 0; $i < $countline; $i++)
fputs ($fp, $lines[$i]);
fclose ($fp);
1.logのファイルの中にはテストが溜まっていってるのですがcount()がいつも1を返します。
ご教授いただければ幸いです。
0615nobodyさん2006/08/17(木) 16:41:46ID:???
>>613
どう変なのか書かないと状況もなんもわからんのだが
0616nobodyさん2006/08/17(木) 16:55:03ID:FtiwPZNr
>>612さんがやり方で、
http://www.uploda.org/uporg481980.jpg.html
このようになりました。
0617nobodyさん2006/08/17(木) 17:00:23ID:???
>>616
拡張子はhtmlじゃなくてちゃんとphpにした?
あとサーバにphpが入ってないと使えないよ。
0618nobodyさん2006/08/17(木) 17:02:50ID:FtiwPZNr
はい。phpになってます。
infoseekの無料の奴なんですけど大丈夫ですか??
0619nobodyさん2006/08/17(木) 17:13:49ID:???
やれやれ
0620nobodyさん2006/08/17(木) 17:16:27ID:???
>>618
infoseekじゃPHPは使えないからJavaScriptかPerlで書くしかない。
0621nobodyさん2006/08/17(木) 17:16:35ID:???
これが噂に聞く夏厨か?
0622nobodyさん2006/08/17(木) 17:19:44ID:???
んもー、回答者だって酷いくらい「適当に」書いてあるんだよ。
それでも動くと言えば動くかも知れないが、実用性ゼロ。

しかも質問者も基礎の基礎をすっとばして……
なんでそんな他力本願なの?
06236142006/08/17(木) 17:21:22ID:Ex5q979l
count()がいつも1を返します。データはlogを開けると10回書き込みしたら10回分
テスト,テスト,テスト,・・・と10回分のデータが記憶されています。
これをfile()で呼び出しその要素をcount()で数えたら9もしくは10あたりを返すのじゃないのですか?
いつもいくら書き込んでも要素数1を返します。
0624nobodyさん2006/08/17(木) 17:24:17ID:???
>>614
$logdataを書き込むとき最後に改行も書き込む
ファイルオープンは"w"より"wt"がベター
06256142006/08/17(木) 17:27:01ID:Ex5q979l
改行とは\nですか?
0626nobodyさん2006/08/17(木) 17:30:01ID:???
>>625
そうだよ
"wt"とテキストモードで開けばWindowsなら自動的に\r\nに変換して書き込まれる
読み込みも\r\nが\nに変換されて読み込まれる
Linuxではテキストモードもバイナリモードも関係ないからそのまま無変換で\nのまま読み書きされる
0627nobodyさん2006/08/17(木) 17:32:56ID:???
わからないうちはwで\nつけた方がいいかもね。まだいらない知識とみた。
0628nobodyさん2006/08/17(木) 17:34:33ID:???
>>623の内容からするとfile()の動作を誤解してるんじゃないかと思うんだが
0629nobodyさん2006/08/17(木) 17:37:16ID:fBR2tTe/
質問です
動的なページで、そのページのURLを取得する関数ってありますか?
06306142006/08/17(木) 17:42:46ID:Ex5q979l
\nつけても要素増えませんでした。
file()って配列を返すんじゃないんですか?
0631nobodyさん2006/08/17(木) 17:44:20ID:???
$_SERVER['PHP_SELF'];
06326142006/08/17(木) 17:52:37ID:Ex5q979l
\nで解決しました。ありがとうございました。
0633ABCオロチ”管理”人2006/08/17(木) 18:01:23ID:???
あなたがたが、しばらく前にうちの、掲示板を晒したので厨房だらけに、なってしまいました。
どうにか、してもらえませんか?
http://www.abcoroti.com/~rent/rspace/bbs3/wwwlng.cgi
0634nobodyさん2006/08/17(木) 18:03:05ID:fBR2tTe/
>>631
$_SERVER['PHP_SELF'];
でやってみました。

たとえば
aaa.php?key=%EF%BC%92%E3%81%A1%E3%82%83%E3%82%93%E3%81%AD%E3%82%8B
↑
だと
aaa.php
までしか取れないのですが
全部取得できる方法無いですか
0635nobodyさん2006/08/17(木) 18:06:16ID:???
マニュアルを読まない奴はだいっきらいだ
0636nobodyさん2006/08/17(木) 18:06:37ID:???
>>633
なんか見るからに穴だらけだし、
管理しきれないなら閉鎖すればいいじゃん。
わざわざここに来られてもどうにかできるもんじゃないしスレ違い。
荒らしたやつのIP調べて該当プロバイダに出せばいい。
06376342006/08/17(木) 18:15:20ID:fBR2tTe/
早く教えろ!!!
0638nobodyさん2006/08/17(木) 18:18:39ID:???
phpinfo() でも読んで、どうすれば全体取れるか考えろよ
0639nobodyさん2006/08/17(木) 18:25:24ID:???
いい回答が返ってこなくて質問者が荒らしになる瞬間
0640軟式PHP2006/08/17(木) 18:30:49ID:???
>>635
ゲドネタわろたw

>>634
落ち着け。638がいうようにphpinfo()を実行して凝視すれば答えがある。
06416342006/08/17(木) 18:42:14ID:DaHzwuB7
出来た!!! ありがとぅぅぅぅぅう
06426342006/08/17(木) 21:31:43ID:???
うぅぅ、やっぱり出来ませんでした><
06436342006/08/17(木) 21:49:08ID:???
なぁぁぁんだ、簡単ジャンっっ!!!
■ このスレッドは過去ログ倉庫に格納されています