【PHP】質問スレッド Part4
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
02/06/02 15:32ID:f3afNVBG<<参考>>
■本家
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を見よう。
0857nobodyさん
02/09/05 19:36ID:???誘導するとか。
<
<
<
0858名無しさん@Emacs
02/09/05 19:49ID:52nAvFqLCだとGLOBALとかあるよね。
etagsでもいいんだけど、ちょっと物足りない。
っていうか使い道が違うか。たのむー。
0859nobodyさん
02/09/05 20:16ID:???0860nobodyさん
02/09/05 21:14ID:???0861名無しさん@Emacs
02/09/05 21:34ID:???スクリプトでも書いて最終的にはそうしようと思ってる。
でも、存在しているものなら作りたくないなぁ。と。
0862nobodyさん
02/09/05 22:29ID:???シリアル番号なんですが
0863nobodyさん
02/09/06 09:50ID:IQ396KrO環境はphp3です。
で、配列に数字が入っていて、その中から最大と最小を取り出したい
のですが、ソートして最初と最後の数字を取り出せばいいのかなと
試したところ、ASCII順で並んでしまい、思った通りの結果が出ませんでした。
php4では数の大小でソートが出来る様なのですが、php3にはそういった関数が
無いみたいですね。
何かいい方法はありませんでしょうか。
0864nobodyさん
02/09/06 12:17ID:xN+/a93xvar $name;
var $age;
function TEST($inName, $inAge) {
$this->$name = $inName;
$this->$age = $inAge;
}
function VIEW() {
echo "NAME : " . $this->$name . "<br>\n";
echo "AGE : " . $this->$age . "<br>\n";
}
}
$dat = new TEST('NoName', '99');
$dat->VIEW();
exit;
-----Result-----
NAME : 99
AGE : 99
$nameに意図したものと違うものが代入されるのですが、
私が根本的に勘違いしているのでしょうか?
愚か者にお教えいただければ助かります。
PHP4.1.2です。
>>863
max() や min() では駄目ですか?
0865864
02/09/06 12:27ID:???× $this->$name
○ $this->name
一から勉強しなおします。
お目汚しすみませんでした。
0866863
02/09/06 14:27ID:???早速のレスありがとうございます。
ですが、残念ながらmax()もASCCIでよんでいるようです。
データには1〜40000程度の数字が入っているのですが、
9000など、頭に9の来るものが最大として認識されています。
本来なら、40000が出力されるはずなのですが…。
確認のため、配列をforで一つずつ出力すると、ちゃんと40000という数字
が入っていたので、取得自体は問題なく出来ていると思います。
他に原因があるのでしょうか?
0868nobodyさん
02/09/06 14:53ID:???$ary1 = array("2,000", "9,000", "40,000", "500", "8,000");
$ary2 = array("2000", "9000", "40000", "500", "8000");
echo "Max1 = " . max($ary1) . " : Min1 = " . min($ary1) . "<br>\n";
echo "Max2 = " . max($ary2) . " : Min2 = " . min($ary2) . "<br>\n";
-----Result-----
Max1 = 9,000 : Min1 = 2,000
Max2 = 40000 : Min2 = 500
的外れかも。
0869863
02/09/06 15:05ID:???どうもです。
カンマが入っているかいないか、という事だと思いますが、
すいませんがこれも違うようです。
形式としては
$ary2 = array("2000", "9000", "40000", "500", "8000");
ちょうどこんな感じの数値のみです。
(まれにマイナスがあったりもしますが)
データの取得の仕方が、ファイルを読み込んでforで回して
一行ずつ$data[]に押し込んでますが、その辺なにかマズイ事って
無いですよ…ね?
あちこち見ても乗って無いんですよね…。
一体ほんとになんなんでしょう(泣
0870nobodyさん
02/09/06 15:34ID:???0871863
02/09/06 16:42ID:???どもです。
試しましたが、同じ結果でした…。
もしかしてマイナスがマズイのかな…?
$ary2 = array("-2000", "9000", "40000", "500", "8000");
これも>>868の方が言っていた例のように、文字列として認識されてしまうのかなぁ…
自分でも適当な元データ作って試してみますが、
実はこれは見当違いで正しい方法があるよって人はまたご教授ください。
初仕事でこんな詰まるなんて先が思いやられる…鬱。
0872nobodyさん
02/09/06 16:54ID:???つーか思いっきり "9000" とかって文字列指定してるじゃん。
array(-2000, 9000, 40000, 500, 8000)
ならまだわかるが。。。
0873nobodyさん
02/09/06 16:55ID:???そもそも XML で出してやりゃいいんじゃないの?
と思う漏れは変ですか?
0874863
02/09/06 17:09ID:???あ〜、失礼しました。
例のつもりで書いたのですが、間違っていては意味無いですね(苦笑
元データ(txt形式)は各行が「a b c d e」
というように5つのデータがタブ区切りになっていて、欲しいのはそのd。
なのでタブでsplitして、dだけ拾う(仮に$data[3]として)。
で、dは x,y というカンマ区切りの二つの情報を持っているので、「,」でまた
split。
$hoge = split(",",$data[3]);
それぞれを
$x[] = $hoge1;
$y[] = $hoge2;
として放りこんでるんです。
最終的に$xの最大値と$yの最小値が欲しい、という事です。
なので直接的に
$ary2 = array("2000", "9000", "40000", "500", "8000");
と指定してあるわけでは無いのですが、上記の様なやり方でも文字列として
代入されてしまうのでしょうか?
0875nobodyさん
02/09/06 18:08ID:???つまり君はアレだな、
"ABC 123 XYZ 789"
なんて文字列を split() したら型としては
文字列 数値 文字列 数値
って自動的になってほすぃ、ってことだな?
08768月のクリスマス ◆zzfy/JR2
02/09/06 18:12ID:zUklKDWI$result=pg_exec("select * from nwpersonal ");
を実行すると下記のエラーが発生するのですが
どうしたらよいのでしょうか?
分かる方よろしくお願いします☆
Warning: PostgreSQL query failed: ERROR: nwpersonal: Permission denied.
0877nobodyさん
02/09/06 19:14ID:yYJqZr2N問題がわからないところがあります。
どなたか助けてもらえないでしょうか?
「環境」
Windows98+PWS+PHP4.0
「設定」
1)PWS
�@仮想ディレクトリの追加
�Aプロパティの設定「読み込み:OK、実行:OK、スクリプト:OK」
2)PHP
�@配置場所「php-4.2.2-Win32.zip」を解凍して「C:\PHP」に配置。
3)レジストリーに以下を追加
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map]
".php"="C:\\PHP\\sapi\\php4isapi.dll"
よろしくお願いします。
0878877
02/09/06 19:16ID:yYJqZr2Nファイルのダウンロードが始まってしまいます。
0879877
02/09/06 19:20ID:yYJqZr2NPWSのバージョンは、4.0です。
ちなみに環境構築は以下のサイトを参考にしました。
「ttp://php3.de/manual/ja/install.iis.php」
よろしくお願いします。
0880nobodyさん
02/09/06 19:30ID:yYJqZr2Nphp.iniファイルは、c:\windows配下に配置しています。
よろしくお願いします。
0881nobodyさん
02/09/06 19:37ID:yYJqZr2Nc:\php\php4ts.dll は c:\Windows\System
にコピーしています。
助けてください。
0882nobodyさん
02/09/06 21:41ID:???>「ttp://php3.de/manual/ja/install.iis.php」
の
>PWS マネージャで、PHPサポートを追加したいディレクトリで右クリッ クす、
>プロパティを選択します。「実行」チェックボックスをチェッ クし、確認を押します。
これやってみた?
Apacheのほうが楽しいような。
0883login:Penguin
02/09/06 21:59ID:???カタカナは mb_regex("[ァ-ヶー]",$str);だとおもうんだが、
やっぱ感じはむりだよな。
ってことで全角チェック(ひらがな、漢字、カタカナ)ってできる?
0884883
02/09/06 22:01ID:???0886nobodyさん
02/09/07 03:37ID:???4.2.2,今インスト終わったばかりなのに…。欝だ,詩嚢。
0887nobodyさん
02/09/07 04:49ID:SuwDGNVx0888nobodyさん
02/09/07 08:28ID:???ここで改造して欲しいってお願いしたらダメかな?
0889883
02/09/07 08:47ID:???0891nobodyさん
02/09/07 10:30ID:???if($host=="*.hoge.ne.jp"){echo "あぼーん";}else{echo "イイ(・∀・)!";}
こんな妄想してるのですが…。
正規表現わからなさ過ぎです(´д`)
0893nobodyさん
02/09/07 11:19ID:k50oNcQ5正規表現しかないね。
googleで適当に検索して覚えよう。
0897名無しさん@XEmacs
02/09/07 17:05ID:???http://jp.php.net/manual/ja/function.strstr.php
0899nobodyさん
02/09/08 00:21ID:4CQEIo/H0900891
02/09/08 06:48ID:???$host=getenv("REMOTE_HOST");
preg_match("/^[[:alnum:]]?([^\/]+)/i",$host,$matches);
$dom=$matches[0];
preg_match("/[^\.\/]+\.[^\.\/]+\.[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/",$dom,$matches);
こんなのですがちゃんと意図した動きをしてくれますた。
2行目の ?([^\/]+) の意味する動きがさっぱりわからんのですが…
ちなみにhttp://jp.php.net/manual/ja/function.preg-match.phpの例3を参考にしました。
0901nobodyさん
02/09/08 12:25ID:uUaPL6MQPOST / GET された変数を取得できない場合があるようです。
http://ns1.php.gr.jp/pipermail/php-users/2002-September/009886.html
パッチが CVS にコミットされたようです。
詳しくは、PHP-users ML の上記のスレッドを参照してください。
0902nobodyさん
02/09/08 14:03ID:+VKmhwX3俺は$GLOBALS["hoge"]を使っていたんだが、今まで我流で組んでいたんで
どのように項目設定をしたらよいのかよくわからない。
仕事でphpを組んでいる人はどうやっている?
0903nobodyさん
02/09/08 21:08ID:JZE+WdFRjavascriptでいうところのlocation.searchにあたる構文はなんですか?
0904nobodyさん
02/09/08 21:17ID:???グローバルになるかどうかは試してくれ。
0905nobodyさん
02/09/08 21:24ID:w5Lvhxg8> 仕事でphpを組んでいる人はどうやっている?
我流だろ。
0906nobodyさん
02/09/08 22:19ID:???CGIからやってきた人はそのままCGI風に書いたりしてるね。
<?〜?>の枠でHTMLの出力まで全部やっちゃう。
オイラはASPからやってきたのでHTMLに埋め込む形で書いてるけど。
0908nobodyさん
02/09/09 04:45ID:G9rUU7zOうーん、ということは
http://hoge.com/fuga?a=10&b=20
というアドレスを指定した場合、
$data = getenv("QUERY_STRING");
$tmp = explode("&",$data);
とすると
$tmp[0]にはa=10
$tmp[1]にはb=20
が格納される、という認識でよろしいですか?
0909908
02/09/09 04:46ID:???http://hoge.com/fuga.php?a=10&b=20
$data = getenv("QUERY_STRING");
$tmp = explode("&",$data);
$tmp[0]にはa=10
$tmp[1]にはb=20
0910nobodyさん
02/09/09 04:57ID:???また、
$_GET[a] には 10
$_GET[b] には 20
が入る。
0912名無しさん
02/09/09 06:29ID:???変数の宣言の強制ってできたっけ?
0913nobodyさん
02/09/09 11:48ID:???http://www.php.net/manual/ja/
0915nobodyさん
02/09/09 16:18ID:???<form><textarea rows=8 cols=30 name=come></textarea>
<input type=submit value="投稿"></form>
<?//$dat = rtrim($come);
$dat = ereg_replace("\n","<br>",$come);
$fp = fopen("log.txt","w");
fputs($fp,$dat);
fclose($fp);
print "$come";
?>
================================================
『あいうえお
かきくけこ
さしすせそ』 のように改行を含んだ文書を投稿した時、
表示は『あいうえおかきくけこさしすせそ』のように改行せず表示され、
log.txtファイルに保存された内容は
『あいうえお
<br>かきくけこ
<br>さしすせそ』こんな感じで改行された状態で保存されます。
『あいうえお<br>かきくけこ<br>さしすせそ』のようになります。
改行されて表示して、1行で保存させるにはどうしたらいいでしょうか?
0916nobodyさん
02/09/09 16:26ID:???0917915
02/09/09 16:50ID:???$dat = ereg_replace("\n","\n<br>",$come);
『あいうえお
<br>かきくけこ
<br>さしすせそ』
保存が\nで更に改行されました。(T.T)
表示は『あいうえおかきくけこさしすせそ』でそのままでした。
環境はwin php4.2.2 apach です。
おねがいします。
0918nobodyさん
02/09/09 16:55ID:???0919916
02/09/09 17:00ID:???0921I hate php
02/09/09 19:05ID:lptiOWqrどなたか助けてください。
環境
DB→Access2000
PHP→Version 4.2.2
PEAR→DB(?)
0922921
02/09/09 19:05ID:lptiOWqr/**
* インサートテスト3。
*
* @accesspublic
* @paramProductState $ps製品状態情報
*/
function insert3($ps)
{
// DB接続
$this->connect(); // $this->db = DB::connect( $dsn )にて取得。
// SQL文発行
$sql = "INSERT INTO user (id,name,date) ";
$sql .= "VALUES (?,?,?)";
// PrepareStatment取得
print "date=" . date("Y-m-d H:i:s",time()) . "\n";
$stmt = $this->db->prepare( $sql );
// ResultSet取得
$this->db->execute($stmt, array($ps->id,$ps->name,date("Y-m-d H:i:s",time()) ));
// finally
// DB切断
$this->db->disconnect();
}
※日付は現在時刻を挿入する。
※Access2000のデータ型→日付/時刻型
※日付型以外(文字列、数値型)はうまくいきます。
エラー内容
SQLエラー → ステートは37000
0923nobodyさん
02/09/09 19:15ID:???PHPでここへログインしてリザルトを取得したいんだけど、なんかいい方法ないですか?
https://hoge:[email protected]/s...../h....htm
で接続しようとしてもダメでした。
じゃ、GETでどうだろう、と試してもダメ・・・・
0924nobodyさん
02/09/09 19:50ID:???何か特殊なツールを使えばできるとかあったら教えていただければと思います。
ちなみに今はGD1.5が入ってます。
0925nobodyさん
02/09/09 20:33ID:MPi3nP/Fだったら$aと$bから値を取れるだろ
0927921
02/09/09 22:02ID:HwIKAZPZ自分で解決しました。
以下の様にするとうまくいきました。
// ResultSet取得
$this->db->execute($stmt, array($ps->id,$ps->name,date("Y-m-d H:i:s",time()) ));
↓
// ResultSet取得
$this->db->execute($stmt, array($ps->id,$ps->name,time() ));
これは、Statementの中で、整数型の現在時刻を 日付型フォーマット
(Y-m-d H:i:s)に自動で変換しているということですね。
ご迷惑おかけしました。
ども。。
0928nobodyさん
02/09/10 00:20ID:???$a の整数部分が欲しいのですが小数点以下を削除する関数を教えてください
0930nobodyさん
02/09/10 00:31ID:???じゃダメだっけ? 四捨五入してた?
それはちょっと違うだろ
ていうか関数なんかいらないだろ
$a = (int)(10/3-0.5);
0933928
02/09/10 01:06ID:???(int)うまくいきました。こちらを使います。
0934nobodyさん
02/09/10 11:36ID:???文章内を複数の条件で置換する方法はありませんか?
下のように書くと一番最後の構文以外無視されてるんです。
$print_data = eregi_replace("バカ","**",$array_data[0]);
$print_data = eregi_replace("死 ","*",",$array_data[0]);
$print_data = eregi_replace("アホ","**",$array_data[0]);
0935名無しさん@Emacs
02/09/10 11:44ID:ATB55ZPkPHPどうこうよりも、プログラムの基礎の基礎からやりなおした方がよい
0937nobodyさん
02/09/10 11:51ID:HFFQaulX$array_data[0] = eregi_replace("死 ","*",",$array_data[0]);
$array_data[0] = eregi_replace("アホ","**",$array_data[0]);
0938934
02/09/10 11:55ID:???$array_dataを$print_dataに変える必要無かったのですね
例文がそうなってたので・・・
ありがとうございました!!
0939935
02/09/10 12:38ID:ATB55ZPk多分、その例題は例として3パターンあげているだけなんですよ
それに気付かないようだから、基礎からやりなおした方がいいと書いたのですが。
変数 代入 関数 戻り値
この辺すら理解していてないような気がします。
今回は解決しても、またおなじようなところで、
はまる気がする。
0940nobodyさん
02/09/10 14:44ID:20uIzqy9下記のコードで、実行すると何も出力されません。
配列の中身を動的にテーブルに表示させたいのです。
<?php
$list = array();
$inv1="値�@";
$inv2="値�A";
$inv3="値�B";
array_push ($list, $inv1);
array_push ($list, $inv2);
array_push ($list, $inv3);
?>
<table border="1">
<?php
foreach ($list as $outv) {
?>
<tr>
<td><?php $outv ?></td>
</tr>
<?php
}
?>
</table>
よろしく。
?>
0942nobodyさん
02/09/10 14:51ID:???<td><?= $outv ?></td>
機種依存文字はやめよう。
0943nobodyさん
02/09/10 14:57ID:20uIzqy9ありがとうござました。
うまくいきました。
丸数字やめます。
0944nobodyさん
02/09/10 15:05ID:???最近書き込み多いような気がする。
0945921
02/09/10 15:06ID:20uIzqy9>>922
で質問して
>>927
でうまくいった書きましたが、実際はうまくいっていませんでした。
どなたか、わかる方がいらっしゃたら教えてもらいますか?
PEAR DBを用いた 日付/時刻 型の項目にINSERTする方法です。
よろしくお願いします。
0946nobodyさん
02/09/10 16:07ID:MtX1bRLJ0947nobodyさん
02/09/10 16:15ID:uXHCanxz分かる方おられませんか?
if($ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/ ){
print "Content-type: text/html\n";
print "Content-encoding: gzip\n\n";
open (STDOUT, "| /usr/bin/gzip -1 -c");
}else{
print "Content-type: text/html\n\n";
}
0949nobodyさん
02/09/10 17:41ID:JRIkgJI/レスありがとうございます。
ですが、php.ini の設定もマニュアルどおりだし、×なプログラムは実行結果が返ってこず、
かつエラーメッセージもでないという、“まったく音沙汰無し”の状態で、どんなエラーだっ
たのか確かめることもできないのです。無償のデバッガを欲しがるのは図々しいでしょうか?
0950nobodyさん
02/09/10 18:12ID:U6fAaaR2要所要所に、printやechoを埋めてトレースすれば良いのでは?
0951nobodyさん
02/09/10 18:45ID:JRIkgJI/それが、場合によってはエラー個所の手前までの実行結果も返ってこないのです。
(ブラウザでソースを見るとHTMLのヘッダしか入っていない)だからエラー個所の
特定もできません。
0952nobodyさん
02/09/10 18:53ID:ATB55ZPkある程度以降をコメントにして、実行してみれば?
0954nobodyさん
02/09/10 18:59ID:???$dat_arr=file("http://pc.2ch.net/test/read.cgi/php/1022999539/");
$dat=NULL;
foreach($dat_arr as $line)$dat .= $line;
ereg ("([0-9]{2,4})/([0-9]{2})/([0-9]{2})([^[:digit:]]{1,6})([0-9]{2}):([0-9]{2})", $dat, $regs[]);
print_r($regs);
こうするとこのスレの>>1の投稿時間が
Array ( [0] => Array ( [0] => 02/06/02 15:32 [1] => 02 [2] => 06 [3] => 02 [4] => [5] => 15 [6] => 32 ) )
みたいに配列にはいるんですけど、
このスレ全体のを入れるにはどうすればいいですか?
[0]=>Array([0]=>全体 [1]=>年 [2]=>月・・・・
[1]=>Array ( [0] => 02/06/02 15:32 [1] => 02 [2] => 06
[2]=>Array・・・・
のようにしたいんです。
レス数が950を超えています。1000を超えると書き込みができなくなります。