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

【PHP】くだらねぇ質問はここに書き込みやがれpart2

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん05/01/09 06:01:24ID:tJkdKk+e

お前の下らない質問に回答があるかも知れないスレッドです。
0855nobodyさん05/02/03 21:04:56ID:???
あとラジオボタンのon offとかね
0856nobodyさん05/02/03 21:10:37ID:???
>>854
みたことねぇぇぇえええええええええええええええええええええええええええええ
0857nobodyさん05/02/03 21:16:27ID:???
>>856
ようは一行でかけるif文でつよ
0858nobodyさん05/02/03 21:24:59ID:???
$fp = fopen('foo.txt', 'ab')

and flock($fp, LOCK_EX)
and ftruncate($fp, 0)
and stream_set_write_buffer($fp, 0)
and fwrite($fp, $string, strlen($string))
and flock($fp, LOCK_UN)
and fclose($fp)

or print '何かエラー';

これでいいじゃん
085985405/02/03 21:32:08ID:???
>>856
当然ですw
0860nobodyさん05/02/03 21:45:13ID:???
>>833
つまり、833はパーミッションを理解してないいって事で終わりだな
勉強し直すか窓に帰れ
0861nobodyさん05/02/03 21:55:02ID:???
>>833
なんかLinuxのパーミッションを理解していないとしか思えない
自分が何をやったかもわからずにディレクトリの権限とかも変更してそうだしね

うちもFC3を使ってるがphp.iniのdoc_rootの設定なし、セッションファイルを
tmpfsに置いている以外は弄ってないし、問題もない
0862nobodyさん05/02/04 00:28:02ID:???
PHPってさ、配列が空の場合にforeachで回すとwarrningが出るのな。
一回もループしないで抜ければいいじゃんとか思うが。
ホント屑言語だな。
0863nobodyさん05/02/04 00:33:10ID:???
そのPHPは別のだよ。スレ違い
0864nobodyさん05/02/04 01:59:06ID:???
>>862
空の配列ではなくて 配列でない変数に対して だけどな。
配列なら配列として宣言しろと。
0865nobodyさん05/02/04 10:12:03ID:???
>>864
それは正常な動作でエラーが出なくては困ると想うけどね
配列かどうかわからないならis_array()で判断してから放り込む
なりするしかないね
そもそもセットしていない変数を利用しているとかそういう事
ではないの?
0866nobodyさん05/02/04 10:40:07ID:???
釣れすぎwww
0867nobodyさん05/02/04 10:59:33ID:???
>>866
かわいそうな人だね
0868nobodyさん05/02/04 12:26:22ID:???
いたたまれないな
0869nobodyさん05/02/04 12:29:17ID:???
いくら他人を哀れんでもお前の地位は向上してませんから!m9(^Д^)プギャー
0870nobodyさん05/02/04 12:44:44ID:???
板玉れない
0871nobodyさん05/02/04 12:51:17ID:???
居た堪れない
0872nobodyさん05/02/04 16:43:09ID:RhhqzTFg
ヘッダやフッタ部分のHTMLをPHPの

requireで呼び出して使いまわそうと思い、このような記述をし、

$footer = "http://".$_SERVER['HTTP_HOST']."/footer.php";
require $footer;

実機のWinにApacheをいれてテストすると以下のようなエラーがでました。

Fatal error: Failed opening required 'http://localhost/footer.php' (include_path='.;c:\php4\pear') in *****.php on line 88

同じものをウェブにアップしてそちらのサーバで確認したところ、きちんとフッタが表示されました。

なのでApacheかphpの設定ファイルかなにか実行ファイルが足りないとか、そういうことだとは思うのですが
ググってもなかなか解決方法が見つからなかったのでこちらで質問させていただきました。

どうすればバーチャルホストのほうでも正常に表示されるのでしょうか?
0873nobodyさん05/02/04 16:49:55ID:???
ローカルにあるファイルをわざわざHTTPで読み出さねばならん理由を教えてくれ。
0874nobodyさん05/02/04 16:56:50ID:???
>>873

http://jp2.php.net/manual/ja/function.require.php
(↓実際はincludeの項に書かれている)
 > "URL fopenラッパー"が 有効になっている場合
 > (デフォルト設定では有効です)、ローカルなパス名 の代わりに
 > URL(HTTP経由)を用いて読み込むファイルを指定することが可能です。

