トップページ⇒php
986コメント361KB

【PHP】質問スレッドpart27【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/03/03 22:41:23ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
0756nobodyさん2005/04/15(金) 17:08:58ID:???
>>755
文字列の位置ならstrpos( )
07577552005/04/15(金) 17:14:31ID:???
すまん、詳しく書く

モバイルで現在の北緯と東経を求める関数教えてくれ
0758nobodyさん2005/04/15(金) 17:16:16ID:???
>>757
>>690-691
07597552005/04/15(金) 17:32:49ID:???
何から勉強していいかわかんね(´A`)
0760nobodyさん2005/04/15(金) 17:33:21ID:???
>>757
fsockopen( )で位置情報を送ってくれるサーバに接続。もちろんただでは接続させてもらえない。
ゼンリンから電子地図と地図データベース買えば位置を地図で表示できるかもしれない。
0761nobodyさん2005/04/15(金) 18:49:40ID:???
>>757
すなおにGPSでも買えよ。
PHPの関数は魔法の呪文じゃないぞ
0762nobodyさん2005/04/15(金) 21:25:30ID:???
>>757
findwhereyouare()
0763nobodyさん2005/04/15(金) 22:12:19ID:???
>>755

もまえ某webゲームの管理人にメールしたろ。
07647552005/04/15(金) 22:37:46ID:???
>>763
ご本人様ですか?(・∀・)
0765nobodyさん2005/04/16(土) 00:06:16ID:???
(゚Д゚;)≡(;゚Д゚)なんだなんだこの展開は!
こいつは見逃せないぜ…(゚Д゚)ゴクリ
0766nobodyさん2005/04/16(土) 00:33:02ID:???
もまえらやたらと親切でつね
>>4なのに
07677632005/04/16(土) 18:54:38ID:???
>>755

本人ですがなにか?
phpには位置情報を処理する関数ないよ。
自力実装汁。
07687552005/04/16(土) 21:54:57ID:???
>>767
まじすかΣ(゚∀゚;)
あれはPHP制御じゃなかったのか・・・orz
0769nobodyさん2005/04/16(土) 22:53:03ID:???
なにこの空気
0770nobodyさん2005/04/16(土) 22:59:10ID:???
test.png という PNG ファイルがあり、ファイルサイズは 107KB です。
で、ImageCreateFromPNG("test.png") を実行すると、以下のエラーが発生します。
Allowed memory size of 8388608 bytes exhausted (tried to allocate 256 bytes)

php.ini の memory_limit は初期値の 8M です。
これを 16M に変更するとエラーが発生しなくなるので、メモリが足りないのは
間違いないんでしょうけど…。
107KB 程度の PNG ファイルでなぜに 16MB も必要?

環境は、Solaris10 + PHP5.0.4(ビルトインGD)
0771nobodyさん2005/04/16(土) 23:00:54ID:???
PNGだから
0772nobodyさん2005/04/16(土) 23:23:04ID:???
>>770
この板の看板を300%拡大してpng8に変換すると大体100kBになった。
これをさらにbmp8に変換すると、、、427MBになった。。。
画素をメモリ上に展開してゴニャゴニャすると考えると8MBくらい可愛いものかと。
0773nobodyさん2005/04/16(土) 23:57:24ID:???
>>771 >>772 レスありがとさんです。
元のファイルを読み込んで PHP が何かしらの形式に変換して
保持するから、元のファイルサイズ = 必要なメモリサイズではない、
という理解でいいんですね。
memory_limit を変更することにしますです。
んで、調べたら memory_limit は ini_set で変更できるんですね。
知らんかった。
共用サーバーで、無茶苦茶な値を設定されると怖いような。
0774nobodyさん2005/04/17(日) 00:35:54ID:???
>>773
何でPHP_INI_ALLなのか俺も理解できない。
自分のとこはPHP_INI_SYSTEMに変更してるけど。
0775nobodyさん2005/04/17(日) 03:42:37ID:???
以下の様にして繰り返し処理の中で乱数を使っているのですが、
9割方同じ値が出てきて乱数として使えません。
何が悪いのでしょうか?
make_seed()はPHPの乱数についてぐぐって出てきたページに書いてあったものを流用しました。

function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
while($i < 100){
mt_srand($i*make_seed()+3);
$A = mt_rand(0,1800000).mt_rand(0,6000000);
mt_srand($i*make_seed()+4);
$B = mt_rand(0,1800000).mt_rand(0,6000000);
$i++;
}
0776nobodyさん2005/04/17(日) 05:16:51ID:???
>>775
mt_srand() の引数が大きすぎる。「$i*」を消しなされ
mt_srand(make_seed()); で良い。
0777nobodyさん2005/04/17(日) 09:17:07ID:???
テスト用だからかも知れんけど、ループにmt_srand()を含めるのはどうかと
0778nobodyさん2005/04/17(日) 09:53:06ID:???
>>775
mt_srand((double)microtime()*123456);
$A = mt_rand(0,1800000).mt_rand(0,6000000);
$B = mt_rand(0,1800000).mt_rand(0,6000000);
とでもしとけば
0779nobodyさん2005/04/17(日) 14:30:56ID:???
srandはランダムの"初期化"なんだから最初の一度だけでいい。
0780nobodyさん2005/04/17(日) 20:51:04ID:???
こんばんわ
日記中のurlに自動リンクを貼ろうと思ったんですが正規表現が苦手なんで、
あれこれ検索して見つけたのがこれなんですが

$url = ereg_replace("([^[:punct:]]+)(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"\\1<a href=\"\\2\\3\" target=\"_blank\">\\2\\3</a>", $text);

これだと例えば
http://hoge.jp/img/hoge[1].jpg

みたいなアドレスだとurl中の[ ]以降が無視されてしまいますよね。
その辺りを改善するとどのようなコードになるんでしょうか。
どなたかよろしくおねがいします。
0781nobodyさん2005/04/17(日) 21:33:23ID:???
>>780
三つ目の括弧の中の文字クラスの指定の中に¥[¥]を追加しなさい。
0782nobodyさん2005/04/17(日) 21:56:29ID:???
>>781
ああ、それ実はやってみたんですよ。
間違ってるかも知れないですけどこんな感じ

$url= ereg_replace("([^[:punct:]]+)(https?|ftp)(://[[:alnum:]\[\]\+\$\;\?\.%,!#~*/:@&=_-]+)",
"\\1<a href=\"\\2\\3\" target=\"_blank\">\\2\\3</a>", $text);

でもこうすると完全に最初から最後までマッチしなくなってしまったんです。
\[\] だと文字クラスとして囲んでると判断されるのかなあと思って
\]\[ とかにもしてみたんですけど駄目で…。
0783nobodyさん2005/04/17(日) 21:58:19ID:???
それはもうやってみたんですよ、か…
0784nobodyさん2005/04/17(日) 22:15:30ID:???
教えて君の典型例は初めて見た。
0785nobodyさん2005/04/17(日) 23:21:10ID:???
>>782
regexの[ゴニャゴニャ] を使う時のお約束として、] というキャラクタを使うには 一番最初に置かなければいけない。
[ の方は置く場所の縛りは無い。
これまたお約束により \[ \] のようにエスケープする必要もない。
苦手とか言ってないで使う道具のことぐらい勉強しなさい
0786nobodyさん2005/04/17(日) 23:33:55ID:???
>>785
できました!
ありがとうございます
0787nobodyさん2005/04/18(月) 02:25:22ID:Wa22FSpF
変数に何か文字列が入っていて、その文字列の中に「あ」という文字が入ってたらif文に入る

・・・というようなワイルドカードを用いた判定をさせたいのですが、出来るんでしょうか?
if(変=='%あ%'){処理} みたいな書き方では動かなかったんですがー。
0788nobodyさん2005/04/18(月) 03:05:59ID:???
詳しいマニュアルがあるんだから
ちょっとは読みなさい
http://www.php.net/manual/ja/ref.strings.php
0789nobodyさん2005/04/18(月) 10:51:35ID:???
クラスに慣れるため、現在使っているユーザ定義関数などを取り込んでみようと試みたのですが、
function yen_format($a) {
for ($n = 0; $n < count($a); $n++) {
$a[$n]['yen'] = number_format($a[$n]['yen']);
}
return $a;
}
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
class cYen {
function yen_format($a) {
for ($n = 0; $n < count($a); $n++) {
$a[$n]['yen'] = number_format($a[$n]['yen']); //←警告の出る行
}
return $a;
}
}
以下のような警告が出てしまいます。
Warning: Cannot use a scalar value as an array in /yen.inc on line **
どの様にすればよいのでしょうか。
0790nobodyさん2005/04/18(月) 11:13:13ID:???
>>789
$arr = array(
array('yen'=>10),
array('yen'=>100),
array('yen'=>1000)
);
var_dump(cYen::yen_format($arr));
こんな感じで試してみましたが、そのwarningを出せませんでした。。。
07917892005/04/18(月) 11:41:50ID:???
>>790
ナンダッテーΣ(´Д`lll)

