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

【PHP】初心者コーナー 

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。02/01/21 03:21ID:???
長島も阪神のコーチになった。
仕方ない、人気のないPHPを応援してやる。 

データベース禁止 MySQL PostgreSQL はどっかいけ。
純粋にPHPプログラミングだけ。
初歩的な事ならWebProg板の誰かが素早く教える。
もちろんPerlプログラマーも手伝ってくれ。
ほんじゃ質問してみ。

 >>2-9 誰か情報かいてくれ。
0159nobodyさん02/11/03 03:53ID:???
>>158
別にすごいから秘密にしたいってわけじゃないよ。
2chに書き込みをするスクリプトなんだけど
いたづらで悪用されたら、こまるから、
秘密にできたらいいなって思ってん。
0160nobodyさん02/11/03 04:17ID:???
>>159
> 2chに書き込みをするスクリプトなんだけど

悪用以外に用途が思い浮かばない。
0161nobodyさん02/11/03 04:19ID:???
>>160
えー嘘やん。そんなん、もう公開してるし、どうしよう。
0162nobodyさん02/11/03 04:20ID:???
フリーでエンコード出来るやつがあった気がする
ただZend Encoderと違って速くはならないらしいけど
0163nobodyさん02/11/03 04:53ID:???
>>162
APC (ALTERNATIVE PHP CACHE) というのかな?
でもこれって実行側で環境をインストールせやなあかんみたい。
これやと逆にユーザ対象が狭まれ過ぎて、配付する意味がなくなるわ…。
それに少し古いみたいで、惜しい。
0164nobodyさん02/11/04 22:59ID:???
質問させていただきます〜bbsなスクリプトを作ってます。

./foo.php  (メインファイル)
./subject.txt  (現在存在するログファイル名が書いてある。 一行に一個。)
./dat/xxxxxxxx.dat  (subject.txtに書いてあるログファイル)

subjectのarray[i]を読んで、そこに書かれてるxxxxx.datてゆーのをdatディレクトリから探して表示、
を繰り返すわけなのですが、、、、

Warning: file("./dat/1036411589.dat ") - Invalid argument in 〜
とゆーような感じでdatのあとに半角スペースが入ってしまうんです。 よって読めないと。

ereg_replace()してもダメでした・・・
配列の仕様ってヤツなのでしょうか? そして回避法はあるんでしょうか?
お願いします。
0165nobodyさん02/11/05 10:20ID:iexiejZJ
subject.txtの内容をfile()で配列にしているのなら、
もう一度、マニュアルを読んでみよう。
file()は、\nを除去しないと書いてあるよ。
よって、trim()でもつかうのがよろし。
016616502/11/05 10:24ID:iexiejZJ
>>164
あと、subject.txtに「表示させたいログファイル名」ではなくて、
「現在存在するログファイル名」だけがかいてあるのなら
./dat/を直接readdir()した方が楽でない?
0167名無しさん02/11/05 16:04ID:???
>>163
CVSから最新版とってこれたような。
0168nobodyさん02/11/05 16:50ID:???
>>167
pear/PECL/APCに最新版があるヨ

pear/PECL/APC Cache機能
pear/PECL/APD Debug機能というかプロファイラ
pear/PECL/OPC Optimizer機能(今日レポジトリが出来たみたい-まだ枠組みだけだけど)

これからが楽しみ :)
0169nobodyさん02/11/05 16:59ID:???
>>165-166
ありがとうございます!

> 改行記号はついたままと なります。
て書いてましたね・・汗
ついでにtrim()の存在も知らなかったので大変勉強になりました〜! ありがとうございました!
017016402/11/05 17:03ID:???
レス漏れ
readdir()ってディレクトリの見えないディレクトリで使えるかどうか分からなかったので頭に入れてなかったっす。
あとでちょっち試してみます。
0171nobodyさん02/11/05 18:02ID:WIPa8/Vj
文字列をPOSTで別のPHPスクリプトに送るとき
半角スペースや「"」などの文字が含まれているとそれ以降が消えてしまいます
addslashesを使って「\"」にエスケープしても「\\」と文字化けします
どうやってデータを渡せばよいのでしょうか?
0172nobodyさん02/11/05 20:25ID:Dn6gflHK
>>171
php.iniでmagic_quotes_gpcがonになっていると、
COOKIE,POST,GETで渡された値の中の
これらの文はは勝手にエスケープされる。

ので、
php.ini でmagic_quotes_gpc = off
にするか、
.htaccessで
php_flag magic_quotes_gpc off
にする。

あと、stripslashes() という函数もあったような;
0173nobodyさん02/11/05 20:55ID:WIPa8/Vj
>172
すみませんちょっと説明不足だったようですが
勝手にエスケープされたものをstripslashes()で取り除いても
正常に受け渡しができなくなります。
「aaa"bbb"」→POST→「aaa」
「aaa\"bbb\"」→POST→「aaa\\」
フォームからは正常にエスケープされた文字列が受信できます
環境がおかしいのでしょうか?
対策としては正常に受け渡しできる文字に置換して
受信側で元の文字に戻すということですけど・・・
0174nobodyさん02/11/05 21:28ID:???
PHPのVerが4.2.3の場合はバグ
0175nobodyさん02/11/06 01:26ID:EhYZ0bVt
PHPを1から始めたいのですが、何から始めればよいですか?
サーバースペースはまだ探していないので、local環境で始めてみたいです。

OSはWindows2000かLinux(Red Hat)です。

とりあえずwin2kでやってみようと思って、
phpdevやphpのインストーラ(win用)は落としてみたのですが、
使い方がいまいちわかりません。

初心者は何から始めればよいのでしょうか?
0176nobodyさん02/11/06 01:31ID:???
>>175
ApacheかIISかAnHTTPD
017717302/11/06 07:19ID:yWgDH7Dp
>174
4.2.2に戻してみましたがかわりませんでした・・・
0178PHP ◆DQN/AO/IPw 02/11/06 09:25ID:???
>>175
PHPは1から始めるよりも4から始めた方がいい。
017917302/11/06 17:19ID:???
やっと自己解決
htmlspecialcharsで変換してPOSTすれば
消えずに送信できました
0180nobodyさん02/11/07 11:41ID:QEt0uw4x
PHPでPerlのHTML::Templateみたいなライブラリってないでしょうか
単純な置き換えだけでなくてIFとかLOOPとかあるような・・・
0181nobodyさん02/11/07 11:59ID:Go7yQUbZ
>>180
while (hoge) {
?>
aaaa
<?php
}
0182nobodyさん02/11/07 12:29ID:???
>>180
Smarty
0183nobodyさん02/11/08 01:14ID:Veqht0/Q
>>175
PHPを始めたいとのことですが、やはり「なぜPHPを始めるの?」
という質問に答えられるかどうかがポイントではないでしょうか?
その答えがご自分の中にあるのであれば、それに必要な処理や道筋を
立てて、そのプロセスに必要な関数や仕組みを試行錯誤でやることです。
そうすれば、徐々に覚えることができます。
0184nobodyさん02/11/09 07:47ID:???
Webサイト制作初心者スレで質問したところ、こちらで聞いてみろと
促されたので質問させて下さい。↓は初心者スレからのコピペです。

現在、XHTMLで表示部分を記述しているCGIスクリプトが少ないので
自分でスクリプトを作ってみようと思っています。しかし、色々と
検索しているとPerlよりもPHPの方が動作も軽くていいようなので
PHPでスクリプトを作ろうかと思ったのですが、HTML(XHTML)以外
知らない人間がいきなりPerlではなくPHPを覚えようというのは
無謀なのでしょうか?下らない質問ですみませんが教えて下さい。

#Jsは多少知っています。
0185nobodyさん02/11/09 10:59ID:X+rmQU/4
>>184
こういう本で勉強
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1321-2

そのあとはPHPのオンラインマニュアルを見れば簡単に書ける

何事も基礎が大事
0186nobodyさん02/11/09 11:14ID:E2/H+5gT
>>184
PHPとても簡単
0187nobodyさん02/11/09 11:24ID:???
>>185
>何事も基礎が大事
言われて納得。確かにそうですよね。ありがとう御座います。
PHPやPerlの前に基礎の基礎をしっかり固めたいと思います。
0188連続ですみません02/11/09 11:26ID:???
>>187
そう言えるように頑張ります。
0189nobodyさん02/11/09 11:39ID:rznkVAE5
どこで訊いて良いのか判らないので取り敢えずここに来ました。
サイトを見るのにパスワードとユーザ名を要求されるようになってしまいました。
知らないうちに会員制に移行してたらしいのです。
こうなった以上、もう見るのは不可能なんでしょうか?
0190nobodyさん02/11/09 12:14ID:???
会員になれば閲覧できるでせう。
0191nobodyさん02/11/10 11:26ID:QiAM6QEO
if(eregi("(サポート)", $name)){
echo '管理人の名前は使用できません。';
}

サポートと言う文字を入れると
Warning: REG_EBRACK: in C:\test.php on line 296
みたいなエラーが出るのですがなんででしょうか?
管理人やWebmasterではちゃんと表示されるんですが。
0192nobodyさん02/11/10 11:29ID:???
Shift_JISだと「ー」でひっかかったりするけど
019319102/11/10 12:27ID:???
>>192
どうやら長音記号「ー」のせいみたいですね。
メーリングリストに同じような話題が出ていました。
http://ns1.php.gr.jp/pipermail/php-users/2001-December/004497.html
019419102/11/11 05:10ID:???
stristr関数を使えばとりあえずOKだって事にさっき気が付きました。
0195nobodyさん02/11/22 03:31ID:klMrTIO/
質問です。例えば
SELECT CODE, NAME FROM TABLE1 ORDER BY CODE
とポスグレに流したら、100件帰ってきます。

PHP3で pg_Result($rtn, 80, name)ってすると、80番目が帰ってきますよね。
この時、ポスグレのカーソルは先頭から80回フェッチしているんですか?
0196nobodyさん02/11/22 11:25ID:???
perlから移行中なんですが、ちょっと疑問があります。
print と echo は、まったく同じものでしょうか?
ちょっと違うのかな? 
どっちでもいい事かもしれませんが気になりまして
0197nobodyさん02/11/22 12:31ID:???
>>196

激しく既出。
0198nobodyさん02/11/22 12:55ID:???
>>197
おい、既出みたけど答えになってないぞ。
気になるな。
0199nobodyさん02/11/22 13:01ID:???
だって、このスレは初心者が答えてるんだもん。
0200nobodyさん02/11/22 14:15ID:???
>>196
echo がいいと思う。
たぶんprintとechoの挙動が違うのは連結の時違うと思います。
0201nobodyさん02/11/22 14:46ID:2PtBJ1DA
>>196
printは関数。echoは文
echoは()がいらないので多用している。
0202nobodyさん02/11/22 16:22ID:???
printも()いらんでしょ?
0203nobodyさん02/11/22 16:25ID:???
> print()は実際には関数では(言語構造です)ありません。
> このため、引数を括弧で括る必要はありません。
http://www.php.net/manual/ja/function.print.php
0204nobodyさん02/11/22 16:30ID:2PtBJ1DA
>>202-203
そうだったのか。そうしたら ますます両者の違い側下欄。
0205bloom02/11/22 16:30ID:ouswKb0x

http://www.agemasukudasai.com/bloom/
0206nobodyさん02/11/22 16:35ID:???
Perlから移行する人もいるし、いろいろな方法を提供しているだけでは?
Cのprintfも使って良いわけだし。
0207nobodyさん02/11/22 16:38ID:???
内部レベルまで考えると違うのかもしれんが
このスレタイのようにいわゆる初心者ならば
どれを使っても変わらないだろう。
0208nobodyさん02/11/22 16:44ID:???
>>204
echo print "test data\n";
してみ。
echo echo "test data\n";
も試してみれ。

if(!print("stdout check OK!")) die();

0209nobodyさん02/11/22 18:28ID:???
System.out.println("stdout check OK");
0210version02/11/22 21:56ID:+Mj4l0eA
PHP4.2.3をPHP4.2.2にバージョンダウンさせたいのですが、
どうすればよいか分かりません。
Red Hat Linux 7.2にPHP4.2.3をソースからコンパイルして
インストールしました。それで、本を買って、さぁ勉強しよう
と思ったら、その本がPHP4.2.2の本だったので、
同じバージョンにさせたいのです。
この場合ってどうすればよいのでしょうか?インストールされた
ファイルを探し出して、全部削除とかしてから4.2.2をインストール
するのですか?教えてください。
0211PHP ◆DQN/AO/IPw 02/11/23 00:15ID:???
<?php
/* echo の方が早いね */

function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$str = "De man cyaan seh dat, aya.\n";

$start = getmicrotime();
echo "<span style=\"display: none\">";
$i = 0;
while ($i < 50000) {
echo $str;
$i++;
}
echo "</span>";
echo "echo: <b>". (getmicrotime() - $start) ."</b><br>\n";

$start = getmicrotime();
echo "<span style=\"display: none\">";
$i = 0;
while ($i < 50000) {
print $str;
$i++;
}
echo "</span>";
echo "print: <b>". (getmicrotime() - $start) ."</b><br>\n";

/* ローカルでテストしてね*/
?>
0212マニュアル嫁 君02/11/23 00:22ID:eY1CU9cS
http://jp.php.net/echo
0213nobodyさん02/11/23 13:54ID:???
どうもPerlの癖でついついPrint書いちゃいますね。
echoのほうが良さそうなのでecho使うようにします。
0214nobodyさん02/11/23 16:53ID:dkREGMIE
FORMタグを使ってPOSTメソッドで通信

PHP では入力された値は直接変数に格納されます。これはPOSTデータも
GETデータも、Cookie データも、FORMも同じです。

その変数は連想配列です。
$HTTP_POST_VARS
$HTTP_GET_VARS
$HTTP_COOKIE_VARS
0215nobodyさん02/11/23 18:44ID:???
何が言いたいのか。
0216nobodyさん02/11/23 20:33ID:UbdTqBEx
PHP触ったことないです。
これから触ってみようと思うのですが
個人でPHP学ぼうと思ったらWEBサーバーが必要なんでしょ?
みんなレンタルサーバーとか使ってんの?
それともインターネットのプロバイダがPHPサポートしてんですか?
スタンドアローンでうごかしてるとか・・・
0217nobodyさん02/11/23 20:53ID:???
>>216
初心者スレだから答えてあげると、
・apacheをインストール
・PHPをインストール
これでローカルで動かせる。
具体的な設定方法は検索すればわかるでしょう。
021821602/11/23 21:02ID:UbdTqBEx
>>217
やっぱりそうですか
実は私もServletをスタンドアローンで動かしてる・・・
0219nobodyさん02/11/23 21:03ID:u57L3WN3
「PHPをCGIモードでインストール」ってどういう意味なんでしょうか?
0220nobodyさん02/11/23 21:40ID:???
>>219
そのまんまでしょ。
意味がわからないならCGIとは何かを勉強する必要がある。
mod_phpとかmod_perlも一緒に調べるとよくわかると思う。
0221nobodyさん02/11/23 22:09ID:dkREGMIE
PHPでgetメソッドを使って通信したい
0222nobodyさん02/11/23 22:10ID:???
初心者さんでもマニュアルすら読まない人は助けてもらえませんよ♪
0223nobodyさん02/11/23 22:27ID:???
PHP日本語マニュアル
http://jp.php.net/manual/ja/
0224nobodyさん02/11/23 23:13ID:???
phpは、HTMLに埋め込んでだいたいは使いますよね。
また、完全CGI(HTMLへの送受信をしない?)として使えますよね。
何が言いたいんだ?

普通は
HTML+php (掲示板などへの書き込み)→php鯖で処理してその結果を→HTML+phpに表示

postメソッドなどの通信
post/getで通信 →php鯖で処理してその結果を →post/get?で通信
0225nobodyさん02/11/23 23:19ID:???
アタマ整理してから書き込んでね♪
0226nobodyさん02/11/24 00:10ID:???
初心者が質問し、初心者が解答する
0227nobodyさん02/11/24 00:20ID:???
formを受け取るかどうかはphp.iniで設定出来るんですよね?

php.iniの設定が書いてるWebサイトキボンヌなのです
0228nobodyさん02/11/24 00:34ID:???
formを受け取んないのか?
0229nobodyさん02/11/24 00:43ID:???
ついでなのれす

グローバルレジスターくらいいじれりゃ十分やけど。。
0230nobodyさん02/11/24 00:45ID:???
>>229
は?
0231nobodyさん02/11/24 00:55ID:???
register_glovals = On
0232nobodyさん02/11/24 02:32ID:???
電波が棲みついたな。
0233nobodyさん02/11/24 09:20ID:???
は?には(゚д゚)ハァ?を
0234nobodyさん02/11/24 13:28ID:???
PHPって演算子のオーバーロードとか出来る?
無くても別に困らないんだけど、気になったので・・・
0235nobodyさん02/11/25 00:32ID:???
>>234
困らないんだったらマニュアルみ。
http://jp.php.net/manual/ja/
0236nobodyさん02/11/25 05:45ID:???
元質者じゃないが、
いつのまにオーバーロードをサポートしてたんだ・・・・?
つかサンクス>>235 & マニュアル嫁>>オレ
エセOOつかえねーと思ってたが、PHP5も楽しみだな
02372302/11/25 18:50ID:???
>>235
オンランのソースは一通り目を通したはずなんだけどなぁ・・
結局、見つかりませんでした。

>>236 の言ってるのは、オブジェクトのオーバーロード?
0238nobodyさん02/11/26 13:14ID:???
まともなPHPの質問は【PHP】質問スレッド でお願いします。
Part5 http://pc.2ch.net/test/read.cgi/php/1031721334/l50

【PHP】初心者コーナー では初心者のアホっぽい質問を受け付けております。
初心者の人はマニュアルをざっとご参照のうえで質問してみてください。
http://jp.php.net/manual/ja/
0239nobodyさん02/11/26 16:56ID:???
どの程度がアホっぽいのでしょうか?
マニュアル以上まとも未満の質問の例を教えてください。
0240nobodyさん02/11/26 17:51ID:???
register_globalsはおやつに入りますか?
0241nobodyさん02/11/26 19:16ID:???
>>239
アホッぽさの条件
1)変数とか制御構造とか基本的なことを理解していない
2)マニュアルにズバリ書いてあることを、独特の言い回しで質問。
3)HTMLとJavaScriptとPHPの区別が付かない
0242nobodyさん02/11/26 20:12ID:???
>>240
register_globals もちろんおやつです。

>>241
だいたいそんな感じですが、
初歩的な質問なのである程度理解しててもいいです。

高度な質問が入った場合は【PHP】質問スレッド 誘導してください。
http://pc.2ch.net/test/read.cgi/php/1031721334/l50
0243nobodyさん02/11/26 21:16ID:???
>>241

それは厳しくない?
マニュアル読める力があれば、2chでわざわざ質問しなくても自己解決出来るでしょ。

このスレはこれから始める人用だと思うな。
CGIって何?
phpって何?
モジュールphpって何?
インストール時のトラブル
phpでこれをやりたいんだけど出来る?
0244nobodyさん02/11/26 22:03ID:???
質問させてくださひ…。

あるSJIS文字列(1バイト2バイト文字混合)を受け取った際に、数字とアルファベット以外を
1バイトずつ区切って、HTML数値エンティティ形式に変換して出力するXMLサーパントがあります。
たとえば、

私はPHPが好き(かも)です

という文字列は、

?E;???CD;PHP;??AA;?D;???AB;???A9;??E0;???C5;??B7

と返されます。
この返された文字列を元のSJISに戻したいのですが、何かスマートな方法はありますでしょうか?
024524402/11/26 22:08ID:???
すみません、吐き出される文字列は

?x8E;?x84;?x82;?xCD;PHP;?x82;?xAA;?x8D;?x44;?x82;?xAB;?x28;?x82;?xA9;?x82;?xE0;?x29;?x82;?xC5;?x82;?xB7

でした…。
0246nobodyさん02/11/26 22:08ID:???
>>244
ヒント: XMLのはエンコーディングはUTF-8と決められているらしい
0247nobodyさん02/11/26 22:17ID:???
if($flag){
  register_globals='おやつ';
}
0248nobodyさん02/11/26 22:50ID:???
if(register_globals=="おやつ";){
print "
    ,――、
   / ̄ ̄l|
   ■■-っ
    ∀`/
 __/|X/\
Ё|__ | / |
   | У  |
ンナコターナイ
";
}
024924402/11/27 00:05ID:???
あぁっ、もう、激しく化けちゃっててスミマセン。

>>246
ありがとうございます。一筋の光が遠くの方に見えてきました。

$str = "¥x8E¥x84";
echo $str;

の場合はちゃんと「私」と表示されるのに、&#x8E;&#x84;から
preg_replaceで置換した文字列だと表示されないのはなんででしょう…?
0250nobodyさん02/11/27 01:23ID:???
>>248
必死だなw
0251nobodyさん02/11/27 01:39ID:???
>>248
タモさん必死だな
0252nobodyさん02/11/27 11:53ID:???
>>249
ereg_replace はダメか?
025324402/11/27 21:16ID:???
>>249
ereg_replaceでもうまくいきませんでした…

$str1 = "\x8E\x84";
$str1 = mb_convert_encoding($str1, "EUC-JP", "Shift_JIS");
echo "str1= " . $str1 . "<br>\n";

$str2 = "&#x8E;&#x84;";
$str2 = ereg_replace (";", "", $str2);
$str2 = ereg_replace ("(&#)", "\\", $str2);
$str2 = mb_convert_encoding($str2, "EUC-JP", "Shift_JIS");
echo "str2= " . $str2 . "<br>\n";

とした場合、出力結果(EUC-JPのhtml)は

str1= 私
str2= \x8E\x84

となります。どこがおかしいのでしょうか…サッパリわかりません。・゚・(ノД`)・゚・。
0254nobodyさん02/11/27 22:31ID:wgGugnNo
$str2 = preg_replace('/?x/','%',$str2);
$str2 = urldecode($str2);
0255nobodyさん02/11/27 22:32ID:wgGugnNo
↑?=&#
025624402/11/27 23:22ID:???
>>255
アドバイスありがとうございます。実は

$str2 = preg_replace ("/&#x([0-9a-fA-F]{2});/", "%$1", $str2);
$str2 = urldecode($str2);

とかでも試していて、正しく表示されることは確認しています。
これが一番スマートなカンジでしょうか?

ところで、>>253の$str1はナゼそのままで正しく表示されるのでしょう?
そーゆーもの?
0257nobodyさん02/11/27 23:57ID:iBP1PmSK
このスレの住人では対応出来ない!!
0258nobodyさん02/11/28 00:07ID:???
"\x84\x8E"は2バイトです。'\x84\x8E'だと8バイトです。
そんなもんです。
■ このスレッドは過去ログ倉庫に格納されています