但し
 > PHP 4.3.0より前のバージョンのWindows版PHPは、
 > 現在この関数に関してリモートファイルアクセス機能をサポートしていません。
 > これは、allow_url_fopenを有効にした場合でも同様です。

まず、ググる前にPHPリファレンスを見て、関数の使い方が正しいか、
どのようなオプションで関数の挙動が変わるのか調べてみるべし
http://jp2.php.net/manual/ja/index.php

それでも動かなかったらまたこのスレにおいで

まあ>>873のいうことが一番ごもっともな意見だ
087587405/02/04 17:03:28ID:???
ごめん上のレスアンカーは>>872だ
0876nobodyさん05/02/04 17:05:28ID:???
正規表現プログラム、というのをPHPで初体験しようとしている者です。
テキストエディタの検索で使ってるので「URLの表し方」とかそういうのは分かるのですが
PHPで正規表現を使い文字列の一部を取り出すにはどうすればいいのでしょうか?

$all = "今日も天気が良いので眠いな";

というような変数から「今日も天気が[.*]な」を検索し、左記の「[.*]」部分を文字列strに入れるには
どう組めばよいのでしょうか・・・?(この場合なら$strに「良いので眠い」を代入させたい)

多分凄く初歩的なことだと思うのですが初歩的すぎて正規表現解説ページで該当する箇所を
見つけられません・・・。ご存じの方よろしくお願いいたします。
0877nobodyさん05/02/04 17:13:51ID:Edgmb0Vg
>>874

PHPを最新のものにしたら正常に表示されました。どうもありがとうございます。

>>873

ローカルパスで指定しているとウェブにアップするときに書き換えるのがめんどくさかったので
HTTPで開いてたのですが、普通だと皆さんどのようにしてるのでしょうか?

どこかに各ファイルへのパスを指定してあるファイルを用意して
それを毎回読み込んでフッタを表示させるようにし、
ウェブにアップする際にはそのパスを指定してあるファイルだけを
書き換える、という方法なんですかね?
0878nobodyさん05/02/04 17:19:17ID:???
>>876
まずはココ
http://jp2.php.net/manual/ja/pcre.pattern.syntax.php
0879nobodyさん05/02/04 17:59:11ID:???
>>877
ディレクトリ構造(DOCUMENT_ROOT以下、includeディレクトリなど)を本番と同じにしたテスト環境を用意する。
0880軟式PHP05/02/04 18:00:02ID:???
>>876
$strValue = "今日も天気が良いので眠いな天気がなんとな";
preg_match( "/今日も天気が(.*)な/", $strValue, $match1 );
print $match1[1] . '<br>';
preg_match( "/今日も天気が(.*?)な/", $strValue, $match2 );
print $match2[1] . '<br>';

正規表現はマニュアルからだと難しいかもしれんから
http://www5a.biglobe.ne.jp/~n_rieko/perl/8.htm
とか簡単そうなところから勉強してみては?
0881nobodyさん05/02/04 18:15:19ID:???
簡単な文字列置換だとstr_replace()を使うって手もある
0882nobodyさん05/02/04 19:16:34ID:u3cic1J6
配列のキーと値を別々の配列に入れたいのですがarray_keysとarray_valuesで
それぞれの配列を作った場合、対応関係は保持されることが保障されているのでしょうか?

例えばこのような例を考えた時に
  $a = array('a' => 'apple', 'i' => 'iron', 'u' => 'ugly', 'e' => 'english', 'o' => 'only');
  print_r(array_keys($a)); print_r(array_values($a));
として自分で実験してみたら、結果が思い通りとなり順番どおりに並んでくれました。
 Array( [0] => a [1] => i [2] => u [3] => e [4] => o )
 Array( [0] => apple [1] => iron [2] => uly [3] => english [4] => only )
このように常に対応関係が保持されるのかされないのかご存知の方が
いらっしゃいましたらどうかよろしくお願い致します。


もし対応関係が保持されない場合は
  foreach ( $a as $key => $val )
  {
    $keys[] = $key;
    $vals[] $val;
  }
