■PHP板 質問専用スレッド■
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGレスは気長に待つのが良い感じかも。
答えられる方、返答よろしくお願いします。
参考リンク
■本家
http://www.php.net/
■Japan PHP Users Group
http://www.php.gr.jp/
■PHP 日本語ページ
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
■PHP日本語マニュアル
http://www.asakawa.ne.jp/doc/php/ja/sjis/
0682名無しさん@お腹いっぱい。
2001/08/24(金) 01:17ID:???PHPはわかんないけど・・・。
Perlで書くとこんな感じじゃ駄目?
$webprog =~ s/\D//gi;
if($webprog and lengh $webprog <= 5){
#数字で一桁以上五桁以下
}else{
#それ以外
}
0683名無しさん@お腹いっぱい。
2001/08/24(金) 01:20ID:???0684E_ERROR
2001/08/24(金) 02:15ID:???$var2=sprintf("%d",$var1);
だと$var1に数字以外の物が有ると$var2には値が出力されません
(4.0.6(Win32)で確認)。
よって判定をこの後にすることが或る意味、無意味になります。
それさえ踏まえれば使えるかな?後は五桁以下である事を判定すれば
良いのですし。
…あまり誉められたコーディングでは無いとは思いますが。
0685電動ナナシ
2001/08/24(金) 02:40ID:???$var = $var + 0;
でいいと思うけど。
ちなみに文字列に 0 を足すと、先頭から順に数字だけが抽出される。
例えば以下のような感じ。PHP^4.0.6 for Win32 で確認。
$var = "x12345"; $var = $var + 0; // $var は 0
$var = "012345"; $var = $var + 0; // $var は 12345
$var = "12345x"; $var = $var + 0; // $var は 12345
$var = "123x45"; $var = $var + 0; // $var は 123
0686E_ERROR
2001/08/24(金) 05:00ID:???成る程、マニュアルに載ってるこれ
http://www.php.net/manual/ja/language.types.string.php
ですよね?勉強になりました。
しかし奥が深いです、PHPマニュアル…。
// でも更新が頻繁なのは嬉しいけど…面倒(苦笑 <=贅沢者
ところで頭の零を削るなら
$var2 = (int) $var;
って方法もありますね。
結果は電動ナナシさんのとかなり似てますが。
$var = "x12345"; $var2 = (int) $var; // $var2 は NULL
$var = "012345"; $var2 = (int) $var; // $var2 は 12345
$var = "12345x"; $var2 = (int) $var; // $var2 は 12345
$var = "123x45"; $var2 = (int) $var; // $var2 は 123
// int への型キャストのデフォは10進であることを利用
// Codeの展開を考えると利用し辛そうですが
0687名無しさん@お腹いっぱい。
2001/08/24(金) 09:42ID:BsoJVBdw正規表現じゃな〜いじゃん♪
0688672
2001/08/24(金) 10:46ID:zxBSBd8Mあの…、よくわからないのですがもう少し詳しくご説明頂けませんか?
お手数ですがよろしくお願いします。
0689名無しさん@お腹いっぱい。
2001/08/24(金) 11:55ID:daCgTec.0690電動ナナシ
2001/08/24(金) 13:14ID:alNuUBUQああ、そっちの方がいいかな。
>>689
<?php
$now = time();
$today = getdate($now);
// ↓ 週の先頭の日付を計算
$firstDayOfThisWeek = $now - $today["wday"] * 86400;
echo "First Date of this week is \"" .
date("Y-M-d (l)", $firstDayOfThisWeek) . "\"<br>\r";
?>
# 一度月間カレンダーを作ってみた方がいいんじゃないかと思うが。
0691名無しさん@お腹いっぱい。
2001/08/24(金) 17:44ID:fC1LCBVoここってハックされちゃったんですか?
中国って遊ぶ所が少なそうだから、PCやネットなんか覚えると
ハマっちゃうんだろうな
0692名無しさん@お腹いっぱい。
2001/08/24(金) 18:17ID:???日本人の仕業じゃないかな。
あそこの管理人はセキュリティ意識が無さすぎた。
0693名無しさん@お腹いっぱい。
01/08/27 10:51ID:zDtQUNGMフォームからの入力で送信した文字列データを単純にプレーンテキストに落としたんですが
2バイト文字は全て文字化けしてしまってる様なんですが…
0694名無しさん@お腹いっぱい。
01/08/28 00:04ID:igLWKZBA簡単な暗号化の方法を教えてもらえないでしょうか?
指定したキーで簡単に複合化できるものないですか?
0695助けてわかんない
01/08/28 01:48ID:0MY67l12超超初心者なんですけど昨日今日総合のカウンタ
が全然わかんないです。誰かサンプルソース書いて下さい。
検索したけど見つからなかったんで。
0696名無しさん@お腹いっぱい。
01/08/28 04:59ID:18vpKowI文字コードを少しずらしてやるとか。
ルールを指定して並べ替えるとか。
0697E_ERROR
01/08/28 05:06ID:.gNJSO/.Mycrypt関数(http://www.php.net/manual/ja/ref.mcrypt.php)
を使うか、
若しくは出来合いの奴を
http://php.resourceindex.com/Functions_and_Classes/
http://www.hotscripts.com/PHP/Scripts_and_Programs/
この辺で探すと良いかも。
>>695 (助けてわかんないさん)
上の後者2つのURIに有るんで参考にしてみると良いですね。
取り合えず、というのでしたら
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/
で簡単な解説あるので良いかも。
0699名無しさん@お腹いっぱい。
01/08/28 07:36ID:JnQA54xw各大学の学生ポータルたん萌え〜
早稲田 ―http://waseda-links.com
ICU ―http://icunavi.com
立教 ―http://ri-style.com
東邦 ―http://www.h2.dion.ne.jp/~jn1
東洋 ―http://toyowave.com
中央 ―http://chuo.pos.to
↑マターリパラダイース(・∀・)イイ!
0700名無しさん@お腹いっぱい。
01/08/29 04:33ID:zqod.sPs0701名無しさん@お腹いっぱい。
01/08/29 12:34ID:Hz0wel/E自前でファイルロックの仕組みを組んで解決していましたが、
PHPのファイルロックの信頼性はどれほどでしょうか。
0702名無しさん@お腹いっぱい。
01/08/29 12:38ID:r10mk.nk何処でそんなデマ聞いた?
0703名無しさん@お腹いっぱい。
01/08/29 12:42ID:Hz0wel/Eいくつかの書籍にそう書いてあるが
0704703
01/08/29 13:09ID:Hz0wel/Eここにもありました。現在は解決されているようです(たぶん)
http://tohoho.wakusei.ne.jp/lng/199807/98070060.htm
0705名無しさん@お腹いっぱい。
01/08/29 16:37ID:9EJfCa2E> mkdir()でロックすると環境を選ばない感じで好きなんです。
人様のスクリプト&考えにケチつけるつもりじゃありませんが、、
flockが使える環境ならぜったいこちらを使うべきだと思いますが・・・
http://www.wakusei.ne.jp/twn/wwwlng.cgi?print+199903/99030145.txt
とほほさん、びーかすさんの発言、参考になります。。
symlink, mkdir, flockはいずれも、ロックを『かける』ことに関して
は完璧。OSがちゃんと排他制御してくれる。
symlinkとmkdirの違いは、mkdirだと、Windowsでも利用できるという
ことくらいしかない。信頼度は同じ。
ただし、symlink, mkdirはロックを『はずす』時に問題があり、ロッ
ク中にプロセスが異常終了したりすると、ロックファイルが残ったま
まになる。
その点、flockはロックを『はずす』時も完璧で、たとえプロセスが異
常終了しても、OSがストールしても、ロックが残ることは有り得ない。
信頼性ではsymlink, mkdirよりもflockの方が高い。ただしflockは、
UNIXでもサポートしていないOSがある。
# PHPだとマヌアル見るかぎりWindowsもサポートしてるみたい、、わからんけど。
> ファイルをロックするというより、処理全体をロックする感じにできますし。
$lock = fopen('lock.txt', 'w') or error('ロックファイルを作成できませんでした。');
flock($lock, 2) or error('ロックできませんでした。');
〜処理〜
fclose($lock);
じゃだめですか?
0706名無しさん@お腹いっぱい。
01/08/29 16:52ID:9WjD.Pdc0707703
01/08/30 09:29ID:/FKRYfJUhttp://php.ssi.bg/manual/ja/function.flock.php
Win環境のことはよくわからんが、ここの「警告」の部分を読むと
IISのISAPI環境下ではflockは使えないようだ。
0708名無しさん@お腹いっぱい。
01/08/30 10:09ID:3TFNK/cI下の User Contributed Notes にはwin98でflockが効かない
っていうメッセージがありますね。
phpは使ったこと無いけど実際どうなんでしょ?
0709703
01/08/30 12:12ID:/FKRYfJUWin98ということはIISか、Apacheだろうな。
707でも書いたけど、抜粋すると
>ほとんどのオーペレーティングシステムで flock()
>はプロセスレベルで実装されています。 ISAPIのよ
>うなマルチスレッド型のサーバーAPIを使用している
>場合、同 じサーバーインスタンスの並列スレッドで
>実行されている他のPHPスク リプトに対してファイル
>を保護する際に flock() を使用することはできません。
IISでもApacheでもISAPI環境下では使えないということだと
思うけど? スクリプトとして使えばOKということか?
Winのことはあんまりなのでスマソ。
個人的にはLinuxで使っているんで関係ないです。
0710名無しさん@お腹いっぱい。
01/08/30 12:19ID:UyczCLUMWin98ならIISじゃねーだろ
0711名無しさん@お腹いっぱい。
01/08/30 12:37ID:Um1Da8Sw0712[
01/08/30 12:58ID:nQguzC6Q0713名無しさん@お腹いっぱい。
01/08/31 14:05ID:OPUkQPbUどうしたらいいでしょうか?
0714名無しさん@お腹いっぱい。
01/08/31 14:43ID:oeZCoe02マニュアルぐらい見ましょう。
http://www.php.net/manual/ja/function.round.php
0715名無しさん@お腹いっぱい。
01/08/31 19:03ID:OPUkQPbU感謝!!
基本を忘れ、ずっと参考書見てました。
0716超ドキュソ
01/09/01 00:10ID:CoQXeBb6超わかんない。
0717名無しさん@お腹いっぱい。
01/09/01 00:17ID:JGsm/JSsのようなレンタル日記のスクリプト配布されてませんか?
0718名無しさん@お腹いっぱい。
01/09/01 00:23ID:yUhB/70g==
!=
>>717
こういうレンタル系のPHPスクリプトは殆ど配布されていません。
自分で作りましょう。
0719名無しさん@お腹いっぱい。
01/09/01 00:29ID:j2NtyKS.0720超ドキュソ
01/09/01 00:29ID:CoQXeBb6あ、== != でヨカタの?
なんか文字列にしたらうまくいかなかったからさ。
0721名無しさん@お腹いっぱい。
01/09/01 00:41ID:tdXlcdvAというか、マンモス本ってマニュアルに書いてあることと何が違うの? マル写しじゃん!
0722名無しさん@お腹いっぱい。
01/09/01 17:55ID:hQ/Rc1cwマル写しではありません。
マニュアルの一部抜粋です。
0723名無しさん@お腹いっぱい。
01/09/01 21:10ID:tdXlcdvAマニュアル>マンモス本
ってことで sage
0724
01/09/04 00:52ID:v.Yb6HDEこのエラーって何ですか?
0725724
01/09/04 03:15ID:v.Yb6HDEflockの記述がおかしかったみたい
0726ほえほえ ◆fxJvLsyA
01/09/04 10:32ID:y0UKZUiw<?php
$failname="log.txt";
if($sousin){
$hozonfail=$failname.".bak";
if(copy($kakikofail,$hozonfail)){
$fp=fopen($failname,"W");
if(flock($fp,2)){
fputs($fp,$naiyou);
flock($fp,3);
}else{
echo "error";
exit;
}
fclose($fp);
}else{
echo "error";
exit;
} }
?>
<html> <head>
<title><?php echo $failname; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form action="<? echo $PHP_SELF; ?>" method="post">
<textarea name="naiyou" rows="30" cols"30">
<? require($failname); ?>
</textarea>
<input type="submit" name"sousin" value="更新">
</form> </body> </html>
これなんですが解りますでしょうか。
カキコして送信するとlog.txtの内容が書き換わると言う奴なんですが。。。
0727名無しさん@お腹いっぱい。
01/09/04 11:20ID:h3PWA/egエラー終了なら
copy($kakikofail,$hozonfail) or die("コピーエラー");
としたほうがよい
0728名無しさん@お腹いっぱい。
01/09/04 11:44ID:eE6ftGCA配列を渡したい場合にはどうしたらいいんでしょう?
参照渡しでどうにかできるのかしら。
0729名無しさん@お腹いっぱい。
01/09/04 11:45ID:NMYjZ6nA0730名無しさん@お腹いっぱい。
01/09/04 11:46ID:sfyz3S5.2.変数の定義
3.fopenの引数
以上3箇所の間違いがあります。
あと、failというのは故意にfileとしてないの?
故意じゃないなら、PHPはエラーが英語で返ってくるので、fileをfailと
間違わない程度に英語を勉強した方が良いでしょう。
わざとfailにしているならスマソ。
fail : 失敗する ・・・・・合ってるのかも(w
0731730
01/09/04 11:48ID:sfyz3S5.0732名無しさん@お腹いっぱい。
01/09/04 14:35ID:eE6ftGCAfunction($hoge[]){
}
で良かったんですね。ウトゥだ...。
0733小
01/09/04 23:53ID:v.Yb6HDErandだけではいけないのですか?
0734電動ナナシ
01/09/05 00:41ID:Dl24b5Kwrand() は、シードと呼ばれるある数字をもとに、計算した結果を返す。
計算内容は最初から決まっているので、シードが分かってしまうと結果と
なる乱数が分かってしまう。これでは都合が悪い場合がありうる。特に
暗号化処理などで乱数を使う場合には非常に都合が悪い。
シードは通常現在時刻とされることが多いので(PHP が何を使っているか
は特に調べていない)、時刻がわかると計算結果がわかってしまう可能性も
高い。そこでシードを自由に定義できるようにしたのがこの srand() 関数。
ということで必要に応じて使うのがよい。ポイントは、rand() の結果が
予測されてまずいことがあるか?である。なおシードの与え方が下手糞だと
かえって予測しやすくなる可能性もあるので注意。
<?php
// seed が一定なら、rand() の結果も一定であることを示す
function seedTest($seed) {
srand($seed);
return rand();
}
for ($i = 0; $i <= 10; $i++) {
srand($i);
$rand[$i] = rand();
}
for ($i = 0; $i < 10000; $i++) {
$x = $i % 10;
$currentRandom = seedTest($x);
$diff[$x] += abs($rand[$x] - $currentRandom);
}
for ($i = 0; $i <= 10; $i++) {
echo "total amount of diffrences is " . $diff[$x] . "<br>\r";
}
?>
結果はすべて 0 になる。つまり seed が一緒なら rand() の結果も一緒。
0735電動ナナシ
01/09/05 00:43ID:Dl24b5Kw0736小
01/09/05 03:01ID:BfAYMTkYsrandの意味理解できました。
なんか2ちゃんなのにそこまで丁寧に教えてくれるとは
思ってもみなかったです。
どうもありがとうございました。
0737名無しさん@XEmacs
01/09/05 10:42ID:/1y1O2Rwクラスと通常の関数で呼び出しのコストに差がありますか?
0738名無しさん@お腹いっぱい。
01/09/05 17:48ID:eOOIHzsk(from phpinfo())
すんません,こんなconfigureしたらcgi版としてインストール去れちゃったんですけど・・・
0739電動ナナシ
01/09/05 17:55ID:Dl24b5Kw'--with-pgsql=/usr/local/pgsql--with-apxs=/usr/local/apache/bin/apxs' が
一つの指示子として理解されているからだろ?
--with-apxs の前にスペースがないだけじゃないのか?。
0740電動ナナシ
01/09/05 18:08ID:Dl24b5Kw自分で実験してみりゃいいじゃん。
例えば同じ処理内容の関数とメソッドを 1000 回呼び出して
それにかかった時間を比較するとかさ。
0741名無しさん@お腹いっぱい。
01/09/05 21:59ID:vJu84N5c書籍やマニュアルを読みましたが分かりませんでした。
0742a'x
01/09/05 22:32ID:ORI0WPw6嘘つくな。マニュアルにしっかりと明記されている。
http://www.php.net/manual/ja/function.urlencode.php
0744名無しさん@お腹いっぱい。
01/09/06 12:02ID:S15PyfDMて既出でしょうか。
http://php.weblogs.com/php_gd
0745素人
01/09/06 13:55ID:tXlMtLNgflockは読み込みだけのときもした方が良いのでしょうか?
読み込みだけならflockしない方が処理が早いとかあるのでしょうか?
0746名無しさん@お腹いっぱい。
01/09/06 14:07ID:TE3IkoNgしましょう。
何か処理をする以上しないよりは当然遅くなりますが、
flock程度なら長時間ロックを開放しない操作とぶつかったりしない限り
人間の脳では「遅い」と体感できません。
0747素人
01/09/06 14:37ID:tXlMtLNgこんな素人な質問にも答えて頂いてありがとうございました。
0748737
01/09/06 14:58ID:zPRXqX4Eおわ, みのがすところだった. 確かに自分でやってみる
事が大切でしたね. すみませぬ. で,
http://www.geocities.co.jp/SiliconValley-Cupertino/6571/ClassAndFuncton.html
こんな感じでヘタレコード書いてやってみました.
FreeBSD 4.4-RC PHP 4.0.4
関数: 0.0011969804763794
クラス: 0.0021640062332153
ってことで確かに2倍近いですね. 普段やたらとクラスを
組んじゃう方なんで, ちょっと改めねば.
0749名無しさん@お腹いっぱい。
01/09/06 15:06ID:cGMUUJcsクラスの計測で new も計測に含まれてるのは不公平だと思った。
0750電動ナナシ
01/09/06 15:12ID:WeJ1j8Ik> class StopWatch { ...
ワラタ。考えることは皆同じだなあ。
ただ echo を使うのはどうだろうか。echo のスループットを測っているのか、
Function/Method の呼出オーバーヘッドを測っているのか分からなくなる
からね。自分は return 0; でやっていた。
あと確かにオーバーヘッドは 2 倍近いが、1 万回呼び出しても 1 秒
足らずで済むということは、それほど気にしなくてよいという風にも
解釈できると思う。もちろんアクセス数次第でもあるが。
ちなみに Instance 生成のコストも加えると(ループのたびにインスタンス
生成すると)関数呼出の 4 倍近い時間がかかる。しかしそれでも 1 万回
やって 1 秒かからないことを意味するので、クラスの利用を控えるべき
という結論にはならないと思う。
0751737
01/09/06 15:35ID:zPRXqX4E>>750
ありがとうございますです.いろいろつっこまれるのを覚悟の上で
晒したんで勉強になります(w
もし宜しかったらもう一点だけ良いですか?
あのソースで MAX 1000, SURPLUS 100 にして
計測を交互に2回おこなうと,
関: 0.010907053947449
ク: 0.065219044685364
関: 0.077257037162781
ク: 0.079015016555786
と,あんまり結果が変わらなくなっちゃうんですけど
やっぱり echo とかの関係なんでしょうかね? いまいち
仕組みが理解しきれてないす.
たしかにコンマ以下の話なんで余り神経質になるのも
どうかと思いますが, 実際数値化しちゃうとどうも
気になっちゃいますね ^^;
0752電動ナナシ
01/09/06 16:29ID:WeJ1j8Ikecho のせいじゃないの?
return 0; のケースと比較してみたら?
0753737
01/09/06 17:11ID:zPRXqX4Eやっぱりそうなんですかね.ループの回数少ないときと
なんとなし振る舞いが違うみたいなんで気になってしまい
ました.
次は echo の振る舞いの勉強にでも逝ってきます.
いろいろありがとうございました.
0754名無しさん@お腹いっぱい。
01/09/07 11:58ID:OaYNu.EEmberegを使用すると
if (mbereg("[^ァ-ヶー―]",$strKatakana)) {
echo "error";
}
でも、環境的にmberegは使用できないもので・・・
if (!ereg("\%XA5[\%XA1-\%XF6]",$strKatakana)) {
echo "error";
}
と表示したのですが、チェックされませんでした。
16進で比較するときは、変数をbin2hexで16進に変えないと
いけないのでしょうか?それとも、正規表現が誤っているのでしょうか?
誰か教えてくれ〜〜ぇぇ!!
0755754
01/09/07 15:25ID:OaYNu.EEecho "error";
}
preg_matchって先頭の文字しか見ないの????
よくわからん・・・まじ誰かおしえてちょ!!!
0756a'x
01/09/07 16:39ID:???echo "error";
}
てしてみ
0757a'x
01/09/07 17:07ID:???> preg_matchって先頭の文字しか見ないの????
そんなことは有りません。
0758754
01/09/07 18:16ID:OaYNu.EEえっ?!
if (!preg_match("/^(?:\xA5[\xA1-\xF6])+$/",$strKatakana)) {
echo "error";
}
でOKだったよ。
何を勘違いしたんだ????
0759a'x
01/09/07 20:48ID:???いや「先頭」じゃなくても含まれていればOKだから、
それを聞きたいのだと勘違いした。
0760名無しさん@お腹いっぱい。
01/09/07 21:18ID:nRQyk2nw82A0 ⇒ あ に変換するやり方がわからないですが
お願いします。
0761名無しさん@お腹いっぱい。
01/09/07 21:30ID:???0762名無しさん@お腹いっぱい。
01/09/07 21:37ID:???俺としたことが、ネタで失敗するとは。
$after = str_replace('82A0','あ',$before);
0763760
01/09/07 22:10ID:nRQyk2nwスイマセン、言葉が足りませんでした。
PHP勉強中で、bin2hexで16進数にしたものを
元に戻すやり方がわからないのですが、教えていただけますか。
0764761,762
01/09/07 22:32ID:???function hex2bin($data) {
$len = strlen($data);
return pack("H" . $len, $data);
}
0765760
01/09/07 22:55ID:???0766ナナシソンケイ
01/09/08 11:39ID:???0767名無しさん@お腹いっぱい。
01/09/08 22:14ID:5y4JfV.o聞いてどうするんですか?
0768名無しさん@お腹いっぱい。
01/09/08 23:23ID:4CVLgBKA0769名無しさん@お腹いっぱい。
01/09/09 00:43ID:DP/tAPD20770名無しさん@お腹いっぱい。
01/09/09 00:50ID:???0771名無しさん@お腹いっぱい。
01/09/09 00:51ID:DP/tAPD20772名無しさん@お腹いっぱい。
01/09/09 02:12ID:jgYLpC4Mで出来ると思うけど、Cで書くんじゃないの?
Zendナンタラもってるの?
0773名無しさん@お腹いっぱい。
01/09/09 09:13ID:YjZ3tK1U0774電動ナナシ
01/09/09 11:34ID:XOY93OXwいくつに見える?
>>768
http://www.zend.com/store/products/zend-encoder.php
>>769
MySQL なら Win32 できちんと動作するが PostgreSQL は Cygwin でなんとか
動き始めたってレベルだからなあ、とりあえず MySQL だろ。
0775電動ナナシ
01/09/09 11:39ID:???補足: PostgreSQL for Win32 が置いてあるところ
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
http://www.s34.co.jp/~luster/pgsql/
0776名無しさん@お腹いっぱい。
01/09/09 12:10ID:???30代前半!
0777ちゅ
01/09/09 15:40ID:APXP5uloOracleを使う予定なんですが、、、
0778ちたん
01/09/09 21:05ID:l1z5H3So0779名無しさん@お腹いっぱい。
01/09/10 09:15ID:???あほか。ribbonに聞けよ。
0780ちたん
01/09/10 14:23ID:NewyOZz.昨日の夜にメールしたよバーロ
0781名無しさん@お腹いっぱい。
01/09/10 14:29ID:???ならちっとは待てや、ヴォケ。
■ このスレッドは過去ログ倉庫に格納されています