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

【PHP】質問スレッド Part4

■ このスレッドは過去ログ倉庫に格納されています
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を見よう。
0202 ◆AngelBlk 02/06/23 09:37ID:???
>200
・・・ほんとに?
configure見ると思いっきり
--enable-mbregex
Enable multibyte regex support
って書いてあるんだけど・・・>PHP4.2.0/PHP4.2.1
0203 ◆AngelBlk 02/06/23 09:38ID:???
って、解決したのか(苦笑
0204nobodyさん02/06/23 18:38ID:kqip7CeK

$fp = @fopen("/tmp/counter", "r+");
// ファイルがなかった場合、ファイルを作る。
if( !$fp ) {
$fp = fopen("/tmp/counter", "w");
}

// 重要。説明は下で。
set_file_buffer($fp, 0);

flock($fp, LOCK_EX);
rewind($fp);
$buf = fgets($fp, 1000000);
if( !$buf ) {
$buf = 1;
} else {
$buf++;
}
rewind($fp);
fputs($fp, $buf);
flock($fp, LOCK_UN);
fclose($fp);

itboostのロックの頁を見たら、上のようなソースが載っていた。
自分はfopen($file,"w")をしたときにrewindなんてしなかったんだけど、
rewindって必要なの?それともロックとかかけるときのみ必要なの?
0205縞栗鼠(シマリス)の親方02/06/23 18:45ID:ZSSdFO5T
中央高等学院の従業員「西部」が女子トイレに闖入し
汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。

中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0206nobodyさん02/06/23 20:50ID:???
>>204
いらないけど、個人的には付けてる。
020720402/06/24 01:05ID:???
>>206
どうすればいいんだ……。つけるべきかなぁ。無駄に負荷をかけたくないんだけど。
0208nobodyさん02/06/24 01:16ID:0X7UgTkp
出たなオヒス
0209nobodyさん02/06/24 02:37ID:???
フォームを使って
<select name="array[]" size=20 multiple >
このように複数行選択した内容を扱いたいけどつかえないよ。

一応、他の変数のように
$array[] = $_REQUEST["array[]"];
このようにしたけど、空の値が入るだけ。

どうすりゃいいの?

昔はできたのに・・・・

ガイシュツだったらスマソ
0210名無しさん02/06/24 03:49ID:???
$_REQUEST["array"]
0211nobodyさん02/06/24 18:44ID:???
>>210
ありがと。できた。
$array = $_REQUEST["array"];
これでいいのね。
0212nobodyさん02/06/24 21:22ID:v5JHJkLy
$str = "&#63861;";

という文字列の "63861" の部分を "f975" のように
16進数に変換し、

$str = "&#f975;";

というようにしたいのですが、書き方がわかりません。

$str = preg_replace( "/(&#)([0-9]{5})(;)/", "$1$2$3", $str );

↑どう書けばいいのでしょう?
わかる方いたら教えてください。
m(__)m

※ちなみに全角にしているのは文字化け防止です。
0213nobodyさん02/06/24 21:53ID:???
>>212
強引にやってみた。駄目かなあ。。。

<?php
$str='&#63861;';
$str=dechex(eregi_replace("(&#)([0-9]*)(;)","\\2",$str));
$str='&#'.$str.';';
echo $str;
?>
0214nobodyさん02/06/24 22:07ID:v5JHJkLy
>>213
レスサンクス.

でも

$str = '&#63861;'

だけの時はいいんだけど

$str = 'わたしは&#63861;です。';

とかだったりするとだめっぽいです。

うーん。
0215nobodyさん02/06/24 22:33ID:???
>>214
おちけつ

もう少しだけヒント。

いっぺんにやろうとせずに順序立てて考えれ。つーかコーディング汁。
0216nobodyさん02/06/24 22:59ID:???
つーか、数字部分だけ分離してsprintf関数通せば済む問題じゃあ‥‥‥
0217sage02/06/24 23:45ID:v5JHJkLy
>>213, 215, 216

汚いけどナントカ動きました。
一度にやらなければそんなにむつかしくなかったです。

$str = "&#63861;";
preg_match_all( "/&#([0-9]{5});/", $str, $match );
for( $i=0; $i<count( $match[0] ); $i++ ) {
$match[1][$i] = '&#' . DecHex( $match[1][$i] ) . ';';
$str = ereg_replace( $match[0][$i], $match[1][$i], $str );
}
return $str;
0218nobodyさん02/06/25 00:10ID:P4v4WPT0
2番目の引数、出来そうで出来ないな。


$str = "掠";
$str = preg_replace("/(&#)(\d*)(;)/", "$1" . dechex("$2") . "$3", $str);
print $str;
0219nobodyさん02/06/25 00:17ID:pVNEMAn7
PHP3でsybase関数が使えないのですが、
sybaseの拡張モジュールってあるのでしょうか?

※WindowsからLinuxにあるsybaseへアクセスしたい。ODBC無で。
022021602/06/25 00:41ID:???
>>217
んな面倒なことせんでも2行でおさまるが。

$str = "掠";
ereg("&#([0-9]+);", $str, $match);
$str = "&#".sprintf("%x", $match[1]).";";

0221nobodyさん02/06/25 01:35ID:???
>>220
ありがとうございます。

でも、それだと >>214 でも書いたんだけど

$str = 'わたしは&#63861;です。';

のようなときにうまく動かないのです。
022221602/06/25 01:40ID:???
>>221
パターンいじればいいだけでは?
.*&#([0-9]+);.*
022321602/06/25 01:49ID:???
$str = "掠です。わたしは掠です。";
$regRule = "(.*)&#([0-9]+);(.*)";
while(ereg($regRule, $str, $match))
$str = $match[1]."&#".sprintf("%x", $match[2]).";".$match[3];
0224nobodyさん02/06/25 02:15ID:vEnhn/oC
すまそ...
ProxyのプログラムをPHPで作りたいです。
これが、一番参考になるかな〜って思ったけど
http://php.s3.to/net/kusi.phps
でも、駄目。
cURLを利用して、作りたいんです。誰か、つくりかた、おせて!
わからん...
0225nobodyさん02/06/25 03:09ID:???
>>223
教えてもらってばかりで申し訳ないです。
きちんと動きました。

どうも、ありがとうございました!
0226nobodyさん02/06/25 18:58ID:???
>>224
>でも、駄目。
何がどう駄目なんだよ!
オマエなんかに作れないって事だけは解るがなw
0227nobodyさん02/06/25 20:31ID:9ydA7d41
>>226
何がどう駄目なんだよ!

だって、次のページへ進むとProxyがはずれるし、
Javaに対応してないし、
フレームにも、対応してないじゃん。
作りが、あまいの
もっと、プロ仕様にしてくれなきゃ。
0228nobodyさん02/06/25 20:33ID:9ydA7d41
それにさ、せっかく、cURLって便利なものがあるんだから
cURLを使ってよ。
LetsPHPでしょ。Letsして!藁
0229nobodyさん02/06/25 20:36ID:???
      __ ┌┬┬┬┐ __
    ―――┴┴┴┴┴―――――、
   /.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||     __________
  /.    ∧// ∧ ∧|.||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  224=227=228を迎えに来ました
 ||_. *  _|_| ̄ ̄ ∪|.|.       .|ヽ. _||  \__________
 lO|o―o|O゜.|二二 東|.|京 精神 .病院 ||
 | ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
0230nobodyさん02/06/25 22:37ID:???
Proxy 厨房をハケーンしますた。
0231nobodyさん02/06/25 22:38ID:24biITUF
真面目にこたえて欲しいな〜
http://php.s3.to
作った人、きっと、見てんでしょ。藁
0232nobodyさん02/06/25 22:47ID:???
煽り方が下手です。
0233nobodyさん02/06/26 10:35ID:???
プロ仕様… Proxyのプロ…
0234nobodyさん02/06/27 02:54ID:oQ+aVv2C
>>233
君だけだよ
もれのセンスがわかってくれるの。藁
もうちょっと、ちゃんと作って欲しいよね〜って感じ。煽
0235nobodyさん02/06/27 04:38ID:???
(´ー`)┌
0236 02/06/27 14:51ID:???
セッションIDで質問です

クッキーが使用できない携帯端末などを想定して
<A href="hoge.php?<?=SID?>">Next</A>

などとして持ちまわっていたのですが、どうしてもformタグを使用しなくて
はならず

<form action=hoge.php?<?=SID?> method=POST>

としてみたらiモードでうまく持ち越せました。
同様にJフォン対応にするべし!と思い

<form action=hoge.php?<?=SID?> method=GET>

としてみましたが撃沈してしまいました。
諦めるしかないのでしょうか?
0237nobodyさん02/06/27 15:32ID:???
hiddink だよ...
0238nobodyさん02/06/27 23:01ID:???
あのー、
配列のキーに文字列入れてソートすると、その文字列消えちゃって
整数に変わっちゃうのですが、これを簡単に回避する方法って
何かありますか?というかこれって仕様ですか?

foreach($dat as $line){
list($lasttime,$title,$admin,$comment,$url)=explode("<>",$line);
$mix_data[$lasttime][]=array($title,$admin,$comment,$url);
}
print_r($mix_data);←ここでは文字で出てきてる(2002/06/27(Thu) 22:58みたいな)
rsort($mix_data,SORT_STRING);
list($key,$value)=each($mix_data);
print_r($key);←ここになると0、1になっちゃう
0239nobodyさん02/06/28 21:43ID:MwZT+i3a
<input type=checkbox name="target" value="1"> 1 <br>
<input type=checkbox name="target" value="2"> 2 <br>
<input type=checkbox name="target" value="3"> 3 <br>

こんなフォームを受け取った場合に全部のcheckboxを見るにはどうしたら良いかの?
2つ以上チェックしたとき、$_POSTや$_GETだと最後のチェックしか見えないのだが。
0240nobodyさん02/06/28 22:37ID:???
連配
0241nobodyさん02/06/28 23:03ID:???
>>239
変数ダンプしる。
024223902/06/28 23:21ID:???
すまん。nameとvalue入れ替えたらなんとなく動いた。
0243nobodyさん02/06/28 23:49ID:???
故あって、CGI版で動かしたいのですが、

#!/usr/local/bin/php
<? phpinfo() ?>

とかってやると、先頭に

#!/usr/local/bin/php

と出力されてしまいます。なで?
0244nobodyさん02/06/29 01:33ID:???
http://www.spencernetwork.org/memo/tips-3.php
ここのHTTPクライアントで、Hoops!のページを取得しようとしたんですが、

HTTP/1.0 200 OK
Date: Fri, 28 Jun 2002 16:28:33 GMT
Server: Apache/1.3.14 (Unix) mod_perl/1.24_01
Content-Type: text/html
X-Cache: MISS from squid4.hoops.hoops.ne.jp
Connection: close

HTTP によるリクエストが不正です.可能性のある問題は以下の通りです:

リクエスト方法が指定されていないか,あるいは不明です.
URL がありません.
HTTP 識別文字列がありません (HTTP/1.0).
リクエストが長すぎます.
POST/PUT リクエストにおいて Content-Length がありません.
ホスト名に不正な文字が使われています: アンダースコアは使えません.

のように取得できませんのです。
アパッチじゃなくスクイドサーバーというの使ってるみたいなんですが、
この場合どないすれば良いでしょうか。
何を加えればよろしいでしょうか。
0245nobodyさん02/06/29 02:55ID:???
> スクイドサーバー

は
"Server: Apache/1.3.14 (Unix) mod_perl/1.24_01"
と返すのですか?
024624402/06/29 03:41ID:???
http://www.hoops.ne.jp/help/a/faq11_03.html

ここにスクイドって書いてありますけど、
なんなんでしょうか、これ。
0247nobodyさん02/06/29 07:58ID:???
http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&newwindow=1&safe=off&q=squid&btnG=Google+%8C%9F%8D%F5&lr=
0248nobodyさん02/06/29 11:29ID:nVQfumhW
#!/usr/local/bin/php -c /home/hoge/php.ini

↑こんな感じでCGI版PHPを起動しているのですが
-c 指定が効かずに /etc/php/cgi の php.ini が使われてしまいます.
# phpinfo()で確認

http経由でなくコマンドラインから上記スクリプトを実行してもダメでしたが
/usr/local/bin/php -c /home/hoge/php.ini -i
のようにphpを起動すると,意図通りのphp.iniを使ってくれました.

CGI版PHPで任意のphp.iniを使うことは不可能なのでしょうか?

環境は以下の通りです
PHP/4.0.3pl1
Apache/1.3.9
Debian/GNU Linux 2.2

0249uho!02/06/29 12:27ID:???
PHPを使ってBulknewsさんのへっどらいんを表示させたいのですがやり方がわかりません。
教えてください。
【Bulknews】
http://bulknews.net
0250nobodyさん02/06/29 13:27ID:???
知識ゼロでやらないで下さい。
やるにしてもリクエストが多いなら、
宮川たんに許可を取ってからにして下さい。
0251nobodyさん02/06/29 14:30ID:???
>>250
質問スレなんだから教えてやれや・・・。
0252nobodyさん02/06/29 15:04ID:???
0から教えるスレではないと思うが……。
0253nobodyさん02/06/29 21:39ID:???
何を実現したくて、そのためにここまではわかっていて、こうやってみた。
でも、こういう点でうまくいかない(こんなメッセージがでる)。
どうすりゃいい?
くらいの聞き方はしてほしい。
0254nobodyさん02/06/29 22:02ID:???
ZAKZAKとAsahi.comを表示させようとしています。
これはうちのサイトがニュースサイトだから、かなり個人的な。
Perlでならできた。だけど負荷が高いから一時停止してPHPに乗り換えようとしています。
これでいいですか、>>253さん?
0255nobodyさん02/06/29 23:15ID:???
251=254

       か?
0256PEAR太郎02/06/30 00:47ID:???
PEARを使用し開発しているのですが、Postgresのカーソルまわりでどうしても
答えが見つからないので、どなたかご存知の方おられましたらお知恵を
お貸しください。
以下のようなソースを書き、結果をブラウザーに出力しデバッグしているのですが、
すべての答えにDB_OK(データ無しだがSQL成功)が帰って来まして、どの答えにもデータがのって来て
くれません。どなたかPEAR上で、FETCHによりデータを取り出す方法をご存知無いでしょうか?

#同SQLはPSQLにてテストし、思い通りのデータが取り出せております。

$sql = "BEGIN WORK;";
$res = $db->query( $sql);
print_r( $res);
$sql = "DECLARE cur CURSOR FOR select * from data;";
$res = $db->query( $sql);
print_r( $res);
$sql = "FETCH 20 FROM cur;";
$res = $db->query( $sql);
print_r( $res);
$sql = "CLOSE bbs_cur;";
$res = $db->query( $sql);
print_r( $res);
$sql = "END WORK;";
$res = $db->query( $sql);
print_r( $res);
0257 ◆AngelBlk 02/06/30 00:54ID:???
>256
いや・・・なんていうか。
$resの中に何が入っているか勘違いしてるような。

http://pear.php.net/manual/ja/core.db.tut_fetch.php

この辺参照。
0258nobodyさん02/06/30 00:56ID:???
>>254
> これでいいですか、>>253さん?

#漏れは253氏ではないが...

誰が読んでも253氏の意図するところとは違う。
0259nobodyさん02/06/30 02:37ID:???
php4activescript.dll?(・ε・)
0260PEAR太郎02/06/30 10:40ID:???
>>257
普通にsql文に"select * from hoge"等とし、$resにDB_Resultが返って
来て、それに対してfetchする一般的な処理は理解できるのですが、
queryによって返ってくるのが、上記カーソルの例の場合DB_Resultではなく、
DB_OKばかりなのです。FETCHでDB_Resultが返って来てくれることを
期待したのですが・・・
0261Power02/06/30 16:32ID:I8dOrvMO
PHPで画面間でクラスを渡す方法ってありますか?
セッション変数とかで出来るのでしょうか?
0262nobodyさん02/06/30 17:06ID:???
すいません質問です。

レッツPHPの「PHPあぷろだ」を使いたいのですが、
ある特定の拡張子のみ(jpgとか)うp出来るようにしたいのですが、
どのようにすればよろしいでしょうか?

スレ違いだったらすいません
0263nobodyさん02/06/30 19:16ID:???
>>262
レッツPHPとやらのURLくらい書いておけよ

if($pos=="") $ext='xxx';//拡張子が無いときはxxx
↑この行があるが、これを見てピンとこないのか?
ちとは自分で考えれ
0264nobodyさん02/07/02 16:09ID:???
Alpha 2 of PHP w/ the Zend Engine 2 Now Available
0265nobodyさん02/07/02 16:40ID:xZuMtSlY
phpを使って
2ちゃんねるのdatファイルを読み込みたいのですが
どうしたらよいのでしょうか?
0266nobodyさん02/07/02 16:43ID:???
>>265
かってにHTTPクライアント実装して。
0267nobodyさん02/07/02 16:46ID:xZuMtSlY
>>266
要約すると
素人にはお勧めできない
ってことですか?
0268初期不良02/07/02 16:54ID:LBDwMoL/
>>265
ふつうに fopen とか
http://www.php.net/manual/ja/function.fopen.php
0269nobodyさん02/07/02 19:17ID:mUq62rt1

$site = 'http://aaa.bbb.ccc.com';
print "<a href=\"$site\">ABC</a>";

これってエスケープしないで書く方法ってないの???
Perlはあるのに。。。
0270nobodyさん02/07/02 20:09ID:???
ヒアドキュメント
0271nobodyさん02/07/02 20:19ID:???
$site = 'http://aaa.bbb.com';
$format = '<A href="%s">ABC</A>';
printf($format, $site);
027224402/07/02 20:37ID:???
htmlって " つけなくたって大丈夫じゃん
つける必要ってあるんか?
0273nobodyさん02/07/02 21:30ID:mUq62rt1
どうも。
> つける必要ってあるんか?
ま、特に無いですけど、気持ち的にですね。
ちなみにヒアドキュメント以外でと思っていたのですが、
やはりないのでしょうか。prinfもちょこっとめんどくさいし。

perl風に print qq(<a href="$site">ABCDEF</a>); とかないんですかね〜?
027424402/07/03 00:08ID:???
一重引用符から一重引用符まで、
二重引用符から二重引用符まで、
となってるので、
echoなりprintなりする場合は、
' """"""""""""""""""""';
ということで。逆もまたアリ。
がんがれ。
0275おぶじぇくと歯垢02/07/03 01:39ID:J1Ir7H21
perl上がりでPHPいじってるんだけど
なんで くらす とか ふぁんくしょん とか使わなくちゃいけないのか
さっぱりわからん。
ふぁんくしょんっっ〜のは平たく言えばサブルーチンの事?
くらすにいたっては完全にわけわかめ。
0276nobodyさん02/07/03 02:11ID:+bzS6Uur
http://php.s3.to/bbs/fstyle/read2.php?url=http://pc.2ch.net/php/&key=1022999539&ls=50
0277 02/07/03 12:07ID:???
>>275
何回も繰り返し処理をするものや同じ記述をコード内に繰り返すものを
ファンクションでサブルーチン化、これ便利ね。
ある程度まとまった複雑な処理をする場合、これをクラス化して内部の
関数を取り出したり再利用することができるこれがクラスね。
で、PHPでどこまでのものつくるかしらんがちょっとした程度のもんなら
クラスなんてつかう必要はない。
0278nobodyさん02/07/03 14:10ID:???
>>275
クラス使う場合はオブジェクトな指向を思考してください。
0279nobodyさん02/07/03 14:22ID:???
>>277
(´-`).。oO(それ、クラスの使い方間違ってるような‥‥)
0280nobodyさん02/07/03 20:59ID:govsnHFj
phpにgdを組み入れてインストールしたいんだけど、どうにもうまく
動きません。gdは1.8.4
redhat7.3つかてるんだけどもgdは最初から組み込まれているみたい。
rpm -eしてからmake installとかして--with-gdとかにしてるんだけど
やるとapacheが起動しなくなります。へるぷ
0281nobodyさん02/07/03 21:00ID:???
超しろうとです。。よろしくお願いします。

form.html(下記参照)にてテキストボックスに
文字を入力し、submitボタンで送信しましたが、
display.php(下記参照)に何も表示されません。
原因としては何が考えられるでしょうか???

phpのバージョンは4.2.1です。


form.htmlのソース

<html><body>
<form action="display.php" method="POST">
<input type="text" name="fName" size="30"><br>
<input type="submit" value="submit">
</form>
</body></html>

<html><body>
<?
print $fName;
?>
</body></html>




display.phpのソース

<html><body>
<?
print $fName;
?>
</body></html>
0282nobodyさん02/07/03 21:16ID:R6CLh4kM
print $fName;
でなくて
print $_POST["fName"];
028328102/07/03 21:38ID:???
>>282
どうもありがとうございます!
早速明日会社でやってみます!!
0284nobodyさん02/07/03 22:57ID:???
>>281
スレの頭に原因が書いてあるので嫁。
phpinfo()くらい確認しろ。
0285Power02/07/04 11:27ID:6mswN9rJ
header関数がうまくいきません。

header("Location: http://www.php.net/");
上記を実行すると下記のエラーが発生します。
どして?

Warning: Cannot add header information - headers already sent by
(output started at /test/test.php:7)
0286nobodyさん02/07/04 11:48ID:???
そのままです。
検索すればすぐに解明できそうなものを。。。
0287nobodyさん02/07/04 15:12ID:???
>>285
headers already sent だから
0288nobodyさん02/07/04 18:10ID:???
こんにちは。returnで配列を返す時に、

送る側
return($list);

受け取る側
$list=$this->hoge();
while(list($key, $value) = each($list)) {
処理・・・・
}
と書いてますが、値が全然取れません。送る前に値が入っているのは確認しました。
明確に「配列だよ〜ん」と書く必要がありますか? それはPHPでどうやって・・・?
すみません、よろしくお願いいたします。
0289nobodyさん02/07/04 18:57ID:???
>>285
えっと、header関数が組み込まれる前になんか文字とか出力されてると
そんなエラーでまつ。とゆーわけでheader以前のprint文なんかを確認するとか、もしくは
<?php ?>で囲まれてない部分にスペースとかなんか文字がかかれているとエラーになるので
そんなのも確認してみまSHOW
0290あ02/07/04 19:53ID:bt2uu3Sk
あ
0291nobodyさん02/07/04 20:35ID:???
flockをかけるタイミングでベストなのは?
0292nobodyさん02/07/04 20:36ID:???
すみません、アクセスカウンタでの場合です。
0293nobodyさん02/07/04 23:42ID:dLbCkgI+
JavaScriptみたいに、PHPからブラウザプラグインの環境を知ることは、
できないですかね?できないですよねぇ…
0294nobodyさん02/07/05 00:52ID:???
サーバサイド
0295nobodyさん02/07/05 01:52ID:jFz8E7Y4
>288

whileの前で$listの中身確認してみては?
0296nobodyさん02/07/05 07:14ID:???
http://www.php.net/manual/ja/function.get-browser.php
これはどうなんでしょ
0297nobodyさん02/07/05 10:32ID:C173d5WV
PHPでキーボードイベントや
マウスクリックイベントを取得することはできないのですか?
getkeystate みたいなやつとか・・
0298nobodyさん02/07/05 10:42ID:???
クリップボードの中身を取得することはできますでしょうか
029929302/07/05 12:37ID:bJdk03R6
>>296
お、それFlashもわかるみたいでいいですね。
でも共用レンタルサーバなのでbrowscap.ini がインストールできない。。
0300nobodyさん02/07/05 12:40ID:???
>>298

氏ね
0301nobodyさん02/07/05 13:08ID:???
>>299
んなこたーない。
■ このスレッドは過去ログ倉庫に格納されています