のようにすればできると思いついたのですが、もっと良い方法をご存知の方が
いらっしゃいましたらどうかよろしくお願い致します。
0883nobodyさん05/02/04 20:30:00ID:E7qef8MC
すんごいくだらない質問なんですが
StrictなHTMLを吐き出すPHPスクリプトを作ろうと思い
<?xml〜を直に記入したらエラーになったため
<?php
print "<?xml〜";
?>
<!DOCTYPE〜>
<?php
本体
?>
と記述して事なきをえたんですが
設置後に見ると何故かHTMLソースの上に一行空白がありました。
これはどう対処すればよいでしょうか?教えて下さい
0884nobodyさん05/02/04 20:33:17ID:???
>>883
XREA なら、空行は広告の所為だからどうしようもない
0885nobodyさん05/02/04 20:37:54ID:???
エスパー乙
088688305/02/04 20:44:21ID:???
>>884
ローカルでテスツしています。
0887nobodyさん05/02/04 20:46:57ID:???
つかXreaってShortopentag、Onなのか
共有なんだからデフォルトOffで好きなやつだけHtaccess弄ればいいのに
0888nobodyさん05/02/04 20:49:18ID:???
888ゲット
0889nobodyさん05/02/04 20:49:49ID:???
>>883
こう書いてみたが別に隙間なんか出てこないよ
PHP4.3.10ね
------------
<?php
print "<?xml
aiueo
?>";
?>
------------

隙間が出来るのはホントに上が1行空いてるからだと思うよ
0890nobodyさん05/02/04 20:56:24ID:???
あるいはBOMかもな
0891nobodyさん05/02/04 21:28:39ID:???
---空行---
<?php
?>
とか
0892nobodyさん05/02/04 22:04:54ID:HCHebah7
$file = file("xxx.txt")

と同じ内容をwhileで書こうとおもい
下のように記述したのですが上手く動きません。
どこがおかしいのでしょうか??

$fp = fopen("xxx.txt","r");
while (!feof($fp)) {
$dat = "";
while (substr($dat, -1) != "\n"){
$dat .= fgets($fp,256);
}
$file[] = $dat;
}
0893nobodyさん05/02/04 22:06:35ID:???
お前がもう救いようの無いくらいの馬鹿だからだよ
089489205/02/04 22:11:15ID:???
事故解決。できました・・。
0895nobodyさん05/02/04 22:14:38ID:???
解決したのも不幸なような。
0896nobodyさん05/02/04 22:39:24ID:???
PHPとはXMLをベースにしないと埋め込めないものなのでしょうか?
そしてPHPの<? ?>こういうのを埋め込んだら拡張子は.phpにしなければいけないのでしょうか?
どこを見てもそんな事が書いてなかったので質問させていただきました。
0897nobodyさん05/02/04 23:56:04ID:???
>>896
何を言っているのかわからない。
PHPとXMLは直接関係無いぞ。

〜拡張子は.php〜別にどうでもいい・・・
Web鯖の設定さえできてれば、.htmlでもなんでも処理できる。Web鯖の設定ができていればね。
0898nobodyさん05/02/04 23:57:01ID:JB/Xwm8r
今日、初めてPHPを触った初心者です。
バージョン5.0.3を日本語対応させようとしたんですけど、
文字化けしてしまいます。

php.iniでは、
default_charset Shift_JIS
mbstring.language Japanese
mbstring.internal_encoding EUC-JP
mbstring.http_input auto
mbstring.http_output SJIS
mbstring.encoding_translation On
mbstring.detect_order auto
mbstring.substitute_character auto
mbstring.script_encoding EUC-JP

日経ソフトウェア1月号に載っていた設定そのまんまです。
SJISやSift_JISなんて表記が混在していても大丈夫なんでしょうか。

