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

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

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

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

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 31
 http://pc8.2ch.net/test/read.cgi/php/1161733546/

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0655nobodyさん2006/11/16(木) 13:03:45ID:???
あ、ほんまやw
06566502006/11/16(木) 13:15:24ID:GG+ftSx9
$tempはファイル名です。
まだてこずってます・・・

みなさんありがとうございます
0657nobodyさん2006/11/16(木) 13:19:17ID:???

foreach($allfile as $temp){
$t = filemtime($temp);
$in[$t.$temp] = "$temp -".date("m/d H:i:s",$t);
}
sort($in);

とでもしといたら
06586502006/11/16(木) 13:22:12ID:GG+ftSx9
みなさん、ありがとうございます。

結局usortを使い
function new_sort($xx , $yy){
$xx1 = date("mdHis",filemtime($xx));
$yy2 = date("mdHis",filemtime($yy));
if($xx1 > $yy2){ return -1;}
elseif($xx1 == $yy2){ return 0;}
else{ return 1;}
}

usort($allfile ,"new_sort");
foreachでまわす前に
としてみたのですが、効率わるいですかね?
0659nobodyさん2006/11/16(木) 13:45:14ID:73q/908c
foreach($allfile as $key => $temp){
$arr[$key] = filemtime($temp);
}
$arrを値でソート
foreach($arr as $k => $v){
$arr2[] = $allfile[$key];
}
print_r($arr2);

とか?適当に書いたから間違ってるかも。
0660nobodyさん2006/11/16(木) 13:57:57ID:0z6MBXcS
ここで聞いていいのかな?

現在テキストファイルに出力したテーブルをCOPYコマンドでテーブルに入れるという処理をやっているのですが、
その方法は、VBからOBDCを使用してADODB.ConnectionのExecuteコマンドで
テーブルを更新するという方法です。

コマンドは、
COPY TABLE FROM '/apache/...../test.txt';
です。


この方法でとあるテキストファイルをDBに落とし込もうとしたところ、

ERROR: invalid byte sequence for encoding "UTF8" : 0x95

という文字コードに関するエラーが出て失敗してしまいます。


しかし、psqlから手動でCOPYコマンドを打つと普通にコピーに成功してしまいます。
両方失敗するのなら分かるのですが、何故VBからの処理が失敗するのでしょうか?
何が原因として考えられますか?
ちなみに開発環境はWin2k+PostgreSQL8.1(Windows)+VB6.0SP5です。
0661nobodyさん2006/11/16(木) 14:00:02ID:0z6MBXcS
ごめん、Postgresの質問だこれは。無視してください・・・
0662nobodyさん2006/11/16(木) 14:33:40ID:7s9N5dRH
呼び出されたスクリプト自身のURLを取得する方法ってありますか?
例えば、
https://example.com/index.php/hoge
こんなURLで呼び出された場合に、このURL自身を取得したいんですが。

もしかして、こいつら↓使って自分で組み立てるしかない?
$_SERVER['HTTPS']
$_SERVER["HTTP_HOST"]
$_SERVER["REQUEST_URI"]
エクセレントな方法ってある?
0663nobodyさん2006/11/16(木) 14:49:18ID:???
>>658
echo `ls -tr`;

>>662
http://jp2.php.net/manual/ja/reserved.variables.php
それだと要求されたURLで、呼び出されたスクリプトのURLじゃないね
0664nobodyさん2006/11/16(木) 14:53:57ID:???
降順だった
`ls -t`
どうでもいいけど
06656622006/11/16(木) 15:06:02ID:???
>663
あ、ブラウザのURLに表示されてるのと同じものを取得したいのです。
こんな感じでいいのかな。
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER["REQUEST_URI"]}";
他に良い方法ないですか?

一度別ページに飛ばして
$_SERVER["HTTP_REFERER"]
だと値なんてあてにならないし。
0666nobodyさん2006/11/16(木) 15:30:42ID:???
>>665
多分それしか無いと思う。
他に手があるなら俺も知りたい。
06676602006/11/16(木) 15:57:58ID:???
誤爆スレで返答するのもなんですが、解決しました。
COPYコマンド自体止めて、テキストファイル直読みしてINSERT文にしたら
あっさりコマンド通りました。

