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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0784nobodyさん2006/10/01(日) 16:16:28ID:???
>>782
ローカルでCLIなPHPスクリプト動かして
対象ファイル読み込んで正規表現で
<script.*?</script>を削除して保存。
0785nobodyさん2006/10/01(日) 16:21:39ID:F96v0AKS
>>780
おお、直りました
ありがとうございます


教えてもらっておいてなんですけど正確には
setlocale (LC_ALL, 'Japanese_Japan.20932');
でした。
シングル、もしくはダブルクオーテーションで囲まないと駄目でした。
ウィンドウズでEUCJPの時はこうみたいですね。
0786nobodyさん2006/10/01(日) 16:31:01ID:???
今日は機嫌がいいので>>784をコードにしてみた。

foreach ((array) glob('*.html') as $file) {
 $contents = file_get_contents($file);
 $contents = preg_replace('|<script.*?</script>|is', '', $contents);
 file_put_contents($file, $contents);
}

phpって便利ね。
0787nobodyさん2006/10/01(日) 16:40:11ID:???
>>785
それぐらいはわかるでしょ
0788nobodyさん2006/10/01(日) 17:19:26ID:U0I6sUmv
if文で変数に値が入っていなかったら処理するコードを書いているのですが、
empty($_POST["name"])と!isset($_POST["name"])は同じですか?
なんかemptyを使うとうまくいくのですが、!issetだと動かないんですよね。
0789nobodyさん2006/10/01(日) 17:34:06ID:???
マニュアル嫁
0790nobodyさん2006/10/01(日) 17:44:02ID:???
>>788
empty … もし、空ならば
isset … もし、変数がセットされていないならば

$a = "";

だと、変数はセットされていないが、空だという状況になる。
07917902006/10/01(日) 17:44:39ID:???
訂正

isset … もし、変数がセットされて「いる」ならば

否定形と肯定形の関数があるってのは紛らわしすぎるな
0792nobodyさん2006/10/01(日) 17:48:49ID:???
>>788
フォームが空でも空文字列で渡ってくる。
つまり$_POST["name"]は空であっても作られる。
0793nobodyさん2006/10/01(日) 17:49:25ID:???
>>790
> $a = "";
>
> だと、変数はセットされていないが、空だという状況になる。

変数はセットされているが空、でしょ。
07947902006/10/01(日) 17:51:17ID:???
>>793
その通りでした
すみません
0795nobodyさん2006/10/01(日) 17:52:19ID:???
まぁまぁ、意を汲み取ろうよ。
0796nobodyさん2006/10/01(日) 18:18:45ID:???
>>779
どうでもいいけどそのコードじゃ動作しない。
0797nobodyさん2006/10/01(日) 18:25:04ID:???
話それるけど
>フォームが空でも空文字列で渡ってくる。
nameだからテキストフィールドだと思うけど、たとえばチェックボックスは
チェックしてないと渡ってこないよ。

0798nobodyさん2006/10/01(日) 18:41:49ID:???
>>782
余計なお節介かもだけどタグに囲まれてない部分のスクリプトもケアしような
onmouseoverとかhref="javascript:〜"とかとか
07997822006/10/01(日) 19:03:01ID:???
説明不足でした、すみません。
>>783
いや…ちょ……
>>784>>786>>798
ありがとうございます。
しかし、たとえば極端な例ですが次のような場合に変になってしまって困っています。
<script>for (var i = 0; i < 5; i++) { /* </script> */ document.write("</script>") }</script>
こういうscriptタグが含まれた場合にも上手く削除できるような方法を探しています。
何か良い方法はないでしょうか?
0800nobodyさん2006/10/01(日) 19:22:16ID:???
>>797
そんなことは分かってる。
0801nobodyさん2006/10/01(日) 19:25:15ID:???
1.そんな物に出会う事は稀で、運悪く当たったらゴミが出るけど気にしない
2.// から行末までと、/*〜*/ を削除
0802nobodyさん2006/10/01(日) 19:33:15ID:???
>>799
それよりもまず、そもそもなぜそんなことがしたいのか理由を説明してくれ。
それによって答え方も変わってくる。
0803nobodyさん2006/10/01(日) 19:44:29ID:???
functionの中にfunctionって定義できないの?
0804nobodyさん2006/10/01(日) 20:02:42ID:???
できる
0805nobodyさん2006/10/01(日) 20:06:15ID:???
>>803
できるけどやらないに越したことはない。
これ、つい最近も出た質問だったけど、今日は気分がいいので説明しとく。