バージョン4なら日本語化されているので、最悪そちらを使う、
という手もあるのですが、それでは敗北なので。(笑

どなたか教えてください。
0899nobodyさん05/02/05 00:06:11ID:???
>>898
outputがSJISになってるが、ほんとにSJISでHTMLが出力されてるかソース表示して確かめよ。
SJISだったならばmetaタグにsjis指定を記述してブラウザに解釈させよ

>バージョン4なら日本語化されているので
初めて触ったのにこんな情報どっから仕入れてきたんだ?
0900 ◆Qjg53wwnQg 05/02/05 00:10:17ID:???
http://pc5.2ch.net/test/read.cgi/php/1103636095/l100
090189805/02/05 00:18:59ID:???
早速のお返事、ありがとうございます。

バージョン4については、日経ソフトウェアに書いてあったのですよ。
1月号だから、今からは買えないけど、何ページにもわたって
書いてあったので、助かりました。

これから試してみます。
0902nobodyさん05/02/05 01:14:38ID:H2lo0MBg
添付メールを送信するプログラムを
http://www.stackasterisk.jp/tech/php/php03_05.jsp
を参考に組んだのですが、OutlookExpressではちゃんと添付されていて
OperaのメーラーM2では、エンコードされずにバイナリ文字列がだーっと出てきます。
どうすればいいのでしょうか?
0903nobodyさん05/02/05 01:28:11ID:???
>>902
そうならないようにしろよ。
お前がどうやって組んだかわかるエスパーはこの板にはおらん。
0904nobodyさん05/02/05 03:50:56ID:???
>>903
エスパーなら前に一人いたぞ。
090589805/02/05 05:40:44ID:???
>>899
出力はEUCになっているみたいです。
ブラウザでエンコードをEUCに変更したらうまく表示できました。
以下、ソースを載せておきます。

<html>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<title>php基本のキ</title>
</head>
<body>
<?php print("Hello,World! 今日は天気だ"); ?>
</body>
</html>

メタタグを入れてみたんですけど、うまく行きません。
何がいけないのでしょうか。
090689805/02/05 06:22:05ID:???
>>905
本には、.phpはEUCでセーブするように、と書いてあったのですが、
試しにSiftJISでセーブしたら、うまく行きました。

もう、何がなんだか・・・(汗
090789805/02/05 06:38:30ID:???
できました。お騒がせしました。
0908nobodyさん05/02/05 15:35:45ID:HfaJ2irn
よく画像やスタイルシートを指定する際に、ルートディレクトリを表す

/

を使い、

/css/〜〜.css

という指定の仕方をしているサイトがあります。
同じようなことをPHPでもやろうとしたのですが、

require("/file/hogehoge.dat");

このようにすると、かなり上の階層(/usr/home/****/ここが本来の場所/)の
指定になっているようでHTMLでの / と異なる挙動をしています。

この場合、どのように書き換えれば同じような動作(ルートディレクトリからの指定)を
させることができるのでしょうか?
0909nobodyさん05/02/05 15:41:02ID:???
PHPって、なんでもっさりしてるんですか?
PukiWikiを使ってるとイライラするのですが、これはサーバのせいですか?
0910nobodyさん05/02/05 15:46:57ID:???
define("ROOT_PATH","/usr/home/****");
require(ROOT_PATH."/file/hogehoge.dat");

とかしとけば今後環境変わっても便利
0911nobodyさん05/02/05 16:02:06ID:???
>>908
なんで同じにせにゃならんのよ?
アホなこと考えないで正しい絶対パス指定か相対パスでも使え。
0912nobodyさん05/02/05 16:02:16ID:HfaJ2irn
>>910
ありがとうございます。defineを使うのですね。
でもまだ少し疑問点があります。

hogehoge.datをいくつものファイルで読み込む必要がある場合、

define("ROOT_PATH","/usr/home/****");

もそれぞれのファイルに書く必要があるんでしょうか?
1回記述するだけですむ方法が思いつきません・・
0913nobodyさん05/02/05 16:04:27ID:???
>>912
いちいち聞いてないでdefineがどういうものか先に調べれ
0914nobodyさん05/02/05 16:11:30ID:???
しょうがないのでとりあえず各ファイルへのパスを指定する変数を
定義したファイルをひとつ作っておき、それは相対パスで読み込み、
それ以外はその定義ファイルから読み込んで対応することにしました。

私の疑問はその定義ファイルの位置を変更した場合にも対応できるように
ルートディレクトリから指定できないかなあと思っていました。
どうもありがとうございました。
0915nobodyさん05/02/05 16:26:55ID:???
>>909
PHPが遅い?
こんなに高速で軽快な言語が他にあるのか?(w
091691005/02/05 16:27:40ID:???
>>914
んじゃ、
require($_SERVER["DOCUMENT_ROOT"]."/file/hogehoge.dat");
ってのはどうよ?
0917nobodyさん05/02/05 16:30:31ID:???
>>909
鯖のせい・PukiWikiのせいのどちらか。
0918nobodyさん05/02/05 17:35:11ID:???
スクリプトを作って「Ver 1.00」とか書くが、次にバージョンアップしたら、バージョンはなんて書けばいい?
ってか、決まりなんてあるのか?

マジくだらねぇスマソ
0919nobodyさん05/02/05 17:43:34ID:???
>>918
メジャーバージョンとマイナーバージョンをどうつけるかは自由。
092091805/02/05 17:59:50ID:???
>>919
自由なのか…。

サンクス。
0921nobodyさん05/02/05 18:14:41ID:???
>>918
それ以前に「Ver. 1.00」にするか、「Ver. 1.0.0」にするか悩まなかったか?
あるいは最初は「Ver. 0.1」から始めるべきかな?とか
0922nobodyさん05/02/05 18:23:55ID:???
公開するものなら最初のリリースは1.0かそれに近いバージョンで出すべき。
というか、バグ取りして一応のレベルに達して1.0を名乗れるようになってから
公開するのが当然。
0.1とかじゃロクに出来上がってないものを利用者にテストさせる印象しかない。
0923nobodyさん05/02/05 19:12:29ID:???
俺としては
・ソースコード公開以前→0.x.x
・ソースコード公開した→1.x.x
て感じかなぁ。
公開する気が全くなくても、「これならソース公開してもいけるかも」てなったら
1.0にする。
0924nobodyさん05/02/05 19:20:42ID:???
それが普通だね。
本来、メジャーバージョン1未満は公開すべきではないし、
評価など目的があって公開するならバージョンをつけずに
PRとして出すべきだから。
0925nobodyさん05/02/05 19:42:51ID:???
>>909
ここだけの特別な情報だから他のやつには言うなよ。
PukiWikiは遅い。間違いない。
0926nobodyさん05/02/05 19:57:19ID:???
そうだよなぁ。
あんな重い思いしてまでウィッキーさんは使いたくはないな。
0927nobodyさん05/02/05 21:46:21ID:H7vZqk2F
PHP4 + MacOS X 10.2.8環境で以下のソースを実行すると
signal Bus error を起こしてしまいます。
対処法としては2次元配列の代入元の値を変数ではなくて数値にすると
OKになります。


なにが問題なのでしょうか?

WindowsのPHP5では異常がありません。

//だめ
<?php
$n = 500;
$in = 999999;
for ($i = 0; $i < $n; $i++)
for ($j = 0; $j < $n; $j++)
$keys[$i][$j] = $in;

?>

//OK
<?php
$n = 500;
for ($i = 0; $i < $n; $i++)
for ($j = 0; $j < $n; $j++)
$adj[$i][$j] = 999999;

?>
0928nobodyさん05/02/05 21:55:43ID:???
0.xはβとかαって感じだね。1.0でついに正式版みたいな。
ゾヌとか永遠にβ版だけどね。
0929nobodyさん05/02/06 00:19:19ID:2wEgbafX
http://www.jpring.net/post/post.html
ここにあるようなPHPとmysqlを使った検索を作ってみたいのですが、
PHPをどう組み立てたらいいか全くわかりません・・・。
色々なサイトなどを見て、参考にしようと思ってもいいところが見つからなかったのでここに来ました。
0930nobodyさん05/02/06 00:35:20ID:???
>>929
全くわからないなら何やってもムダ。諦めろ。
0931nobodyさん05/02/06 00:38:05ID:???
>>929
全く分からんようだと参考サイトを見ても分からん気がするが。
どういう処理をすればいいのか問題を分割していってごらん。
1. フォームを表示
2. フォーム送信内容から検索結果を表示
2-1. フォーム内容からmysql用のSQL文を作成
2-2. mysqlへSQL文を送信
2-3. SQL実行結果を取得
2-4. 実行結果を画面表示
こういう風な分割を繰り返していくと、PHPで用意されている関数にまで分割することができる。
それを繋ぎ合わせたものが1つのスクリプトになるわけだ。
0932nobodyさん05/02/06 01:06:06ID:???
>>931
アンタ・・・いいやつだな(・∀・)
0933nobodyさん05/02/06 01:57:10ID:???
>>897
ありがとうございました!
0934nobodyさん05/02/06 10:34:14ID:???
ファイル名から拡張子を出力する関数ってありませんでしたっけ?
0935nobodyさん05/02/06 10:53:28ID:???
pathinfo()でも使っとけ
0936nobodyさん05/02/06 11:25:52ID:???
まさにその関数です!
ありがとうございました!
0937nobodyさん05/02/06 16:34:11ID:???
Perl範囲演算子みたいなのをPHPで表現するには、どうすればいいんでしょうか?
aからzまでを配列にぶち込んで、ランダムな文字列を作りたいのですが。
0938nobodyさん05/02/06 16:44:03ID:???
>>937
・aからzまで配列にぶち込む
・乱数で文字列を作る。

以上。
0939 ◆JoKeR/NWTc 05/02/06 16:57:31ID:???
srand();$str = range('a', 'z');
$str2 = "";
for($i = 0;$i < 10;$i++){$str2 .= $str[rand(0,25)];}

↑が実際動くかどうか分からんけど、
Perl範囲演算子みたいなのはrange()使えば実現できる
0940nobodyさん05/02/06 17:58:16ID:???
>>939
どうもです。やってみます。
0941nobodyさん05/02/06 18:18:38ID:5y+gVtnD
$ip = getenv('REMOTE_ADDR');
サイトを訪問した人のIPアドレスはこれで検出できたんですが、
ホスト名までは検出できないんでしょうかね?

$host_name = getenv('REMOTE_HOST');
こう書いてみたんですがうまく検出できません。
0942nobodyさん05/02/06 18:34:27ID:???
$host = gethostbyaddr(getenv("REMOTE_ADDR"));
0943nobodyさん05/02/06 20:10:37ID:???
>>942
なるほど。
PHPではREMOTE_HOSTは取得できないのですか!
サンクスであります!
0944nobodyさん05/02/06 20:25:02ID:???
>>943
いや、鯖が必ずREMOTE_HOSTを引いて値を設定するようになっていれば
PHPで"REMOTE_HOST"で取得できるよ。普通そんな設定に鯖をしとかないけど。
0945nobodyさん05/02/06 20:37:06ID:???
>>943
ちなみにgethostbyaddrを使うと、サイトの反応が遅くなるからね。
0946nobodyさん05/02/06 20:38:03ID:GClGxaTK
$data[0] = array(size=>20,hoge=>2);
$data[1] = array(size=>10,hoge=>1);
$data[2] = array(size=>30,hoge=>3);
この場合、$data[num][size]を大きい順にソートし
2次元配列に、つまり最終的に、
$data[0] = $data[2] ←[size]=30
$data[1] = $data[0] ←[size]=20
$data[2] = $data[1] ←[size]=10
このようにソートさせたいのです。
なにか方法はありませんでしょうか。
0947nobodyさん05/02/06 20:49:35ID:???
>>946
usort
0948nobodyさん05/02/06 20:57:31ID:GLYJwer2
MySQL+PHPで掲示板の書き込み作ってるのですが、
データベースに書き込めるときと書き込めないときが出るようになってしまいました。
なんでですかね?
0949nobodyさん05/02/06 21:04:00ID:???
>>948
マルチ氏ね

http://pc5.2ch.net/test/read.cgi/php/1064937268/614
0950nobodyさん05/02/06 21:04:50ID:???
>>948
・書き込み内容によって不適正なクエリが発行。
・500人ぐらいで共有してる安鯖を使用しているため処理能力がアップアップ。
0951nobodyさん05/02/06 21:29:06ID:???
>>948
月の引力の関係。
理科年表とにらめっこすれば解る。
0952nobodyさん05/02/06 21:43:23ID:???
>>951
満月の夜はどうやらかきこめません
095394805/02/06 21:55:09ID:GLYJwer2
2つのテーブルに書き込んでて、
1つ目はいつも上手くいくのよ、で2つめの書き込みがたまに失敗する。
やっぱ月かな。
0954nobodyさん05/02/06 21:57:14ID:???
アクセス解析を作っています。
リファラを記録する際に、「リファラが自分のサイトのコンテンツであれば記録しない」ということはできないでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。