もう一度よくチェックしてみたら配列ではな変数値を放り込んでいたことに気が付いたorz
お騒がせしました。
0792nobodyさん2005/04/18(月) 13:22:31ID:???
http://www.ne.senshu-u.ac.jp/~n130127/mt2/archives/000109.php
http://www.ne.senshu-u.ac.jp/~n130127/photo/

のみたいな感じで個々の画像から代表的な色を取得したいんだけど、
これって全てのピクセルを捜査してRGBの平均値を出すって感じなのかな?
0793nobodyさん2005/04/18(月) 15:03:24ID:tUq/WRMt
受信したメールをDBに貯めるwebメーラーを作ってるんですけど、重複受信しないためにはどうしたらいいでしょう?
UIDを参照しようにも
ttp://www.php.net/manual/ja/function.imap-uid.php
注意: この関数は、POP3メールボックスではサポートされません。
ということでたしかに取得できないぽい(msgnoと同じになってしまう)
UIDLみたいなことができればいんだけど…
0794nobodyさん2005/04/18(月) 17:47:50ID:8vSm+nX3
PHP+SendMailにて同時に500アドレスとかにメール配信してるんですが
おおまかな処理的には
アドレスはデータベースからひらって配列に入れる
For文にてbccに100アドレスずつ積んだら送信の繰り返し
(他人のアドレスが知れるとまずいのでBcc)
余ったアドレスと自分(確認)に送信して完了
//mb_send_mail使用

