【PHP】くだらねぇ質問はここに書き込みやがれpart7
■ このスレッドは過去ログ倉庫に格納されています
0001966
2005/07/12(火) 01:47:09ID:qOoYFCn7ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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/
立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0482nobodyさん
2005/07/25(月) 13:52:30ID:???0483nobodyさん
2005/07/25(月) 13:57:14ID:???enumねぇ・・・
foreach (array('MONDAY', 'TUESDAY', 'WEDNESDAY', ...) as $i => $name) define($name, $i);
・・・無理があるな・・・orz
っていうか「列挙型」なるものはありえないな。
だって変数に「型」自体がない。
$x = MONDAY; // $xは列挙型なつもりでも
$x = "うんこ"; // なんのエラーもなし。
結論:配列でガンガレ!(enumとは完全に別口なやり方になると思うけど)
0484nobodyさん
2005/07/25(月) 15:38:13ID:???0485nobodyさん
2005/07/25(月) 17:34:01ID:???URLにユーザ情報を持たせるにはどうしたらいいでしょうか?
ちょうどdel.icio.usのような感じで。↓のoneとtwoがユーザ名
ttp://del.icio.us/one/
ttp://del.icio.us/two/
ユーザ登録したときにディレクトリ(one,two)を作成して
スクリプトをコピーしてもいいのですがメンテナンスが大変、というか間違っている気がする。。。
htaccessで転送をかけるとURLが変わってしまうし。
すごい初歩的なことかもしれないんですが、さっぱり解りません。
どうかよろしくお願いします。
0486nobodyさん
2005/07/25(月) 19:32:09ID:???Cookieでも使えば?
0487485
2005/07/25(月) 19:47:06ID:???ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。
ほんとうに初心者なもので、意味不明だったらすみません。orz
0488458
2005/07/25(月) 20:38:37ID:???GETならいろいろな方法があるのにorz
0489nobodyさん
2005/07/25(月) 23:49:32ID:???「test.php」を以下の内容で作成しました。
--- test.txt --------------------
/tmp/hoge.dat
--- test.php --------------------
<?php
$line = file("test.txt");
$filename = "$line[0]";
echo date( 'Y/m/d (D) H:i:s', filemtime($filename) );
print "$keyword"."<br>";
?>
これを実行すると、
PHP Warning: filemtime(): Stat failed for /tmp/hoge.dat
(errno=2 - No such file or directory) in /tmp/hoge.dat
1970/01/01 (Thu)
とエラーが出て、正常に日付が取得できませんでした。
そこで上記のプログラムの2、3行目を
$filename = "/tmp/hoge.dat";
と変えて実行すると正常に日付が取得できたので、パーミッションの問題ではないと思っています。
上記の内容では何が問題なのでしょうか?
ご教授お願います。
0490nobodyさん
2005/07/26(火) 00:02:31ID:???echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
0492nobodyさん
2005/07/26(火) 08:52:10ID:???PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。
何か良い方法はないでしょうか?
初心者質問ですみません。。
0493nobodyさん
2005/07/26(火) 09:03:03ID:???0494nobodyさん
2005/07/26(火) 12:01:00ID:???どうやったらpost_max_sizeを超えたかどうかをスクリプト中で判断する事が出来るでしょうか?
0495nobodyさん
2005/07/26(火) 12:02:33ID:???パラメータを省略して呼び出した場合
NULLとなってくれるでしょうか?
$hoge=>Charge();
function Charge($p)
{
echo is_null($p)?'NULL':'NON';
}
実際に何回かやってみたのですが、$pは期待通りNULLとなったのですが
PHPの仕様でNULLになっているのか偶然NULLになったのか判断できないのです。
どうぞよろしくおねがいします。
0496nobodyさん
2005/07/26(火) 13:00:27ID:???$hoge=>Charge()が何なのか不明だが引数を省略するなら
function Charge($p=NULL)
としないと「引数が足りないエラー」になるはず。
0497nobodyさん
2005/07/26(火) 13:20:21ID:???HTMLの構造上、表向きには表示されてませんでしたが
ソースを表示したらおっしゃるとおり
Warning・・・・・・・・エラーが出てました。
0498nobodyさん
2005/07/26(火) 14:18:20ID:???以下の流れで余分な処理・追加した方がよい処理はあるでしょうか?
ロックファイルをオープン リトライ処理
ロックファイルをロック リトライ処理
目的ファイルをオープン リトライ処理
目的ファイルをロック リトライ処理
目的ファイルを処理
目的ファイルをロック解除・クローズ
ロックファイルをロック解除・クローズ・削除
リトライ処理とは、失敗した場合に時間を空けて再挑戦し、また失敗したら終了する処理です
スレ違いな気もしますが一応phpで作ってるので・・・よろしくお願いします
0499nobodyさん
2005/07/26(火) 15:43:02ID:2Byv/a8Jそのキーワードでグーグル検索できるようなリンクを自動的に生成したいのですが
どのようにすればよいのでしょうか?
全部教えてとは言いません
使う関数だけでも教えていただけたらと思います
よろしくお願いします
0500nobodyさん
2005/07/26(火) 15:53:15ID:???mb_ereg_replaceを使って<a>タグを追加。
0501nobodyさん
2005/07/26(火) 16:22:24ID:???urlencodeがいるので、こんな感じか
<?php
$str = '[キーワード]をググる';
echo preg_replace_callback('/\\[(.*?)\\]/', 'add_google_tag', $str);
function add_google_tag($m) {
return '<a href="http://www.google.co.jp/search?q='
. urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[1] . '</a>';
// return '<a href="http://www.google.co.jp/search?q='
// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>';
}
?>
下側のコメントアウトしたreturnはカッコを残しておくバージョン。
0502nobodyさん
2005/07/26(火) 17:40:53ID:mEdDXXbKどのような処理が最も単純でしょうか? お願いいたします。
0503nobodyさん
2005/07/26(火) 18:34:05ID:???・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない
お好きなものをどうぞ。
0504502
2005/07/26(火) 18:49:59ID:???回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。
やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?
ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
0505nobodyさん
2005/07/26(火) 19:30:06ID:???webページを静的なままphpを動作させる方法ってあるんでしょうか?
0506nobodyさん
2005/07/26(火) 19:37:43ID:???0507489
2005/07/26(火) 20:12:52ID:???レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。
>>491
元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、>>489のような最低限のプログラムでテストをしたため、そのままになっていました。
0510nobodyさん
2005/07/26(火) 20:26:54ID:DRNxxqTe0513nobodyさん
2005/07/26(火) 20:40:11ID:dI24bXxa出場したやつがはいることになった・・・はげしくできそうで、俺首の予感
・・・・レベル高いんだろうなきっと
0514nobodyさん
2005/07/26(火) 20:44:13ID:???え、俺?趣味です。。
0515nobodyさん
2005/07/26(火) 21:43:53ID:???たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
0516nobodyさん
2005/07/26(火) 21:44:39ID:???たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
0517515 516
2005/07/26(火) 21:59:10ID:???0518nobodyさん
2005/07/26(火) 22:23:04ID:???php用のライブラリも幾つかあった気がするなぁ。
0519nobodyさん
2005/07/26(火) 22:24:41ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0520nobodyさん
2005/07/26(火) 22:28:29ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0521nobodyさん
2005/07/26(火) 22:30:03ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0522nobodyさん
2005/07/26(火) 22:32:06ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0523nobodyさん
2005/07/26(火) 22:36:03ID:???展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
0524nobodyさん
2005/07/26(火) 22:45:05ID:???0525nobodyさん
2005/07/26(火) 23:10:54ID:???function hoge(){
$hoge="ほげ";
}
echo $hoge;
functionの中にglobal $hoge;
っていれたらオーケーになった。
あと、
functionの中に
return $hoge;
って書く場合と上記の違いってなんでしょうか?
どっちにしろglobalはないとダメみたい。スコープ?
もう一つ、functionに与える引数
function syoukai($watashi,$syokugyou){
echo $watashi . "は" . $syokugyou . "です。";
}
って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
0528nobodyさん
2005/07/27(水) 01:16:36ID:???筆おろしとか、筆おろしとか、筆おろしとか・・・・
0529nobodyさん
2005/07/27(水) 01:40:52ID:???色々なサイトを見て回ったけど全く理解出来ないorz
0531nobodyさん
2005/07/27(水) 02:45:40ID:l/k2RuR9エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0532503
2005/07/27(水) 03:12:16ID:???>ですので、先に mb_ereg_replace で空白に置換した後、
って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
0534nobodyさん
2005/07/27(水) 04:33:43ID:???0535nobodyさん
2005/07/27(水) 05:01:58ID:???タイトルから質問が消えてるな
一応あるw
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
0537nobodyさん
2005/07/27(水) 06:33:37ID:l/k2RuR9レスありがとう。やってみます(`・ω・´)
0539nobodyさん
2005/07/27(水) 07:28:46ID:???右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか?
imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、
imagecopyresized()を使っています。
0540531
2005/07/27(水) 07:37:22ID:???0541nobodyさん
2005/07/27(水) 07:59:45ID:???色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
0542nobodyさん
2005/07/27(水) 10:52:23ID:???・PHPをモジュールで動かす
・C言語のバイナリCGI
どのような方法がありますか?
RedhatLinux、Apache、PHP5.0.4、gccを使っています。
0545nobodyさん
2005/07/27(水) 12:44:07ID:v2TCvlCUweb用のディレクトリにphpファイルを置いてブラウザで見ると
ちゃんと表示されることを確認したんですが、
それ以外のローカルフォルダに置いたphpファイルをIEに直接
放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
0546545
2005/07/27(水) 12:45:27ID:???C:\Program Files\Apache Group\Apache2\htdocs
のことです。
0547nobodyさん
2005/07/27(水) 12:48:39ID:???file://だとApache経由しないのでPHP動きません
http://でしか表示できないので無理です
0549545
2005/07/27(水) 13:03:09ID:???拡張子が.phpのファイルをブラウザで表示したら
勝手にphpが起動、というわけにはいかないのですね。
0550nobodyさん
2005/07/27(水) 14:27:54ID:???PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
0552nobodyさん
2005/07/27(水) 16:44:17ID:???0553nobodyさん
2005/07/27(水) 16:50:51ID:???出来るよ
0555nobodyさん
2005/07/27(水) 16:58:49ID:???0557nobodyさん
2005/07/27(水) 17:14:20ID:???ビミョーな答えだね
>555
ヘッダでCSSのMIMEタイプを指定
0558nobodyさん
2005/07/27(水) 17:21:40ID:???0560559
2005/07/27(水) 17:34:03ID:???こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
0561nobodyさん
2005/07/28(木) 01:28:15ID:???ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。
あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
0563nobodyさん
2005/07/28(木) 01:47:32ID:???もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
0564nobodyさん
2005/07/28(木) 02:51:26ID:/rx2yHMTこの関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。
そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。
require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。
Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
0565564
2005/07/28(木) 02:52:09ID:???私がやりたいことはこういうことです。
require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく
各phpファイルに必要なときのみ記述するように分散させたい。
例として、
main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は
そのrequire_onceをmain.phpの中に書く。
dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は
require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。
環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は
極力避けたいため、各require_onceのパスは相対パスにしたい。
main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。
以上を実現したいのですが可能でしょうか?
get_cwd()を使って
require_once get_cwd().'/dir1/a.php';
なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。
require_once getdir(get_realpath(__FILE__)).'/dir1/a.php';
も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか
指定できなかったため、この方法も断念せざるを得ませんでした。
0566nobodyさん
2005/07/28(木) 03:17:47ID:???config-hostspecific.inc
define("PACKAGE_DIR","/path/to/package");
main.php
require_once(PACKAGE_DIR."dir1/x.php");
require_once(PACKAGE_DIR."dir2/.....
javaだってCLASSPATHを設定するんだし、
全自動はトラブルのもとだとおもうよ。
0567nobodyさん
2005/07/28(木) 03:19:00ID:???include_pathを変更するという方法はどう?
-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);
// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);
// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------
このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。
config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
0568nobodyさん
2005/07/28(木) 03:38:52ID:???まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
(そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。
で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
0569nobodyさん
2005/07/28(木) 03:42:12ID:???>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
0571nobodyさん
2005/07/28(木) 10:40:18ID:???無くてもいいの?
0575nobodyさん
2005/07/28(木) 11:02:56ID:???認証方法はどういったものがありますか?
0576nobodyさん
2005/07/28(木) 11:28:27ID:???特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)
>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
0577nobodyさん
2005/07/28(木) 16:09:03ID:???for ($c = 'A'; $c <= 'Z'; $c++) {
print $c.' ';
}
とやったのですが
なぜか
A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ
と676回ループします。
条件式をから=を取って $c < 'Z' としたら
A〜Yまでの25回のループで終わるのですが
これはナゼでしょうか?
バグですか?
PHP 4.3.10
0578nobodyさん
2005/07/28(木) 16:31:26ID:???なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
print chr($c).' ';
//printf('%c ', $c); //こちらの記述でもOK
}
0579nobodyさん
2005/07/28(木) 16:38:32ID:???Cと同じ感覚でやってみたのですが
こうゆう場合はordを使わなければダメなのですね。
ordの関数がどういうものか調べてやってみます。
勉強させていただきました。
0580nobodyさん
2005/07/28(木) 16:44:17ID:???('A')って(´Д`)に見えるな。
0581nobodyさん
2005/07/28(木) 16:45:31ID:iGAmBrlm0582nobodyさん
2005/07/28(木) 17:04:32ID:???http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.
これは知らなかった・・・orz
■ このスレッドは過去ログ倉庫に格納されています