何故にCOPYコマンドでは駄目なんだ?よく分からん・・・。
0668nobodyさん2006/11/16(木) 16:01:51ID:???
馬鹿はサイレンで泣くしエラーメッセージは見なかったことにする
0669nobodyさん2006/11/16(木) 16:15:48ID:???
日付とFilterで5.2とはマイナーバージョンの水増しではないか。
0670nobodyさん2006/11/16(木) 16:22:44ID:???
>>669
日付関数はバージョンで処理分けないと互換性保てないとか何とか。
というか水増しって何?
0671nobodyさん2006/11/16(木) 16:37:58ID:???
フィルタはまだexperimentalだったと思うが・・・
0672nobodyさん2006/11/16(木) 16:50:26ID:OjN5tFoy
FC6でファイルのアップロードが設定上10ギガはアップロードできるはずなのにできないんですがなぜでしょうか

ポストファイルサイズ
アップロードファイルサイズとか実行時間も十分にしたのですが・・・・
スワップ領域以上はできないんですか?
1ギガなんですがそれより上ができません
perlならできるんですがアップロード速度がだいぶ違うので
0673nobodyさん2006/11/16(木) 17:17:13ID:???
>>672
/tmpのサイズとかは?
0674nobodyさん2006/11/16(木) 17:23:21ID:???
PHPのアップロードってメモリに読み込まないんだっけ?
0675nobodyさん2006/11/16(木) 17:43:22ID:???
ログにSwap不足って出たのかね。考えにくいが
0676nobodyさん2006/11/16(木) 22:18:24ID:???
できなかったら、エラーが出るだろ?
それになんて出たんよ。
0677nobodyさん2006/11/17(金) 00:49:47ID:RSjPLNDu
多次元配列をキーでソートする方法について質問させてください。

$hairetu['A'][1] $hairetu['A'][5] $hairetu['A'][7] $hairetu['A'][9]
$hairetu['B'][3] $hairetu['B'][4] $hairetu['A'][6] $hairetu['A'][12]

このような多次元配列(キーは一つ目が文字列で、二つ目が数字)が仮にあったとして、
数字が入ったキー「だけ」に注目してソートして、若いキーから順にn個を取得したいです。
この例で言うと、数値キーで昇順ソートして3つだけ取り出す場合、
$hairetu['A'][1]、$hairetu['B'][3]、$hairetu['B'][4]・・・の要素を取得したいです。

このようなことをやるにはどういう手法を使ったら良いのでしょうか?
0678nobodyさん2006/11/17(金) 01:05:48ID:???
>>677
$hairetu['A'][1] = 'A1';
$hairetu['A'][5] = 'A5';
$hairetu['A'][7] = 'A7';
$hairetu['A'][9] = 'A9';
$hairetu['B'][3] = 'B3';
$hairetu['B'][4] = 'B4';
$hairetu['A'][6] = 'A6';
$hairetu['A'][12]= 'A12';

$list = array();
foreach($hairetu as $dat) {
foreach($dat as $k => $v) {
$list[$k] = $v;
}
}
ksort($list);
$list = array_slice($list, 0, 3);

var_dump($list);
とか
0679nobodyさん2006/11/17(金) 01:16:03ID:???
>>677
アルゴリズムに適したデータ構造を持たせることもまた重要な設計だと思う。
0680nobodyさん2006/11/17(金) 01:52:49ID:???
Vine3.2 PHP5 で
http://www.php.net/manual/ja/features.file-upload.php
の 例38-1,例38-2を試したところ、極めて小さいファイルはアップ出来るのですが、
1196byte以上のファイルだとタイムアウトを起こすのか、まともに動きません。
(FireFoxだと「接続がリセットされました」が出ます。)
メモリは free -mt で見た範囲で200MB以上空いています。