function hoge() {
 function foo() {
  ・・・
 }
}
と定義すると、hoge();を2回呼び出したときに、fooを2回目に定義することになり、エラーが出る。
if (function_exists('foo'))でチェックして定義すればよいのだが、どうせグローバル空間に名前が追加されるので、関数の中に関数を定義することには

メ リ ッ ト が 何 一 つ な い

と言っても過言ではない。
0806nobodyさん2006/10/01(日) 20:18:46ID:???
へえ面白い。勉強になるなあ。

http://www.php.net/manual/ja/language.functions.php

これを見た感じだと、

function makehoge($hoge) {
if ($hoge == $fuga) {
function hoge() {
// ....
}
} else {
function hoge() {
//
}
}
}

みたいなことができたりするんだろうか?

・・・ってなくてもいいかな、この機能
0807nobodyさん2006/10/01(日) 20:21:58ID:???
>>805
ありがとうございます
0808nobodyさん2006/10/01(日) 20:49:11ID:???
>>804みたいな知ったかレスはもうやめてください。
知らないなら答えなくていいですからね!
0809nobodyさん2006/10/01(日) 20:58:31ID:???
>>808
できることには間違いはないと思うけど。
それより、マニュアルも読まないで、逆ギレするのはやめたほうがいい!
0810nobodyさん2006/10/01(日) 21:10:08ID:???
できるできないだけ聞いてんじゃねんだよ!
0811nobodyさん2006/10/01(日) 21:14:41ID:???
>>808、>>810
それが質問する側の態度か、ボケが。氏にさらせ!

っていうか質問するならまずIDを表示しろ。
ルールを守れチンカス野郎。
0812nobodyさん2006/10/01(日) 21:23:26ID:???
ルール(笑)
0813nobodyさん2006/10/01(日) 21:36:25ID:???
>>806
設定によって何か切り替えたいとき、関数の中で場合わけしなくて済むっていう利点はあるな。
たとえば俺は、DBがMySQLかpostgresqlかで関数の定義を分けるのに使った。
0814nobodyさん2006/10/01(日) 22:08:42ID:???
>>805
そいやcreate_function()も関数名テーブルに登録されてるな
0815nobodyさん2006/10/01(日) 22:22:17ID:???
機嫌がいいからとか気分がいいからとか、何様なんだろうね。
「自分はできる」って勘違いしちゃってるよ。ここもほぼ初心者板なんだからさ。

>>811
ここは2chなんだからさ、態度が悪いのは仕方ないでしょ。実際回答する側だって態度悪いこと多いんだし。
0816nobodyさん2006/10/01(日) 22:46:27ID:???
>>816にようちえんそつぎょうきねんとして過去ログにのこします。
2006ねん10がつ1にち あめ

つかれてるひとへこれあげるね
http://www.muzie.co.jp/cgi-bin/genre.cgi?id=classic&page=1&sort=m
0817nobodyさん2006/10/01(日) 23:17:02ID:???
質問です。
PHPより優れたCGIってありますか?
0818nobodyさん2006/10/01(日) 23:22:04ID:uNLBS1eM
classって多重に継承できないのでしょうか?

class Hoge extends Mage extends Moge
{}
みたいなことがしたいんです。
0819nobodyさん2006/10/01(日) 23:26:05ID:???
>>818
class Mage extends Moge
{

}

class Hoge extends Mage
{

}
0820nobodyさん2006/10/01(日) 23:33:50ID:???
>>818
__callでmixinしろ
0821nobodyさん2006/10/02(月) 00:34:33ID:???
jpgraphについて、ここで聞いてもいいですか?
0822nobodyさん2006/10/02(月) 00:51:35ID:???
OK
0823nobodyさん2006/10/02(月) 02:45:38ID:???
Alexaってどんな手法でユニークユーザーとか数えてんのかな?
対象サーバの管理者がログとか提出しない限り、
そんなの計測しようがないと思うんだが・・・。

(※PHPと関係ない話題だけど)
0824nobodyさん2006/10/02(月) 02:55:17ID:???
>>823
「Alexa スパイウェア」でぐぐってみw

結論から言えばブラウザにスパイウェアをいれて、閲覧履歴をAlexaに送信して
人気度を計測してる
0825nobodyさん2006/10/02(月) 03:50:02ID:???
>>824
俺はalexaツールバーは使ってないし、
スパイウェア対策ソフトも入れてるから、あんまり関係ないな。

っていうかそういう人がほとんどだろうから、
Alexaのランキングってあんまりアテにならないな。
「セキュリティ意識の薄いド素人のネット利用傾向」は分かるだろうけどwww
0826nobodyさん2006/10/02(月) 03:54:08ID:???
マイクロソフトひでぇな!!
ユーザーに黙って、こっそりAlexaのスパイウェアをIEに混合してたとは。
俺はIEのインストール時に、「スパイウェアが含まれています」なんて
注意書きを見た覚えはないぞ!!

これ、ある意味で詐欺じゃねぇの?
0827nobodyさん2006/10/02(月) 04:23:19ID:???
>>826

adobeもそうだし。この業界はそんなもん。
0828nobodyさん2006/10/02(月) 04:27:43ID:???
>>826
利用規約とプライバシーについてを「全文」読みました?w

実際読む人なんて1000人に1人もいないだろうけどねぇ
0829nobodyさん2006/10/02(月) 04:46:48ID:???
膨大な量の利用規約って、よく考えるとおかしいよな。
理論的には、文章を無駄に何百倍にも薄めて
都合の悪い規約を発見されないようにすることも可能なわけだし。

A4用紙1枚程度に収まるような、一目でわかる「要約版」を義務化してほしいもんだ。
0830nobodyさん2006/10/02(月) 05:01:18ID:???
>>829
なるほど、もっともな意見だな。
ただ、現行では「利用規約が読めないor同意できないのであれば使わなければいい」という話に持っていかれてしまうので、まだまだ社会全体の精神面での改革が必要かもしれない。
0831nobodyさん2006/10/02(月) 07:10:22ID:???
読む奴なんているのか?と思って利用規約の最後の方に私に連絡したら賞金払うって書いた人が居たな。
0832nobodyさん2006/10/02(月) 08:25:40ID:???
>>817
プログラム言語とインターフェースは違います。
それと言語の比較は意味がありませんので
0833nobodyさん2006/10/02(月) 11:44:32ID:???
>>817
比べるものを限定すればある。
0834nobodyさん2006/10/02(月) 11:48:53ID:???
アメリカは契約社会なんで、ありとあらゆることをちゃんと盛り込んで
おかないと、すぐに裁判おこして金を取ろうとする阿呆が出る。
0835nobodyさん2006/10/02(月) 12:32:41ID:???
>>831
スレ違いっぽいが、結果が気になる。
0836nobodyさん2006/10/02(月) 12:47:14ID:???
リアルタイムで今日の日付を表示する方法を教えてください。
2006.10.02みたいな感じにテキストで表示させたいのです。
0837nobodyさん2006/10/02(月) 13:33:12ID:???
>>836
<?php
$date = date(Y.m.d);
echo $date;
?>
08388372006/10/02(月) 13:39:52ID:???
あーごめん。これじゃ連結になっちゃうか。

<?php
$date = date("Y.m.d");
echo $date;
?>
0839nobodyさん2006/10/02(月) 13:40:42ID:???
>>835
何百とDLされたけど、連絡してきたのはたった2人。

って話だったような。
記事読んだのが結構前だから、元記事探そうと検索したけど見付からなくてスマソ
0840nobodyさん2006/10/02(月) 13:55:07ID:???
>>839
実際はもっといたんじゃないかね?
俺なら賞金くれるなんていっても連絡しないよ。
めんどくさいし、どうせネタだろ?って思っておしまいだな。
0841nobodyさん2006/10/02(月) 15:01:57ID:L7olNnvK
$_SERVER['QUERY_STRING'];
で?の後の値が取れないんですけど
phpのバージョンとか関係ありますか?
どんなきっかけでもいいので原因分かる方
お願いします。
0842nobodyさん2006/10/02(月) 15:08:48ID:???
自己解決しました。
$HTTP_SERVER_VARS
どうも。
0843nobodyさん2006/10/02(月) 15:54:00ID:???
>>842
まさかPHP3
0844nobodyさん2006/10/02(月) 15:55:02ID:???
>>834
ここはアメリカじゃないぜ!

・・・って言いたいところだけど、最近は日本でもDQNな訴えを
起こすバカが増えてきたからなぁ。
世間的に「セクハラ」とかいう言葉が浸透しだした90年代中頃から、
だんだんおかしくなってきてる気がする。
0845nobodyさん2006/10/02(月) 16:10:57ID:???
>>829
実際のところはお役所なり弁護士なり警察なりの指導を受けると、
むしろ「膨大な長さの利用規約でなければいけない」というのが事実。
うちの会社のも利用規約も日に日に太る一方なんですけどorz

要約なんてしたらどうとでも取れる曖昧な表現ばかりになるから
利用規約としては全く通じないのよ。
0846nobodyさん2006/10/02(月) 16:44:55ID:???
>>845
「要約」ってのは、もちろん「本来の膨大な規約」があったうえでの話だよ。
要約を用意しておいて、あくまでも「詳しくは本文を見てね」とすれば良い。
0847nobodyさん2006/10/02(月) 16:45:44ID:???
そういやアメリカは飼っていた猫を電子レンジでチンして殺してしまって、メーカーを訴えて勝訴して、それ以来電子レンジには必ず猫を入れないよう注意書きがあるとかテレビでやってた。
スレ違いスマソ。
0848nobodyさん2006/10/02(月) 17:10:41ID:???
それはただの都市伝説
0849nobodyさん2006/10/02(月) 18:02:13ID:???
まあ、でもアメリカならありうる話だわな。

マクドナルドで、ホットコーヒー飲んだら熱すぎて火傷したから金払え!
って訴えてマクドナルドから金を取ったバカがいるらしいからなww
0850nobodyさん2006/10/02(月) 18:22:10ID:UQwx9m4d
<?php
$bangou = 0;
なんちゃらなんちゃらの処理
$bangou = $bangou++;
?>
次表示するときに$bangouの値を保持したいのだけど、これは別にtxtファイルなど使わないとできないですか?
0851nobodyさん2006/10/02(月) 18:22:58ID:???
>>850
セッションに保存は?
0852nobodyさん2006/10/02(月) 18:29:23ID:UQwx9m4d
セッションというのがまだ勉強中でわからないので、調べてみます!
どうもありがとうございました。 またわからなかったら聞きに来るのでヒントをいただきたいです……
0853nobodyさん2006/10/02(月) 19:03:06ID:????2BP(1)
>>852
sesseion_start();
$_SESSION["hoge"] = $bangou;
0854nobodyさん2006/10/02(月) 19:10:40ID:???
$bangou = $bangou++; 
は
$bangou++;
と同じ
0855nobodyさん2006/10/02(月) 21:29:42ID:???
php を 5.0.4-5 から、5.1.2 へ rpmで上げようと思ってるんだけど、
spec みたら 5.1.2 のパッケージのに pear ってないです。
それなのに、Requires: file >= 4.0, php-pear になっています。

バージョンが 4.0 以上ならば依存関係なしでいいのでしょうか。
0856nobodyさん2006/10/02(月) 22:02:32ID:???
>>855
ディストリビュータに文句言ってくれ
0857nobodyさん2006/10/02(月) 22:37:49ID:???
スレ違いごみん
>>849
ドライブスルーで買ったコーヒーひざにこぼして火傷して損害賠償請求
ってのはあった。
マックのコーヒーは他のチェーン店よりも熱い(85℃くらい)ってのが
言い分で数百万$の請求だったと思う。
日本は請求金額に応じて印紙税がかかるとか、判例を作りたくない裁判官
に和解を勧められて1桁少ない額で落ち着く事が多いとか、そういう
違いがあったと思うなり。
0858nobodyさん2006/10/02(月) 23:42:30ID:???
>>849>>857
日本でも、最終的には店側がマニュアル変更するという条件で和解が成立したけど、
ファミレスでお子様ランチのスープが熱くて、飲んだ子供がやけどしたから
48万円の賠償を請求した訴訟とか実際にあるよねw
(で、店が「熱いので注意してください」と声をかけるのをマニュアル化したことで和解)
0859nobodyさん2006/10/02(月) 23:43:33ID:???
>>858
お子様ランチのスープが熱いのは店が悪いと思うんだが
対象年齢幼児〜小2 ぐらいだろ?
0860nobodyさん2006/10/02(月) 23:49:25ID:???
のび太君は、小学五年生にもかかわらず、お子様ランチを美味しそうに
食べています。(実話)
0861nobodyさん2006/10/02(月) 23:49:43ID:???
>>859
被告側の反論
> 被告側は「原因は一気に飲もうとしたため。店では毎月八百六十食の注文があるが事故は他にない」と反論。
> 「お客さまに提供する時の温度は七七度で最もおいしく、札幌ラーメンのスープも七八度が一般的」としている。
実際に熱いのが飲めるか飲めないかは子供によりけりなのに、
最初からまずくして提供するのも問題じゃないか?
別に常識外れの温度にしてるわけじゃないんだし。
0862nobodyさん2006/10/03(火) 00:32:01ID:???
いい加減スレ違いうぜーよ
0863nobodyさん2006/10/03(火) 02:05:48ID:???
>>854
は!?
$bangou = $bangou++;
は
$bangou = $bangou;
と同じ。(つまり何も変わらない)