って感じなんですがすごく遅くて
処理を完了しました と表示させる画面が固まってしまいます。

うまくいえないが例えば、処理はバックグラウンドでやらして画面はすぐ完了させたり
PHP/SendMailにて早くなるような処理設定等ありませんでしょうか?

0795nobodyさん2005/04/18(月) 17:55:43ID:???
execとかsystemとか
0796nobodyさん2005/04/18(月) 17:56:29ID:???
>>794
そもそも、その処理をPHPでさせる必要があるの?
0797nobodyさん2005/04/18(月) 18:05:45ID:pALXDwic
>>796
DBからアドレスひらいたいからじゃねーの?
0798nobodyさん2005/04/18(月) 18:15:59ID:???
>>797
DBからアドレス拾うのはPHPじゃなきゃ出来ない処理でもない気がする・・・

それに>>796が言いたいのはWebシステムで処理する内容じゃないって事じゃないのか?
わざわざWeb画面からメール送って確認画面出す必要も無い気がする。
どうせ確認用に自分にもメール送るんだから、
スケジュール組んでサーバーに決まった時間に処理させれば良いだけじゃないか?
07997502005/04/18(月) 19:10:28ID:???
連鯖とかでシステム関数が呼べなかったりcrontabが使えなかったり…
ま、連鯖で大量メール配信は迷惑だが
0800nobodyさん2005/04/18(月) 19:35:04ID:???
>>794
君、出身宮崎か?
0801nobodyさん2005/04/18(月) 19:58:12ID:???
ひらうのは宮崎だけじゃないと思うぞよ。
0802nobodyさん2005/04/18(月) 20:27:37ID:???
宮崎駿
08037942005/04/18(月) 20:48:59ID:8vSm+nX3
えーっと、PHPにて簡単なシステム組んでまして
その機能の一貫としてメルマガ配信みたいなもんですかね。送信って押したらメール発射されます。
なんでスケジュールとかは無理だと思います。

PHPではアドレス拾いたいからです。
処理命令下した後Webの方はそのまま終了したいんですが今は処理終わるまで待ってる感じになるんで遅いんですかね・・。
execやsystemとかにてできるんであれば知りたいんですが。。
sendmailコマンドにアドレスつけたりメッセージ入れたりとかできるんでしょうか・・

あ、あと俺は残念ながら宮崎ではないです。
ごめんなさい。
0804nobodyさん2005/04/18(月) 21:06:11ID:???
>>803
PHPではキューテーブルかなにかに追加するだけで、5分おきくらいに
起動されるcronjobがキューを処理するとか。

その手のメーリングリストの処理はいろいろ面倒なので、fmlとかを
バックエンドに使うのが便利。perlが読めればの話だけど。
0805nobodyさん2005/04/18(月) 21:09:26ID:???
プロセス制御関数を使えばPHPから直接バックグラウンドで実行させられるかもしれないけど、
オイラなら(PHPの)シェルスクリプトを作って system("shell_script $arg > /dev/null &");
ってな感じでバックグラウンドで実行させるかな。
0806nobodyさん2005/04/19(火) 01:19:16ID:Y9FcOWFA
xmlパーサについて質問なんですが、
$data="./hoge.xml"; //xmlのURI
while ($data = fgets($fp)) {
//パース処理
}
という感じで、通常なら問題なくパースできているんですが、
元のxmlファイルの要素に改行が入っていると、最後の行しかパースできず、悩んでいます。
<detail>あああああ
あああああああ
ああ
</detail>
(↑元データがこんな感じだと、最終行の「ああ」しかパースされない。)
fgetsだと1行ずつ読みこんでいくために、そうなってしまうのかとは思います。
が、readfile()やfile()で一旦メモリに全部読み込んで、改行を除去してからパース、
なんて事をやるのも、ナンセンスかな、と思ってます。

こんなとき、どうしたらいいものでしょうか??参考になるものなどありましたらよろしくお願いします。
PHP4です。
08078062005/04/19(火) 01:23:31ID:???
$xml="./hoge.xml"; //xmlのURI
$fp = @fopen($xml, "r");

すいません、初期設定は↑です。
0808nobodyさん2005/04/19(火) 02:26:10ID:???
>>806
要素終了ハンドラが呼ばれるまで、
CDATAハンドラの内容をスタック(積み重ね)すれば良い。
0809nobodyさん2005/04/19(火) 04:24:48ID:???
皆さんレスありがとうございます。
>>776
最初はmt_srand(make_seed());でやってみたんですがそれでダメだったので適当に種を変えて見たのです。
>>777
最初はループの外に出してやってたんですがほとんど同じ数値しか出さないので
ループの中で毎回やってやろうと思った次第です。
>>778
そのコードでやりましたが9割以上同じ数値を出します。
>>779
srandはこまめにやると乱数の乱れ具合が良くなるというわけではないのですね。

ところでまだ正常な乱数が出せて無いんです。
mt_randの範囲がでかすぎるとまずいのでしょうか?
08108092005/04/19(火) 05:17:56ID:???
ごめんなさい別の部分のコードが原因でした。
正常な乱数が出せました。
お騒がせしました。
08118062005/04/19(火) 05:18:52ID:???
>>808
(読み込んだ行に"</"が含まれていなかったら){trim($data);→whileをcontinue;→$data.=$data;}
行がxmlの終了タグまで読み込まれた時点でxml_parse();することで、なんとなく回避できるような感じにはなったんですが、
今度は要素内にhtmlタグ(<〜>など)がある場合に、挙動がおかしいことに気づきました。

"<"などが、パースしているときに"<"と認識されて、xmlなんだかhtmlだか、パーサが理解してくれない、
という感じでしょうか…。

要素内のhtmlを除去か、一時的に置換する目的で、
ereg_replace("<","",$data)や、strip_tags($data);htmlspecialchars($data);など試してみましたが、うまく認識してくれません。

そもそも、"</"←これが、htmlの終了タグが現れた時点でtrueになってたりするのかなぁ、という感じです。
もう少し色々やってみますが、何か根本的に間違っていたり、解決法がありましたら、助けてください。
08128062005/04/19(火) 05:22:43ID:???
あ。
>>808さんのレスをよーく読み返してみると、「要素終了ハンドラが呼ばれるまで」という事ですね…
自分のやり方だと、「終了タグが現れるまで」ってことになっちゃってて、条件指定がおかしいですね。
んー、ちょっとこんがらがってますが、やってみます!
08138062005/04/19(火) 06:18:57ID:???
連投すいません。
fgetで読み込んだデータには手を付けず、そのままパース処理へ投げ、
その中で変換→バッファする事で、正常にパースできるようになりました。
>>808さん
ヒントありがとうございました!おかげさまで深く理解することができました。
0814nobodyさんNGNG
自宅サーバーでの質問です
Apache2.0.49
PHP4.3.11
を使用しているのですが
Apacheを起動するとき何故か
Unknown():Unable to lpad dynamic library 'C:\php\extensions\php_curl.dll' - 指定されたモジュールが見つかりません。
というエラーが出ます
extensionsフォルダを調べてみてもちゃんとphp_curl.dllはありますし
extensionsフォルダまでのフォルダ構成もあってます
4.3.8から4.3.11にバージョンアップした時は特にエラーは出なかったのですが…
どうやれば直るんでしょうか?
0815814NGNG
ちなみに自宅サーバーで使ってるphpは今のところ特に問題なく動いてます

それから4.3.11へのバージョンUPはphpフォルダを全て上書き
php4ts.dllをsystem32へコピー

という風にやりました
php.iniは以前のものをそのまま使っています
0816814NGNG
すいません…
このスレではちょっと返信が遅いみたいなので>>1の
【PHP】くだらねぇ質問はここに書き込みやがれ
このスレで質問してきます
08177942005/04/19(火) 19:53:29ID:oaiprVhl
>>805

ありがとうございました。

シェルスクリプト知らなかったので勉強したらそれでいけそうです。
0818nobodyさん2005/04/21(木) 09:34:27ID:???
PHP4じゃクラス変数は使えない?
0819nobodyさん2005/04/21(木) 17:29:17ID:EYYR0zng
教えてください
画像ファイルの全てのピクセルのRGBを取得するために
ループでそれぞれのピクセルに対して

$c1 = ImageColorAt($im, $x, $y);
$c2 = ImageColorsForIndex($im, $c1);

としてるのですが、激しく重いです。
他にRGBのそれぞれの値を取得する方法はないでしょうか?
0820nobodyさん2005/04/21(木) 20:59:20ID:???
皆さん、こんばんわです。

Apache/1.3.28 (Win32) PHP/4.3.10 です。

session_regenerate_id();でセッションIDをページ毎に書き換えたいと思っています。
c:\tmp にセッションファイルが残るのが嫌なので下記の様に以前のセッションファイルを
消去しようとしたのですが、効果無しです。
(c:\tmp\sess_******************************** が残ります。)


session_start();

$session_id = session_id();  //旧セッションファイル�b�バックアップ
session_regenerate_id();   //セッション番号を変更する
$session_file = "c:\\tmp\\sess_".$session_id;  //ファイル名を組み立てる
unlink ($session_file);  //旧ファイルを消去する


何が悪いのでしょうか?

0821nobodyさん@8202005/04/21(木) 21:06:52ID:???
書き忘れました

session.save_handler = files にしています。

0822nobodyさん2005/04/21(木) 21:09:57ID:???
>>820
http://www.php.net/manual/ja/ref.session.php

「User Contributed Notes」 の一番上は試してみては?
0823nobodyさん@8202005/04/21(木) 21:31:41ID:???
>>822

http://www.php.net/manual/ja/function.session-is-registered.php

の方ですか?
0824nobodyさん2005/04/21(木) 21:32:50ID:???
失礼しました。こっちですか?

http://www.php.net/manual/ja/function.session-regenerate-id.php
08258222005/04/21(木) 23:14:21ID:???
>>824

リンク間違っていた。ごめん。
そっちのほうです。
0826nobodyさん2005/04/22(金) 01:08:55ID:x5pK6rr1
デジタルカメラで撮影した画像からexif情報を取得しようとしています。
--enable-exifをつけてPHPをコンパイルし直して
$exif = exif_read_data($img);
foreach($exif as $key=>$section){
  foreach($section as $name=>$val){
    echo "$key.$name: $val<br />\n";
  }
}
実行した結果↓のようになったのですが、撮影日時や撮影機種などが取得できません。
XP上だとファイルの機種名、撮影日時などが取得できます。
機種名、撮影日時、ファイルサイズなど取得したいのですが、exif_read_dataではできませんでしょうか?
COMPUTED.html: width="640" height="480"
COMPUTED.Height: 480
COMPUTED.Width: 640
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.CCDWidth: 10mm
COMPUTED.ExposureTime: 0.016 s (1/64)
COMPUTED.ApertureFNumber: f/2.8
COMPUTED.Copyright:
COMPUTED.Thumbnail.FileType: 2
COMPUTED.Thumbnail.MimeType: image/jpeg
THUMBNAIL.Compression: 6
THUMBNAIL.Orientation: 1
THUMBNAIL.XResolution: 72/1
THUMBNAIL.YResolution: 72/1
THUMBNAIL.ResolutionUnit: 2
THUMBNAIL.JPEGInterchangeFormat: 1078
THUMBNAIL.JPEGInterchangeFormatLength: 8360
THUMBNAIL.YCbCrPositioning: 2
08278262005/04/22(金) 02:47:42ID:???
自己解決しました。
$exif = exif_read_data($img,0,true)
としたところ取得できました。
0828nobodyさん2005/04/22(金) 14:09:38ID:gzTYsMYc
pearのXML_RPCを使ってsslでやり取りするのって

$xmlrpc_host = "https://www.hoge.jp";
$xmlrpc_path = "/server.php";
$c = new XML_RPC_client( $xmlrpc_path, $xmlrpc_host, 443 );

で動いてはいるんだが、使い方正しいんかな?
0829nobodyさん2005/04/22(金) 15:01:05ID:???
半年前の PEAR 版は SSL 非対応だったな。今は知らんけど。
なので ttp://xmlrpc.usefulinc.com/ を使ったよ。
08308282005/04/22(金) 15:53:04ID:???
ソース確認してみたらssl対応してるっぽい
1.2.2で確認。
fsockopenのport引数変えてるだけみたいだけど。

xmlrpc1.0.9.22の方だとcurl使ってるみたいなので、
今回はpearで行きます、ありがと。
0831nobodyさん2005/04/22(金) 21:41:32ID:hJmunfCO
駄目元で聞くわ。

今まで2年間動いてた、あるPHPスクリプトが、突然「$_POST」だけ全く受け取れなくなった。
$_GETは受け取れる。ちなみに他のスクリプトは$_POSTも$_GETも受け取れる。
特に更新も環境の変更もしてない(つもり)。

誰か原因わかる??
0832nobodyさん2005/04/22(金) 22:53:17ID:???
.htaccessいじってないかい?
0833nobodyさん2005/04/22(金) 23:03:14ID:???
>>831
ダメ元でエスパーしたる
お前、スクリプトを弄って$_POST = とか ==と間違えて書き換えてないか?
unset()は流石にしてないだろうしなぁ
他のスクリプトが健在なら他に想いつかん
08348312005/04/23(土) 07:01:41ID:jIuqqiHI
>>832
windowsなので。

>>833
そんなお粗末はせんよ。

俺もこんなん初めてで、非常に困っちょる。
OSぶっ壊れたかな・・・(泣)
0835nobodyさん2005/04/23(土) 08:21:10ID:???
バックアップがあればdiffして本当にファイルが変わっていないか
確認してみては?

あとはerror_reportingをE_ALLにするとか、コマンドラインから
環境変数と標準入力をエミュレートして与えてちゃんと動くかとか
変なエラーログは吐いていないかとか、他のサーバーでは動くのかとか。

こんなもんかね。
0836nobodyさん2005/04/23(土) 09:18:28ID:???
思い込みで填ってるだけだと想うな
しょぼいミスの原因を追及出来ない奴は何を書いても向かないぞ
0837nobodyさん2005/04/23(土) 12:04:56ID:???
HTMLを間違えてるんだろ
0838nobodyさん2005/04/23(土) 12:22:27ID:eEFfrUoO
MVCで、
コントロールクラスのコンストラクタ中で
変数のインポートから表示まで行ってしまうか、
コンストラクタの中ではほとんど何もせず、
後からインポートと表示のメソッドを呼ぶか、
どっちが適当でしょうか?
0839nobodyさん2005/04/23(土) 12:33:38ID:???
>>838
コンストラクタに変数インポートや表示を組み込むと、
特定のページだけにしか使えないような気がするけど・・?
例えばView部分を変更しようとしても、Viewのwrapperみたいのが必ず必要になって面倒な希ガス
0840nobodyさん2005/04/23(土) 12:35:45ID:???
寧ろ、コントロール(MVCのC)の部分で、変数のインポートとか表示ってしないだろ・・・

コントロールはあくまでもコントロール。
ページ遷移とかするだけだろう・・・

本当に、MVC分かってるの疑問だな・・・
0841nobodyさん2005/04/23(土) 12:37:24ID:???
RSS 1.0 を parse したいんですけど、
rdf:RDF -> Channel -> items -> rdf:Seq ->rdf:li にある、rdf:resource attribute を
取得するのに便利なクラスってありますか?
PEAR の RSS は rdf:Seq を処理して無いっぽいんですが?
0842nobodyさん2005/04/23(土) 15:09:46ID:sp0JwmHn
max_execution_time で対象になるPHP実行時間には、
DBへの問い合わせ時間は含まれないようですが、
max_execution_time で対象になる実行時間
を簡単に求める方法はあるのでしょうか。
0843nobodyさん2005/04/23(土) 18:41:37ID:???
>>839-840
レスありがとうございます。
どうも自分の理解があやしいので
もう一度MVCを勉強してみました。
ビジネスロジックをコントローラーに組み込んでいたようです。
DAO的なもの=モデルと理解していたので、それを操作するビジネスロジックは
Cなのかなと思っていました。
0844nobodyさん2005/04/23(土) 19:26:58ID:oo8/fFQw
適当な文字列 $str="AB" の文字間にスペースを挿入したいんですが
substr()1文字目取ってスペース入れてsubstr()2文字目取って足す
以外にいい方法ないでしょうか・・
0845nobodyさん2005/04/23(土) 20:12:37ID:???
>>844

''でexplodeしてから、' 'でimplode
0846nobodyさん2005/04/23(土) 20:21:00ID:???
>>845
''でexplodeはできんだろ

>>844
$str = implode(' ',preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY));
でどうだ?
0847nobodyさん2005/04/23(土) 20:26:39ID:???
substr_replace($str, ' ', 1, 0);
08488442005/04/23(土) 20:38:26ID:oo8/fFQw
うーん、皆さんサンキュー
がしかし今でてる分ではできなかったっす・・
08498462005/04/23(土) 20:51:15ID:???
>>848

<?php
$str = 'abcdefgh';
$str = implode(' ',preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY));
print $str;
?>

で、'abcdefgh' が
a b c d e f g h
となるわけだが。

望んでいる事が違うのか?
08508442005/04/23(土) 22:28:38ID:oo8/fFQw
>>849

あ、失礼致しました。
さっき文字列に日本語入れてたから駄目だったんですね。
英語でやったらいけました、すみません。

日本語もやろうと思ったら-2にしたりとかしたらいけそうですね。
ありがとうございました。
0851nobodyさん2005/04/23(土) 22:39:29ID:???
日本語の場合は日本語って言ってくれなきゃ。。。
オイちゃんは$str[0].' '.$str[1]とかやっちゃう所だったよ
08528462005/04/23(土) 23:11:46ID:???
>>850
んだよ、日本語入るんだったら駄目駄目ジャン。
最初から言えよ。

<?php
$str = 'abcあefほhまぬけ';
for ($i=0;$i<mb_strlen($str);$i++) {
$tako[] = mb_substr($str,$i,1);
}
$str = implode(' ',$tako);
print $str;
?>
0853nobodyさん2005/04/23(土) 23:46:20ID:???
>>852
マルチバイト正規表現が使えるならたぶんもっと簡単。

echo mb_ereg_replace('(.)', '\\1 ', $str);

一番最後にゴミのスペースが残るけど不要な場合は rtrim() で削除。
0854nobodyさん2005/04/24(日) 13:44:31ID:???
>>842
無い
0855nobodyさん2005/04/24(日) 14:13:38ID:???
PHPのクラスについて、ご教示頂きたく。

class First {
 var $x = "fist";

 function disp() {
  print "x=" . $this->x . "<BR>";  //*1
 }
}

class Second extends First {
 var $x = "second";

 function disp() {
  print "x=" . $this->x . "<BR>";
  parent::disp();
 }
}

$obj = new Second;
$obj->disp();


*1 の部分で、Second クラスの x の値が表示されますが、ここで First クラスの x の値を
表示したい場合、どうすればいいのでしょう?
メソッドであれば、self::メソッド名 で指定できるみたいですが、プロパティの場合はどうれすれば…。
今回のは、わざとらしい例ですが、継承クラスでプロパティがオーバーライドされて、
親クラス内での処理が、影響を受けるのは怖いんですけど。
■ このスレッドは過去ログ倉庫に格納されています