最終的には120MB程度のファイルがアップ出来るような仕組みを作りたいのですが
1MB程度で躓いてしまっています。(´・ω・`)ショボーン

「陥りやすい落とし穴」に書いてある
memory_limitには150M post_max_sizeには128M upload_max_filesizeには120Mを
設定し、phpinfo()でちゃんと適用されているか確認しました。

他に何か確認すべき所はあるでしょうか?
0681nobodyさん2006/11/17(金) 02:00:14ID:???
> タイムアウトを起こすのか

30秒で停止する設定になってるとか?
0682nobodyさん2006/11/17(金) 02:11:12ID:???
>>680
エラーコードは何になってるの?
06836802006/11/17(金) 02:29:47ID:gKQvCF/I

>681
30秒というと、どこの設定の事でしょうか?

>682
ブラウザ上では
FireFoxだと>680に書いたとおりブラウザが出すエラー画面で「接続がリセットされました」
IE6だと「ページを表示できません。」「サーバーが見つからないか、DNS エラーです。」
が出ます。

Apacheのエラーログには関係ありそうなエラーは見当たりません。
0684nobodyさん2006/11/17(金) 02:31:35ID:???
>>683
いや、アップロード処理のとこでPHPでエラーがチェックできるでしょう。
['error']に入ってる値。
0685nobodyさん2006/11/17(金) 02:35:28ID:???
>>683
ttp://www.php.net/manual/ja/ref.info.php#ini.max-execution-time
06866802006/11/17(金) 02:41:12ID:???
>684
動きを見ていると、
OKの時
例38-1からPOST → Apache PHP → 例38-2で処理&結果表示
NGの時
例38-1からPOST → Apache? PHP? → 行方不明・無反応 → ブラウザがエラー表示
になっているようです。

ソースの中でなおした部分は、
例38-1の__URL__を例38-2を保存したphpのファイル名に変更
例38-1を<html><head></head><body>〜</body></html>の〜部分に記述
例38-2の$uploaddir =を実態にあったパスに変更
です。
0687nobodyさん2006/11/17(金) 02:41:34ID:???
PHPのエラーをApacheに吐いてるの?
デバグには向かないよ
0688nobodyさん2006/11/17(金) 02:48:07ID:???
>>678
foreach($hairetu as $dat) {
・・・
}

この外側のforeachって意味あるか? 不要じゃネ??
06896802006/11/17(金) 02:51:44ID:???
>685
max_execution_timeを120に、 max_input_timeを120にしてもダメでした。

>687
実はPerlベースでデータをアップする仕組みを実装してあるんですが、
段々データ容量が増えて来たせいでエラーに遭遇する事が多くなったんです。
そこで、色々調べたところ、
http://xxx.upken.jp/report/foradmin/

>Perl CGIは受信サイズの3倍強の空きメモリを使用します。
- 略 -
>なお、PHPの場合は、ファイルの1.1倍程度ですのでPerlよりも効率が良いのですが、仕様上2GB以上のファイルを受信できません。

という記述を見つけ、急遽PHPを学びがてら実装しているところなので、
デバグ向きの環境がどういうものなのかとか、PHPがどんなものなのかとか
まだよくわかっていない状態なのです。

0690nobodyさん2006/11/17(金) 03:07:20ID:???
>>686
処理の頭に
echo "error=".$_FILES['userfile']['error']."\n";
flush();
ob_flush();
って入れて画面上にerror=○って出てくるか確認。
途中で強制終了されてると>>683みたいなエラーになる。
0691nobodyさん2006/11/17(金) 03:08:00ID:???
>>688
じゃあお前の実装を見せてみろよ。
06926802006/11/17(金) 03:17:48ID:???
>>690
やってみましたが、同じ現象です。
ソースを載せます。
-------
<?php
echo "error=".$_FILES['userfile']['error']."\n";
flush();
ob_flush();
$uploaddir = '/home/foo/data/upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>
-------
Apacheの設定が悪いのでしょうか・・・orz
0693nobodyさん2006/11/17(金) 03:21:23ID:???
>>692
プログラム先頭でflushしても何も出力できないんなら
リクエスト時点でApacheがタイムアウト起こしてる可能性は高いな。
httpd.confまたは.htaccessのTimeout設定をいじってみては?
0694nobodyさん2006/11/17(金) 03:25:24ID:???
けどローカルで100MB程度そんな時間かかんないよね
Apacehからなら408が返るだろうし
0695nobodyさん2006/11/17(金) 03:29:26ID:???
>>692
プログラムを
<?php
echo "error=".$_FILES['userfile']['error']."\n";
?>
だけにしたらどうなるの?やっぱ接続リセット?
0696nobodyさん2006/11/17(金) 03:30:22ID:???
>>694
100MBどころか1MBじゃなかったっけ?
0697nobodyさん2006/11/17(金) 03:35:24ID:???
1kbyteだった
レスポンスコードはどうなのかしら
06986802006/11/17(金) 03:37:33ID:???
>693
httpd.confのTimeoutは300だったので、1000にしてみましたがやはりダメでした。
>694
実はリモートで両方ともBフレ経由のインターネット環境です。
今引っかかってるのは1MB強のラインでテストデータは
「test」を羅列したテキストです。
(横に168文字縦に7行まではOKなんですが8行になるとダメです。)
>695
試してみます。
06996802006/11/17(金) 03:38:35ID:???
>698
書き間違い。1MBじゃなくて1KBです。
07006802006/11/17(金) 04:00:28ID:???
すみませんorz
マジですみません。m(_ _)m
自宅のLAN環境が原因でした。

この前までNEC製のADSLルータ(Web Caster 610M)+コレガの無線ルータで有線LANと無線LANを隔離して
無線経由でインターネットは見れるけどNASやプリンタはいじれないように設定していたのを、
Bフレに変えた時にADSLルータ(NEC製)をOKI製の光電話ルータ(RT-200KI)に変えられたせいで、
無線LAN環境からFTPでファイルをアップ出来ない等の不具合が出てたんでしたorz

普段HTTPでは特に問題は発生しなかったんでFTP固有の問題だと思っていたんですが・・・。
有線LANに繋いで見たら、とりあえずテスト用のテキストファイルも56KBのバイナリもアップ出来ました。

やっぱ116にTELしてNEC製のルータ(RT-200NE)に変えてもらおうかな・・・。
0701nobodyさん2006/11/17(金) 08:14:15ID:???
どこ製だとかいうのは別に関係ないと思うよ
0702nobodyさん2006/11/17(金) 08:33:50ID:???
[Fri Nov 17 08:15:22 2006] [error] [client 192.168.1.2] PHP Warning: POST Content-Length of 2051799559 bytes exceeds the limit of 1776287744 bytes in Unknown on line 0, referer: http://*******/
これってなんですかね・・・・?設定は9997MまでOKなんですが・・・こんな数字に設定してないし
0703nobodyさん2006/11/17(金) 08:58:15ID:???
リミットが1776287744bなのに2051799559bをPOSTしたってこと
0704nobodyさん2006/11/17(金) 10:27:17ID:???
負荷の高い処理をかける際に非同期処理をかけようと思うのですが、どういった手段が適切
でしょうか? JAVASCRIPTを使うかコマンドライン命令をshellで投げるか程度しか思いつかなかった
のですが、前者はユーザ環境次第、後者はサーバー環境次第で使えないのであまり気に
いりません。
0705nobodyさん2006/11/17(金) 11:14:50ID:???
>>704
PHP板なんだからPHPで非同期処理するしかないだろう?w
0706nobodyさん2006/11/17(金) 11:20:37ID:???
>>JAVASCRIPTを使うかコマンドライン命令をshell

この時点で考えていることがおかしいと思う
0707nobodyさん2006/11/17(金) 11:51:42ID:???
>>702
PHP自体の限界値
07086802006/11/17(金) 12:16:19ID:???
>>701
�dクス。 ADSL→BフレでMTU値が変わったのが原因みたいです。ハズカシorz
スレ違いスマソ。
0709nobodyさん2006/11/17(金) 12:28:15ID:Kg6mrgCw
質問なんですが、
ログファイルに書き込むときのデータごとの区切り文字と、
データ中に同じ文字があった場合のときってどうしたらいいんでしょうか?
例えば 区切り文字が","(コンマ)の場合で、
データが aiueo,kakikukeko といった場合は
データの中の","で、aiueoとkakikukekoとに分かれてしまうんです。
0710nobodyさん2006/11/17(金) 12:37:46ID:???
データをダブルクォーテーションでくくりゃいい。
0711nobodyさん2006/11/17(金) 12:39:34ID:???
>>709
データにありえない文字を区切りに使えばいいのでは。
区切りにはTAB文字とかのコントロールコードを使って、データからはきちんと除去しとくとかね。
HTMLタグをhtmlspecialcharsかけた上で<>を区切りに使う人も(古いCGIからの人とかに)多い。
データをXMLで記録する、という手もある。
いっそRDBMS使ってもいいと思う。というか推奨。

カンマ区切りデータでの一般的エスケープ方法(Excel方式)ってのもあるにはあるけど
データの生成とパースが無駄に遅くなるだけだから、
CSVファイルで外部とやり取りしたいわけでなければ
内部データでCSVを使うのはナンセンスだと思う。
0712nobodyさん2006/11/17(金) 12:48:55ID:wH2IZbEg
http://jp.php.net/manual/ja/function.fputcsv.php
http://jp.php.net/fgetcsv

これ楽じゃね?
0713nobodyさん2006/11/17(金) 12:51:41ID:???
データに日本語SJIS使うとこけるけどね。
07147092006/11/17(金) 12:57:29ID:Kg6mrgCw
返信ありがとうございます。
どのサーバでも動作するシステムを作りたいと思っているので、
データベースを使うと、設定とかでめんどくさくなってしまうのではないかと思うのです。
CSVにこだわりがあるわけではないので、いくつか教えていただいた方法で試していってみたいと思います。
0715nobodyさん2006/11/17(金) 13:54:39ID:iYTLwrM4
,→&#44;
に変換する(&は半角)
0716nobodyさん2006/11/17(金) 14:10:25ID:???
>>714
DBの初期設定項目なんて3.4個でしょ。
面倒ということはないはずだが・・・
0717nobodyさん2006/11/17(金) 14:32:36ID:P7ghOTn+
>>703
>>707
リミットがそこでないはずなので悩んだのですが
phpの限界ですか?
ちゃんと設定読んでくれるCMSで見たのにー
0718nobodyさん2006/11/17(金) 14:38:49ID:???
9997MB * スレッド数だぞ、死ぬだろ常識的に考えて・・・
0719nobodyさん2006/11/17(金) 15:32:19ID:/mn+LtBq
もっとメモリ積め
0720nobodyさん2006/11/17(金) 15:50:16ID:???
>>718
別に全プロセスが最大メモリをいきなり使うわけじゃないから
そうそう死なないけどな。
0721nobodyさん2006/11/17(金) 16:06:37ID:???
メモリ制限使ってない奴多いの?
0722nobodyさん2006/11/17(金) 16:22:43ID:P7ghOTn+
>>718
スワップしないでそのまま書けばまあ動くかなぁーと思ってました

ちなみにスワップはいつもmaxだよ。
0723nobodyさん2006/11/17(金) 16:59:46ID:xFjRjRSM
DBに接続して認証を行うシステムをPHPとMySQLで作っています。
これで何とか動くには動くのですがセキュリティ的に何か問題があるでしょうか?
またもっと簡単にコードが書けるのなら教えてほしいです。
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" accept-charset="EUC-JP">
id<input type="text" name="id" value="<?php echo htmlspecialchars($_POST['id']);?>"><br>
<font size="2">パスワード<input type="password" name="pass" value=""><br></font>
<input type="submit" name="foo" value="送信">
</form>
<?php
include "/virtual/nyahi/db_connect.php";//DBに接続
if($_POST['id']){
$post_id= $_POST['id'];
$post_pass= $_POST['pass'];
if(ereg("'",$hoge) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");
}
if(ereg("'",$_pass) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");}
$sql = "SELECT *";
$sql.= "FROM user ";
$sql.= "WHERE id='$post_id' and pass='$post_pass'";
$rs = mysql_query($sql,$conn);
if($rs == FALSE){
die ("エラーですよ");}
while($rec = mysql_fetch_array($rs,MYSQL_ASSOC) ){
$ok = 1;//whileループに入ったことで取得を確認
$id = $rec['id'];
$pass = $rec['pass'];}
if(!isset($ok) ){
echo "IDまたはログインパスワードが誤っています。ご確認のうえ、再度ご入力ください。";
}else{echo "ようこそ${id}さん。";}}
?>
0724nobodyさん2006/11/17(金) 17:13:44ID:???
>>723
> include "/virtual/nyahi/db_connect.php";//DBに接続
DBへの接続は入力値があった場合だけでいいのでは。

> if(ereg("'",$hoge) ){//シングルクオーテーションはDBに接続させない
> die("'←これは嫌い。");
> }
普通、mysql_escape_string等でエスケープした上でそのままSQL文に渡すとこだと思う。
まぁ、IDとパスでそんな文字はありえない、ってことならいきなり終了でもいいけど。
あと変数名の間違いについてはスルーでいいんだよね?

> while($rec = mysql_fetch_array($rs,MYSQL_ASSOC) ){
> $ok = 1;//whileループに入ったことで取得を確認
1回しか取得する必要がないものをあえてwhileで回す必要はないんでは。
if($rec = mysql〜) でいいんじゃないの?
まぁ、大して変わんないけど。

> if(!isset($ok) ){
issetじゃなくif($ok)で真か偽か見るようにして、最初に$okは$ok=0;で初期化するようにした方がいい。
register_globalsがOFFだから汚染されるはずがない、という思い込みはミスしたときが危険。
つか、fetchをwhileでなくifにしちゃえば、こんなフラグ判定は要らないと思うけど。
0725nobodyさん2006/11/17(金) 17:20:45ID:???
でかい配列のエイリアスを作ってカウントすると
カウントが遅いんですがなぜですか?

$a = array_fill(0, 100000, 0);
$b = & $a;
count($a);
0726nobodyさん2006/11/17(金) 17:28:00ID:???
>>723
eregよりstrposの方が数倍早いよ。
if (strpos($hoge, "/") !== FALSE) { echo "$hogeに/が含まれる"; }

>>725
でかいからでは?
0727nobodyさん2006/11/17(金) 17:31:37ID:???
それが$b = & $aを$b = $aに変えると遅くないんですよ。
でもエイリアスじゃなくするとreset($a)が遅くなるし・・。なんで?
0728nobodyさん2006/11/17(金) 17:33:48ID:???
便乗質問だけどeregって使い道が全くわからんだけど。
1バイト文字列の正規表現ならpreg系でいいし、正規表現使わないならstrposでいいし、マルチバイトならmb_ereg使うよね?
違うのかな?
0729nobodyさん2006/11/17(金) 17:39:50ID:???
>>728
その認識でほとんど問題ないよ。
Perl系正規表現を使うのに抵抗が無いならそれ使うのがいい。
ただ、ereg系ってのは伝統的な正規表現なので、
昔からのUNIX使いにはそっちの方が馴染みがある人も少なくない。
pregはあくまでPerlで勝手に拡張した方言なので。
慣れた方法を使えるよう複数のI/Fを提供するのがPHP流だよね。
それにpregとmb_eregを混在して使うと正規表現の記法がバラバラで
混乱を招きやすいって問題も出るね。
0730nobodyさん2006/11/17(金) 17:42:03ID:???
>>725
どの辺がどう影響してるのかはPHPのソース読まないとちと即答しかねるが、
PHPのリファレンス機能は基本的に劇遅です。
0731nobodyさん2006/11/17(金) 17:54:11ID:???
>>725
countは値渡しでresetは参照渡しだから

>>728
pregはNFAでeregはDFA
07327232006/11/17(金) 18:00:48ID:xFjRjRSM
>>724
>>726
ありがとうございます。
早速改善してきます。
0733nobodyさん2006/11/17(金) 18:27:40ID:???
mysqlとphpでブックマークプログラムを
作ろうと思うんですが、
ディレクトリ情報ってどんな感じでデータベースに格納すれば
いいでしょうか?
固定ならかんがえやすいのですが、あとから
特定のリンクを別ディレクトリへ、と考えると
何かよい定義方法があるとおもうのですが。
0734nobodyさん2006/11/17(金) 18:29:53ID:???
>>725
やや抽象的な書き方になるけど、一般的に

$a = 大きな文字列or配列;
$b = & $a; // $a、$b、共に「自分のエイリアスが1つ以上存在する」というフラグみたいなのが立つ。

$x = $a; // エイリアスさえなければ働くはずの参照カウントが働かなくなり、コピーし始める。
$x = $b; // この場合も同様にコピーし始める。

って感じで、別の変数($x)への代入が遅くなる。
count($a);という呼び出し前には「$countの引数 = $a;」という内部動作が加わるから遅くなるんじゃないかな。

余談だけど、この応用で、
function hogehoge(& $b) {
という関数があると、この関数内での$hensuu = $b;は全て、&なしの場合より遅くなる。
0735nobodyさん2006/11/17(金) 18:45:17ID:???
}// ,=ミ、ヽ    `ー、_;:;:;:;:;:;:;:;:;:;:;:;:;ヽ
/ /,.- 、 ヽヽヽ      `゙''‐、;:;:;:;:;:;:;:;:|
  _rー、ヽヽ     ー 、_    ブ;:;:;:;:;:} 
  ミヽ● ! | |    `ー‐ 、ヽ、 /;:;:;:;:;:;/
   `ー' V  , -──一ミ、 l/:;:;:;:;:/
 ___   /  r'´,二二`ヽ | |/;:;:;:;:;/
,',',',' (    /  〈 ● 〉l l/ /;:;:;∠
,','il',',',ヽ   ヽ  ヽ二    /'´ ノ
,','ヾ、',','`ー'ー^!      / _r-'´
, ' , ' `ヽ、__, ' !、    //
' , ' , ' `ー, ' , '! `ー'/ ̄   
ヽ、, ' , ' , ' , ', -' ,'/   
  ` ̄ ̄フT ´
-----一'´ |
::::::::::::::::::::::::/
::::::::::::::::::::::/ 
07367232006/11/17(金) 19:34:07ID:xFjRjRSM
ご指摘のあったところを改良してきました。
2chに張るとソースが見にくいのでほかのところにうpしました。
http://onegaisiamsu.ojaru.jp/php.txt
それとDBのパスワードの認証はcrypt関数で暗号化したほうが良いのでしょうか?
まだ何かあったらよろしくお願いします。
0737nobodyさん2006/11/17(金) 21:07:29ID:???
>>725
とりあえず$b使い終わったらcountなりresetする前にunset($b)しとけ

>>734
このへんが参考になると思われ
>References Explained (by Derick Rethans)
>http://derickrethans.nl/php_references_article.php
0738nobodyさん2006/11/17(金) 23:52:52ID:???
>>736
2行目の
if($_POST['subcheck']){
を
if(isset($_POST['subcheck'])){
に書き直すのがよろしいかと。
07392ちゃん工作員2006/11/18(土) 00:22:40ID:???
質問町あげ
0740nobodyさん2006/11/18(土) 02:55:41ID:???
真に下らない質問で申し訳ないのですが、なぜトップがこれなのでしょう・・・
ttp://www.google.co.jp/search?hl=ja&q=php+%E3%82%AF%E3%83%A9%E3%82%B9&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0741nobodyさん2006/11/18(土) 03:10:04ID:+NG79cWW
指定したURLの画像を、phpの変数に読ませたいのですが、
どのようにしたらいいでしょうか?
0742nobodyさん2006/11/18(土) 03:16:19ID:???
ファイル出力するときfopenしたまんまDB接続とかしても大丈夫なんですかね?
0743nobodyさん2006/11/18(土) 03:25:49ID:???
>>741
$image = file_get_contents("http://server/image.jpg";);
でいけねー?
0744nobodyさん2006/11/18(土) 03:27:38ID:???
>>742
何の関係もない。くだらん心配すんな。
0745nobodyさん2006/11/18(土) 03:33:42ID:???
無料でメール送信を利用した
アクティベーションサービスを利用できる
ASPサービスってないですか?

自分のメアドを登録すると、そこにメールが
送られてきて、メールを開くとURLが書いてあって、
それをクリックすると、
「登録が完了しました」
って出る、例のアレのことです。

そこのアクティベーションの部分だけお借りしたいのです。無料で。
0746nobodyさん2006/11/18(土) 03:36:04ID:???
>>743
いけました。こんな簡単にできるとは…。
ありがとうございました。
0747nobodyさん2006/11/18(土) 03:39:11ID:???
>>744
どもども
0748nobodyさん2006/11/18(土) 03:39:41ID:???
>>745
残念ながらここは自分でプログラムする人用の質問スレなんだ。
0749nobodyさん2006/11/18(土) 05:25:27ID:???
ファイル作成時文字エンコードを指定するにはどうすればいいんでしょうか?
0750nobodyさん2006/11/18(土) 05:37:33ID:???
そんな指定はできない
0751nobodyさん2006/11/18(土) 05:42:33ID:???
あ、マジですか
変な質問してすいませんでした
0752nobodyさん2006/11/18(土) 10:28:28ID:Ta87IDDV
session.auto_startをOnにしようとしています。
レンタルサーバーなのでphp.inはいじれません。
そこで.htaccessを使って何とかしようとしているのですがうまくいきません。
php_flag session.auto_start On
php_value session.auto_start 1

検索したところこれらを書けばいいとのことでしたが変化ありません(phpinfo()で確認)。
よろしくお願いします。
0753nobodyさん2006/11/18(土) 10:31:56ID:???
>>752
そもそも.htaccessが使える鯖なんですか?
0754nobodyさん2006/11/18(土) 10:34:13ID:Ta87IDDV
>>753
.htaccsessは使えます。
0755nobodyさん2006/11/18(土) 10:37:16ID:???
$ vi abc.php
require'/rl.php';

$vi rl.php
echo 1;

とした場合にrl.phpがhttp://localhost/abc.php で呼び出されたのかhttp://localhost/rl.phpで
呼び出されたのか調べる方法はないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています