見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
【待望】PerlユーザのためのPHP入門
1俺様
03/02/27 15:17ID:tJsRCtRD116俺様
03/03/04 10:17ID:SJwb4sM+117俺様
03/03/04 10:29ID:SJwb4sM+ 出力方法は何通りかあるので示しておきます。
自分が使いやすい方法を用いればよいだろう。
<?php
$title = "タイトル";
print "<html>";
print "<head>";
print "<title>$title</title>";
print "</head>";
print "<body>";
print "俺様のHTMLドキュメント";
print "</body>";
print "</html>";
?>
前も言ったように、CGI/Perlの場合は
print "Content-type: text/html\n\n";
こんなのが必要だったがmod_phpの場合は要らない。
上のスクリプトを書いてブラウザで開いてみれば
見事、俺様のHTMLドキュメントと出力される。
自分が使いやすい方法を用いればよいだろう。
<?php
$title = "タイトル";
print "<html>";
print "<head>";
print "<title>$title</title>";
print "</head>";
print "<body>";
print "俺様のHTMLドキュメント";
print "</body>";
print "</html>";
?>
前も言ったように、CGI/Perlの場合は
print "Content-type: text/html\n\n";
こんなのが必要だったがmod_phpの場合は要らない。
上のスクリプトを書いてブラウザで開いてみれば
見事、俺様のHTMLドキュメントと出力される。
118俺様
03/03/04 10:50ID:SJwb4sM+ 資源無駄使いって言われたので
混合させてまとめて記述しちゃうか。
<?php
$title = "タイトル";
echo "<html>"; //echoも出力命令の1つ。printと同じようなものと思って良い。
echo("<head>"); //今まで省略してたけど()を付けても構わない。printも同様。
//C言語にあったprintfも使える。%3dなど書式をいろいろ設定できる。
//printやechoと違い、()が必須なので注意。
printf("<title>%s</title>",$title);
printf("</head>");
print <<<EOD //ヒアドキュメント。HTML部分が長くてprintとか書くのが面倒なとき便利
<body>
俺様のHTMLドキュメント
</body>
EOD; //ヒアドキュメント終了
print "</html>";
?>
ヒアドキュメントはPerlでも使っていた人は多いでしょう・
Perlでは↓のように書くが、PHPではセミコロンの位置が変わっているので
間違えないように注意しよう(重要)。
print <<EOD;
...
EOD
混合させてまとめて記述しちゃうか。
<?php
$title = "タイトル";
echo "<html>"; //echoも出力命令の1つ。printと同じようなものと思って良い。
echo("<head>"); //今まで省略してたけど()を付けても構わない。printも同様。
//C言語にあったprintfも使える。%3dなど書式をいろいろ設定できる。
//printやechoと違い、()が必須なので注意。
printf("<title>%s</title>",$title);
printf("</head>");
print <<<EOD //ヒアドキュメント。HTML部分が長くてprintとか書くのが面倒なとき便利
<body>
俺様のHTMLドキュメント
</body>
EOD; //ヒアドキュメント終了
print "</html>";
?>
ヒアドキュメントはPerlでも使っていた人は多いでしょう・
Perlでは↓のように書くが、PHPではセミコロンの位置が変わっているので
間違えないように注意しよう(重要)。
print <<EOD;
...
EOD
119俺様
03/03/04 11:00ID:SJwb4sM+ 因みに、PHPはHTML内に埋め込むことができると言うのを
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
120俺様
03/03/04 11:11ID:hLFJ4wUF この利点を利用すれば
簡単なカウンタなら
カウント保存用の空ファイルさえアップしておけば
ほんの数行であっという間に出来てしまうのだ。
明日はファイル入出力をやろう。
簡単なカウンタなら
カウント保存用の空ファイルさえアップしておけば
ほんの数行であっという間に出来てしまうのだ。
明日はファイル入出力をやろう。
122nobodyさん
03/03/04 18:41ID:Nso2bqOx123nobodyさん
03/03/04 18:50ID:??? >122
ねずみ講じゃないの?
ねずみ講じゃないの?
124nobodyさん
03/03/04 18:55ID:QqzA7g89125nobodyさん
03/03/04 19:35ID:??? 香ばしいです、はい。
126nobodyさん
03/03/04 21:46ID:???OOの無いPHPを使う位なら俺はPerlを使う。
128俺様
03/03/05 10:25ID:RSVIcXg3129nobodyさん
03/03/05 10:41ID:???130俺様
03/03/05 10:50ID:RSVIcXg3 では、ファイル操作について簡単な説明をしておこう。
ファイルの開き方は、PerlではopenだったがPHPではfopenになる。
読み取りや書き込みなどのモードもPerlとは仕様が変わり
C,Java寄りになっているので注意しよう。
PHP:
$fp = fopen(filename, mode); //ファイルポインタの位置が返る
Perl:
open(FILE, filename); //返り値は正常時が1、失敗だと0
オープンモードの選択方法がPerlだと+>みたいのをファイル名に直接つけていたのが
PHPだと2つ目の引数として別に記述するようになった。
ファイルハンドラは引数に記述するのではなく、
返り値になったのでそこも注意しよう。
具体的な仕様はマニュアルを参照。
http://www.php.net/manual/ja/function.fopen.php
ファイルの開き方は、PerlではopenだったがPHPではfopenになる。
読み取りや書き込みなどのモードもPerlとは仕様が変わり
C,Java寄りになっているので注意しよう。
PHP:
$fp = fopen(filename, mode); //ファイルポインタの位置が返る
Perl:
open(FILE, filename); //返り値は正常時が1、失敗だと0
オープンモードの選択方法がPerlだと+>みたいのをファイル名に直接つけていたのが
PHPだと2つ目の引数として別に記述するようになった。
ファイルハンドラは引数に記述するのではなく、
返り値になったのでそこも注意しよう。
具体的な仕様はマニュアルを参照。
http://www.php.net/manual/ja/function.fopen.php
132俺様
03/03/05 11:07ID:RSVIcXg3 では超簡易カウンタを作ってみよう。
仕様としてはファイルcount.txtの1行目にカウンタ数値を書くだけのものだ。
まず予めcount.txtを作成して0を記述しておくこと。
<?php
$fp = fopen("count.txt","r");
//count.txtを読み出しモードで開く。
//$fpはファイルポインタであり、rの場合ファイルの先頭の位置が返される。
$count = fgets($fp); //改行かファイルの終端まで読みこんで$countへ代入。
fclose($fp); //いったん閉じる
$count++;
$fp = fopen("count.txt","w"); //書き込みモード
fwrite($fp,$count); //書き込み。
fclose($fp);
?>
<html>
<body>
貴方は<?php print $count; ?>人目の俺様の弟子じゃ。
</body>
</html>
仕様としてはファイルcount.txtの1行目にカウンタ数値を書くだけのものだ。
まず予めcount.txtを作成して0を記述しておくこと。
<?php
$fp = fopen("count.txt","r");
//count.txtを読み出しモードで開く。
//$fpはファイルポインタであり、rの場合ファイルの先頭の位置が返される。
$count = fgets($fp); //改行かファイルの終端まで読みこんで$countへ代入。
fclose($fp); //いったん閉じる
$count++;
$fp = fopen("count.txt","w"); //書き込みモード
fwrite($fp,$count); //書き込み。
fclose($fp);
?>
<html>
<body>
貴方は<?php print $count; ?>人目の俺様の弟子じゃ。
</body>
</html>
133俺様
03/03/05 11:16ID:RSVIcXg3 >>131
オマエモナー
オマエモナー
134俺様
03/03/05 11:25ID:RSVIcXg3 では明日はいよいよフォームの処理を行おう。
135俺様
03/03/05 11:27ID:RSVIcXg3 ちなみにレッツPHPにファイルを1回しか開かなくていいバージョンが書かれているな。
http://php.s3.to/counter/
同時アクセスの際の弊害が置きにくくなるからそっちの方がいいだろう。
flockもしておくこと。
http://php.s3.to/counter/
同時アクセスの際の弊害が置きにくくなるからそっちの方がいいだろう。
flockもしておくこと。
136俺様
03/03/05 11:56ID:5JBlRiko 因みに、PHPはHTML内に埋め込むことができると言うのを
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
137nobodyさん
03/03/05 13:34ID:E53JqQ+I PHPには「〜?〜:〜」に該当する関数等はありまつか?
下のようなのが沢山あるのでなるべくif文は使いたくないんです。
例1:(Perl)
printf "<a href=\"%s\" target=\"%s\">%s</a>\n",&link($a?$b:$c),$d?"_blank":"_top",$d?"新しいウィンドウで開く":($e?"次のページ":"更新");
下のようなのが沢山あるのでなるべくif文は使いたくないんです。
例1:(Perl)
printf "<a href=\"%s\" target=\"%s\">%s</a>\n",&link($a?$b:$c),$d?"_blank":"_top",$d?"新しいウィンドウで開く":($e?"次のページ":"更新");
138nobodyさん
03/03/05 13:39ID:??? 条件演算子としては、他に "?:" (または trinary) 演算子があります。 この演算子の動作は、Cまたは他の多く言語と同じです。
(式1) ? (式2) : (式3);
この式は、式1 がTRUEの場合に 式2 を、 式1 がFALSEの場合に 式3 を値とします。
と、PHPマニュアルからまんま転載してみる。
(式1) ? (式2) : (式3);
この式は、式1 がTRUEの場合に 式2 を、 式1 がFALSEの場合に 式3 を値とします。
と、PHPマニュアルからまんま転載してみる。
140俺様
03/03/05 14:02ID:5JBlRiko PHPによるHTTP認証のフックは、Apacheモジュールとして実行した時のみ 有効で、
CGI版では利用できません。Apache モジュールPHPスクリプトにお いて、header()
関数を使用して "Authentication Required" メッセージをクライアントブラウザに送る
ことが可能です。 これにより、クライアントブラウザにユーザー名とパスワードを入力する ウイ
ンドウがポップアップ表示されます。一度、ユーザーがユーザー名と パスワードを
入力すると、PHP スクリプトを含むその URL は、次回以降、 定義済みの変数 PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_TYPEにそれぞれユーザー名
、 パスワード、認証型を入力してコールされます。 定義済みの変数は、配列 $_SE
RVER および $HTTP_SERVER_VARS でアクセス可能です。 "Basic" 認証のみ
がサポートさ
れています。詳細は、 header()を参照下さい。
CGI版では利用できません。Apache モジュールPHPスクリプトにお いて、header()
関数を使用して "Authentication Required" メッセージをクライアントブラウザに送る
ことが可能です。 これにより、クライアントブラウザにユーザー名とパスワードを入力する ウイ
ンドウがポップアップ表示されます。一度、ユーザーがユーザー名と パスワードを
入力すると、PHP スクリプトを含むその URL は、次回以降、 定義済みの変数 PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_TYPEにそれぞれユーザー名
、 パスワード、認証型を入力してコールされます。 定義済みの変数は、配列 $_SE
RVER および $HTTP_SERVER_VARS でアクセス可能です。 "Basic" 認証のみ
がサポートさ
れています。詳細は、 header()を参照下さい。
141俺様
03/03/05 19:13ID:RSVIcXg3142nobodyさん
03/03/05 19:16ID:juhSxd8a143nobodyさん
03/03/05 21:23ID:??? つづきまだー?
145nobodyさん
03/03/05 22:51ID:??? $a : $b ? $c = 1;
PHPはこれ書ける?
PHPはこれ書ける?
146俺様
03/03/05 23:06ID:MFbIbSdy147nobodyさん
03/03/05 23:17ID:5JBlRiko >>145
三項演算子まともに使えない自作自演俺様晒しage
三項演算子まともに使えない自作自演俺様晒しage
150nobodyさん
03/03/06 00:48ID:??? ふふふ。ひっかかったか。
Perlは三項演算子を左辺値として使える。
って全然利用価値はないけど、知ってるか試しただけ。
Perlは三項演算子を左辺値として使える。
って全然利用価値はないけど、知ってるか試しただけ。
151nobodyさん
03/03/06 00:49ID:??? あぁ。$a ? $b : $c だな。・・
152nobodyさん
03/03/06 01:02ID:uZwldhHh >>150
ひっかかってた俺様晒しage
ひっかかってた俺様晒しage
155俺様
03/03/06 01:13ID:ZBXb+hSM157俺様
03/03/06 01:34ID:ZBXb+hSM わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
158nobodyさん
03/03/06 01:36ID:??? 俺様に、きもいストカー、スレ繁盛。 サラリーマン俳句
159nobodyさん
03/03/06 01:41ID:??? define("true",0);
160nobodyさん
03/03/06 01:42ID:??? さっき書いたもので十分。Perlは三項演算子(の2、3番目のやつ)が左辺値になれる。
なんと関数も左辺値にできる(ver 5.6辺り(?)以降から..)
my %hash;
sub hoge : lvalue {
my $key = shift;
return $hash{$key};
}
hoge('test') = 1;
print $hash{test};
なんと関数も左辺値にできる(ver 5.6辺り(?)以降から..)
my %hash;
sub hoge : lvalue {
my $key = shift;
return $hash{$key};
}
hoge('test') = 1;
print $hash{test};
162nobodyさん
03/03/06 01:52ID:??? ごめん。またもや失敗。
return を使ってはいけない。とのこと。
sub hoge : lvalue {
my $key = shift;
$hash{$key};
}
return を使ってはいけない。とのこと。
sub hoge : lvalue {
my $key = shift;
$hash{$key};
}
163nobodyさん
03/03/06 03:27ID:??? C(gcc 2.95.3-6 mingw)はperlと同じ挙動を示した。
こんな書き方があるとは、知らなかった。。
こんな書き方があるとは、知らなかった。。
164nobodyさん
03/03/06 07:56ID:??? わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
165nobodyさん
03/03/06 07:56ID:??? わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。わからない点が出てきた(汗
$a ? $b : $c = 1;
これは$aがまだ初期化されていないため
falseとみなされて$cに1が代入される。
ところが、
$a=true;
$a ? $b : $c = 1;
このようにしても$bには1が代入されていなかった・・・
ちなみにPerlの場合はちゃんと$bに1が代入されてました。
というわけでどうしてPHPだと代入されないのかを考えて見ましょう。
PerlとPHPの違いですね。
166nobodyさん
03/03/06 07:59ID:??? 粘着きもいお(○´∞`○)
167俺様
03/03/06 08:26ID:0wTJZFjp >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c;
しかし、いいかげんな仕様だね。
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c;
しかし、いいかげんな仕様だね。
168nobodyさん
03/03/06 08:29ID:??? >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c; >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c; >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c;
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c; >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c; >>161
http://www.php.net/manual/ja/language.operators.php
演算子の優先順位が
=より:?の方が高いから
$a?$b:$cの方が$c=1より先に評価されるはずじゃない?
でもこうやってみたら$aが真のときに
$bに1が代入されてたからやっぱ>>161のいう通りかな。
$a ? $b = 1: $c;
169イ奄様
03/03/06 09:07ID:??? これで勘弁してくれ
Perl
$a?$b:$c=1;
PHP
$a?$b=1:$c=1;
Perl
$a?$b:$c=1;
PHP
$a?$b=1:$c=1;
170俺様
03/03/06 09:53ID:0wTJZFjp では今日はフォームの受け渡しを書いておこう。
まずはhtml部分から。
<form action="../cgi-bin/test.cgi" method="POST">
名前: <input type="text" name="name" /><br>
性別: <br>
<input type="radio" value="男" name="sex" checked>男<br>
<input type="radio" value="女" name="sex">女<br>
<input type="submit" name="送信">
</form>
まずはhtml部分から。
<form action="../cgi-bin/test.cgi" method="POST">
名前: <input type="text" name="name" /><br>
性別: <br>
<input type="radio" value="男" name="sex" checked>男<br>
<input type="radio" value="女" name="sex">女<br>
<input type="submit" name="送信">
</form>
171俺様
03/03/06 10:10ID:0wTJZFjp Perlだとこうなる。
#!/perl/bin/perl
print "Content-type: text/html\n\n";
use CGI;
$q = new CGI;
print $q->param('name')."は".$q->param('sex');
まあ、cgi.pmがPerl5で標準に組み込まれるようになったので
かなり楽になっただろう。
cgi.pmを用いないとさらに面倒である。
#!/perl/bin/perl
print "Content-type: text/html\n\n";
use CGI;
$q = new CGI;
print $q->param('name')."は".$q->param('sex');
まあ、cgi.pmがPerl5で標準に組み込まれるようになったので
かなり楽になっただろう。
cgi.pmを用いないとさらに面倒である。
172俺様
03/03/06 10:17ID:0wTJZFjp PHPの場合だとこれでよい。
<?php
print $_POST["name"]."は".$_POST["sex"];
?>
ちなみにGET方式の場合は同様に
$_GETの配列に代入される。
$_REQUESTにはGET,POST関係なく
代入されてくれる。(ただし、安全じゃないという理由で推奨はされない)
<?php
print $_POST["name"]."は".$_POST["sex"];
?>
ちなみにGET方式の場合は同様に
$_GETの配列に代入される。
$_REQUESTにはGET,POST関係なく
代入されてくれる。(ただし、安全じゃないという理由で推奨はされない)
173俺様
03/03/06 10:29ID:0wTJZFjp http://www.php.net/manual/ja/ref.strings.php
文字列関数を見るとわかるがかなり便利な関数が標準で用意されている。
htmlspecialchars
特殊文字をHTMLエンティティに変換する
例えば、<を'<'に変えてくれるのだ。
タグとみなされずにすむ。
trim
文字列の先頭および末尾にあるホワイトスペースを取り除く
これもフォーム処理の際にはあると便利だろう。
こんなふうにすればフォームから受け取った全ての値に
簡単に処理を適用できる。
$_POST = array_map("htmlspecialchars", $_POST);
$_POST = array_map("trim", $_POST);
文字列関数を見るとわかるがかなり便利な関数が標準で用意されている。
htmlspecialchars
特殊文字をHTMLエンティティに変換する
例えば、<を'<'に変えてくれるのだ。
タグとみなされずにすむ。
trim
文字列の先頭および末尾にあるホワイトスペースを取り除く
これもフォーム処理の際にはあると便利だろう。
こんなふうにすればフォームから受け取った全ての値に
簡単に処理を適用できる。
$_POST = array_map("htmlspecialchars", $_POST);
$_POST = array_map("trim", $_POST);
174俺様
03/03/06 10:30ID:0wTJZFjp これでフォームもバッチリъ( ゚ー^)だろう。
175nobodyさん
03/03/06 11:23ID:??? a?b:c=1;
本来はエラーにすべきだけど、gccだと通るんだよな・・・三項演算子が左辺になりうる。
まあ-ansi -pedanticをつければエラーにしてくれるけど。
本来はエラーにすべきだけど、gccだと通るんだよな・・・三項演算子が左辺になりうる。
まあ-ansi -pedanticをつければエラーにしてくれるけど。
176175
03/03/06 11:28ID:??? s/左辺/左辺値/
177nobodyさん
03/03/06 15:41ID:??? いい加減な仕様とか言って・・
演算子の優先順位も、左辺値になるということも、
perlopにちゃんと書いてあるし。ちゃんとした仕様。
仕返しだ。
$a ? $b : $c = $d ? $e : $f = $g ? $h : $i = $j ? $k : $l = $m ? $n : $o;
演算子の優先順位も、左辺値になるということも、
perlopにちゃんと書いてあるし。ちゃんとした仕様。
仕返しだ。
$a ? $b : $c = $d ? $e : $f = $g ? $h : $i = $j ? $k : $l = $m ? $n : $o;
178俺様
03/03/06 16:42ID:SMJB497B179nobodyさん
03/03/06 17:01ID:??? PHPも、優先度は、=の方が上だから、そのままの結果。ではないのか?
180俺様
03/03/06 17:04ID:SMJB497B181nobodyさん
03/03/06 17:05ID:G2YpYyeT ◆ようこそ!!ピンクエンジェルです★
http://www.pink-angel.jp/betu/index.html
http://www.pink-angel.jp/betu/index.html
182nobodyさん
03/03/06 17:06ID:??? 本来はd=a?b:c;という形で使う者なんだから、=の方が低くて当然。
左辺値になるってのがおかしいんだよ(-_-;)
左辺値になるってのがおかしいんだよ(-_-;)
184nobodyさん
03/03/06 21:36ID:???180 名前:俺様 投稿日:2003/03/06(木) 17:04 ID:SMJB497B
>>179
>優先度は、=の方が上
ソースキボンヌ。
俺が調べた結果だと=の方が下だった。
181 名前:nobodyさん 投稿日:2003/03/06(木) 17:05 ID:G2YpYyeT
◆ようこそ!!ピンクエンジェルです★
http://www.pink-angel.jp/betu/index.html
182 名前:nobodyさん 投稿日:2003/03/06(木) 17:06 ID:???
本来はd=a?b:c;という形で使う者なんだから、=の方が低くて当然。
左辺値になるってのがおかしいんだよ(-_-;)
183 名前:nobodyさん 投稿日:2003/03/06(木) 19:06 ID:???
>>180
あぁ。最低から並べたものって書いてあった。うぅ。
182 名前:nobodyさん 投稿日:2003/03/06(木) 17:06 ID:???
本来はd=a?b:c;という形で使う者なんだから、=の方が低くて当然。
左辺値になるってのがおかしいんだよ(-_-;)
183 名前:nobodyさん 投稿日:2003/03/06(木) 19:06 ID:???
>>180
あぁ。最低から並べたものって書いてあった。うぅ。
185nobodyさん
03/03/06 23:54ID:aj5F0raF 教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?
186俺様
03/03/07 00:46ID:86BQl/fj >>185
実はそれに似たようなので、俺様も苦労したんだな〜
1<>32<>43<>2
3<>41<>443<>232
...
ってな感じでデータが入ってて
3列目(上だと43,443)だけでsortしたいなーって。
で、結局よくわからんかったから自己関数作った。
function cmp ($a, $b) {
$tmp1 = explode("<>", $a);
//文字列$a(="1<>32<>43<>2")を<>で区切って配列に代入
//例えば、$tmp1[0]=1,$tmp1[1]=32
$tmp2 = explode("<>", $b);
if($tmp1[2] == $tmp2[2]) return 0;
elseif($tmp1[2] > $tmp2[2]) return -1;
else return 1;
}
usort ($array "cmp");
//ユーザー定義の比較関数により値で配列をソート
まあ、usortの使い方とかはマニュアルで調べてクレイ。
http://www.php.net/manual/ja/ref.array.php
俺様のと若干違うようなので、もっと簡単な方法があるかも知れんが
参考までに。
実はそれに似たようなので、俺様も苦労したんだな〜
1<>32<>43<>2
3<>41<>443<>232
...
ってな感じでデータが入ってて
3列目(上だと43,443)だけでsortしたいなーって。
で、結局よくわからんかったから自己関数作った。
function cmp ($a, $b) {
$tmp1 = explode("<>", $a);
//文字列$a(="1<>32<>43<>2")を<>で区切って配列に代入
//例えば、$tmp1[0]=1,$tmp1[1]=32
$tmp2 = explode("<>", $b);
if($tmp1[2] == $tmp2[2]) return 0;
elseif($tmp1[2] > $tmp2[2]) return -1;
else return 1;
}
usort ($array "cmp");
//ユーザー定義の比較関数により値で配列をソート
まあ、usortの使い方とかはマニュアルで調べてクレイ。
http://www.php.net/manual/ja/ref.array.php
俺様のと若干違うようなので、もっと簡単な方法があるかも知れんが
参考までに。
187nobodyさん
03/03/07 00:46ID:??? 教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?教えて下さい。
配列@arrayに、'12-34','34-56'...みたいなデータが入ってて、-の右側でソートしたい場合、
@tmp = map { (split /-/)[1] } @array;
@array = @array[ sort { $tmp[$b] <=> $tmp[$a] } 0 .. $#tmp ];
でやってたんですが、同じことをPHPでやるにはどうしたらいいんでしょう?
188nobodyさん
03/03/07 03:08ID:??? 配列にしてからソートした方がよくない?
189nobodyさん
03/03/07 14:44ID:???190nobodyさん
03/03/07 16:22ID:??? >>185
$i = 0;
for($array[$i]) {
list($first, $second) = explode("-",$array[$i]);
$first[] = $first;
$secondt[] = $second;
$i++;
}
array_multisort($second, $first);
$i++;
while ($first[$i]){
$array[$i] = $first[$i] . "-" . $second[$i];
$i++;
}
PHP初心者スレで書いた奴を改善してみた。
$i = 0;
for($array[$i]) {
list($first, $second) = explode("-",$array[$i]);
$first[] = $first;
$secondt[] = $second;
$i++;
}
array_multisort($second, $first);
$i++;
while ($first[$i]){
$array[$i] = $first[$i] . "-" . $second[$i];
$i++;
}
PHP初心者スレで書いた奴を改善してみた。
191nobodyさん
03/03/07 18:15ID:??? >189
ソートの度になにかの処理をするって遅くならん?
ソートの度になにかの処理をするって遅くならん?
192$n日後
03/03/07 18:53ID:??? 現在時刻から$n日後を求めたいいいだけどprelだと以下
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time + $n*24*3600);
PHPだとどうなるんだ?
あのツェラーの公式だっけか?
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime(time + $n*24*3600);
PHPだとどうなるんだ?
あのツェラーの公式だっけか?
194nobodyさん
03/03/07 19:23ID:??? $i = 90;
$year = date("Y", time());
$day = date("n", time());
$month = date("j", time());
$hour = date("G", time());
$minute = date("i", time());
$second = date("s", time());
$timestamp = mktime($hour, $minute, $second, $month, $day + $i, $year);
print date("Y/n/j G:i:s", $timestamp);
まぁ別に変数を使う必要も無いわけだが。
$year = date("Y", time());
$day = date("n", time());
$month = date("j", time());
$hour = date("G", time());
$minute = date("i", time());
$second = date("s", time());
$timestamp = mktime($hour, $minute, $second, $month, $day + $i, $year);
print date("Y/n/j G:i:s", $timestamp);
まぁ別に変数を使う必要も無いわけだが。
195$n日後
03/03/08 13:58ID:NNyx9+/Y >>193 >>194
レスサンク!
ツェラーの公式とはまた違うか、・・・・。
PHPではツェラーの公式なんか使わなくても簡単に指定した日の
曜日とかも算出出来ちゃうんだね。
--抜粋--
また、カレンダー等でその日の曜日を知りたい時、「perl」では
Zeller(ツェラー)の公式を使って算出しなければいけませんが、
「php」では「string date (w , [timestamp])」とすると、
「timestamp」で指定した日にちの曜日を数字で返してくれます
(0(日曜)〜6(土曜))。極端な例を2点ほどあげましたが、
他にも便利な関数が数々あります。
--抜粋--
ttp://bin5.info/useful/php/php_02.html
レスサンク!
ツェラーの公式とはまた違うか、・・・・。
PHPではツェラーの公式なんか使わなくても簡単に指定した日の
曜日とかも算出出来ちゃうんだね。
--抜粋--
また、カレンダー等でその日の曜日を知りたい時、「perl」では
Zeller(ツェラー)の公式を使って算出しなければいけませんが、
「php」では「string date (w , [timestamp])」とすると、
「timestamp」で指定した日にちの曜日を数字で返してくれます
(0(日曜)〜6(土曜))。極端な例を2点ほどあげましたが、
他にも便利な関数が数々あります。
--抜粋--
ttp://bin5.info/useful/php/php_02.html
198nobodyさん
03/03/08 14:32ID:???201nobodyさん
03/03/08 15:37ID:???202nobodyさん
03/03/08 15:53ID:??? list($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time() + $n*24*3600);
205nobodyさん
03/03/10 16:59ID:??? つづきまだー
206&rlo;ega待期&lro;
03/03/10 17:03ID:EpMeREtC207nobodyさん
03/03/10 17:11ID:???208俺様
03/03/10 17:47ID:SvAZl1u/ そろそろネタ切れだ。
以上の知識でもうどんな物でも
Perl→PHPの移行はできるはずだ。
練習として誰かYomiサーチを移植してみよう。
以上の知識でもうどんな物でも
Perl→PHPの移行はできるはずだ。
練習として誰かYomiサーチを移植してみよう。
210nobodyさん
03/03/10 20:36ID:??? 俺様、ちょっち待てよ。
Yomiサーチの移植の続きやれよ。(w
Yomiサーチの移植の続きやれよ。(w
212nobodyさん
03/03/10 21:09ID:??? dbを触るところまでやってほしかったっす。
213俺様
03/03/10 22:09ID:SvAZl1u/ よっしゃ。じゃあMySQLまでやろう。
というか俺が今その勉強中だから
まあ(・∀・)つ目 オチャデモノンデマテ!
というか俺が今その勉強中だから
まあ(・∀・)つ目 オチャデモノンデマテ!
215俺様
03/03/10 22:26ID:KPB0lsuM >>214
(´Д⊂
(´Д⊂
レスを投稿する
ニュース
- 【W杯】ブラジルFWクーニャ、塩貝へ「これで俺らのことが分かっただろう」SNS投稿 「謙虚になれよ」が繰り返される曲流す ★2 [ネギうどん★]
- 【サッカー】塩貝健人、挑発されるも「仕方ない」 出番なしで…発言を弁解「弱いと言いたかったわけじゃ」 [王子★]
- 【W杯】ブラジルDF、塩貝に耳打ちした後、耳を触る ブラジルで「小僧」とあしらう意味 ブラジルFWは「ちっぽけな奴め!」 [ネギうどん★]
- 【W杯】ブラジルに敗れた森保監督「これからも世界一を目指して日本のために頑張りたい」★2 [ネギうどん★]
- 強豪オランダもPK戦でモロッコに敗れる…ドイツに続き欧州強国2チームが32強でまさかの終了★2 [王子★]
- 【円安】1ドル162円台まで下落 円相場が39年半ぶりの円安ドル高水準に ★2 [ぐれ★]
- 日本人「日本代表、惜しかった! ヒューストンの悲劇!」 これマジ?(´・ω・`) [592058334]
- 高市愛国レアアース、ついに始動。中国との対決姿勢鮮明に [668024367]
- ネトウヨ「高市総理を呼び捨てにするやつは人間としてダメ」 [834922174]
- 日本企業さん、日中関係の悪化でレアアースを必要量確保できず、やむを得ず製品に組み込み密輸してしまったことが発覚。これ誰の責任? [668024367]
- 吉田⭐シャドウミストレス⭐和朗🏡
- 長友佑都(39)「5度目のW杯は『青春』だった。そして青春が終わってしまって寂しい。森保さんを優勝監督にしたかった」 [683137174]