$bangou++;
と同じになるのは
$bangou = ++$bangou;
だぞ。
0864nobodyさん2006/10/03(火) 02:34:39ID:S6+L6oiN
普通に書き間違えただけじゃないの?
0865nobodyさん2006/10/03(火) 02:36:38ID:???
>>864
>>850は書き間違いだと思うが、それに偉そうに指摘してる>>854が演算子の仕様を勘違いしてる。
0866nobodyさん2006/10/03(火) 04:48:57ID:???
>>854はCと勘違いしたのかもしれん。処理系によっては1増えるから。
まぁ、Cの仕様では動作未定義だが。
0867nobodyさん2006/10/03(火) 04:59:44ID:???
へ?ANSI Cでは後置きインクリメントは必ず元の値を返すだろ?
0868nobodyさん2006/10/03(火) 05:11:57ID:???
それはi++単独の場合では?
i=i++;/*これは動作未定義*/
C99以降の話なら知らん。
0869nobodyさん2006/10/03(火) 07:05:37ID:???
>>863
以前どこかのメーリングリストか掲示板で話題になったのを思い出した(Cだけど)。
結果は未定義ということで実際の動作も処理系で違ったんだったっけ。
<?php
$a = 2;
$a = $a++;
echo $a;
?>
結果は"2"だった
0870nobodyさん2006/10/03(火) 07:12:49ID:???
#include <stdio.h>
int main(void)
{
int i = 2;
i = i++;
printf("%d",i);
return 0;
}
VC++6では3になった
0871nobodyさん2006/10/03(火) 07:22:47ID:???
前置加算子: $aを返し、$aに1を加える

って解釈次第ではどちらとも取れるんだよね
0872nobodyさん2006/10/03(火) 07:32:26ID:???
++とか--とかはオペランドの値を変更するけど、
式の結果として何が返るかは、オペレータの定義とは別、じゃないかな?
0873nobodyさん2006/10/03(火) 08:34:24ID:???
なんかスレ違いだけど面白い話だ。
>>870
うちにもMS-C v6あるんで追加でやってみた。
#include <stdio.h>
int main(void)
{
int i, j, k;
i = 2; i = i ++; printf("%d", i); //結果は3
i = 2; j = i ++; printf("%d", j); //結果は2
}
なんか原理が理解不能な結果だなw なんだこれ??
PHPのは非常に素直な結果だと思える…
0874nobodyさん2006/10/03(火) 08:36:00ID:???
>>872
インクリメント演算子に前置きと後置きの2種類がある理由を調べてごらん。
0875nobodyさん2006/10/03(火) 10:17:47ID:???
>>874
副作用完了点 (sequence point)について調べてごらん。
0876nobodyさん2006/10/03(火) 10:24:08ID:???
勘違いの元になるから加算子減算子の式を
そのまま代入するのはやめましょうってことだな
0877nobodyさん2006/10/03(火) 10:30:37ID:???
そうだね、素直に$i++;(i++;)と書けってね。
0878nobodyさん2006/10/03(火) 12:38:46ID:???
>873
本題と何ら関係がないが k も使ってあげてください…
0879nobodyさん2006/10/03(火) 13:39:07ID:???
いや、一番素直で勘違いが起きないのは
$i = $i + 1;
だろうww
0880nobodyさん2006/10/03(火) 13:43:52ID:???
それはちょっとカコワルイ
0881nobodyさん2006/10/03(火) 13:44:29ID:???
kカワイソ
0882nobodyさん2006/10/03(火) 14:03:37ID:???
>>880
そうか?
俺はBASIC使ってた頃からの習慣で、これが一番しっくりくる。
0883nobodyさん2006/10/03(火) 14:12:17ID:???
変数名が長いときとか++のほうが楽だし、習慣的にも浸透しているから、これに関しては冗長性は減らすに越したことないと思う。
■ このスレッドは過去ログ倉庫に格納されています