【待望】PerlユーザのためのPHP入門
見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。 >496
ぉぉやってみたら確かにマッチした。さんくすこ。
PHPだと’^’って反転する意味なのですか・・・?
なんか小さな幸せを発見したw
ぁぁぼけてすまそ。。。
文字クラスの反転記号ですね。記憶から全く遠のいていますた。
(PHPの独自拡張なのかとさえ思ってしまったw)
もう一度勉強し直し逝ってきま _| ̄|○
>>481
で、どのへんまでできた?
なぜかおれも作るハメになってしまって、
BNFで定義しきれないPerlを無理やりBNFレベルで定義中なんだけど。
そこまでPerl詳しくねーんで困ってる。
parrotのライブラリにPerl6のパーサーやってるっぽいんだが、、むずい。
だれか、なんちゃってPerl BNF定義した人おらんですか。。 ガク
コンテンツか。。ツールじゃないのね。。シツレイ 質問君です。すいません。
idはadmin、passは111111だったとして、
test.php?id=admin&pass=111111と入力します。
test.php内で
idとpassの値を受け取るには、$id=param[id]でしたっけ? extract($_GET);
$_GET["id"];
$_GET["pass"]; >>505
ここ読みました。
http://php.s3.to/off.txt
これも対策済まれている方が多いことですが、
Warning: REG_EBRACK in
eregi関数で文字比較するとき、全角の「ー」の2バイト目が半角では“[”になるのが原因らしい・・
簡単な解決方法ありますでしょうか?
>>501-502
いや、俺もツール考えてみたんだわ。
PHPなら文法定義しているの発見したんだけど
Perlは見つからないんだよね。。。
perly.yにあるyacc文法も読んだんだけど
文法以前に字句解析どうしようって感じで。 >>506
extract() するなら、$_GETでアクセスする必要ないかと…
register_globals=off がデフォになったのは、
未初期化の変数が汚染されたりとか
セキュリティ面の問題が利便性より重要だったからではないのかなぁ
なので、extract()するならその配列の安全チェックをしてからのほうが良いかと。 >>506後半
内部エンコーディングをEUCかUnicodeにする。
入力変換をautoにする。
これで、内部では、EUCかUnicodeになるので、その手の問題に遭遇しない。
海外製ソフトでSJISはいいことがない。 入力変換はHttpInputだけなので、ファイルを読むときなどはMb_かjcode.phpで
内部エンコードにそろえてやる必要があると思います。
list()でログファイル(5MB程度)を参照して検索などを作るとき、
fopen()
flock()
Fclose()
しなくてもログファイルの破損などは起こらないでしょうか?
書き込み中はロックしてますが、list()中はロックしないとします。 >>511
listでファイルは参照できないはずだが???? 正規表現でマッチできないけど?
どこがおかしいの?
//10桁の1...と12桁の2...の配列がある。
$str = array('1111111111','222222222222');
//10桁以上、10桁以下の(要は10桁のみ)数値パターンを配列$resultに格納したい。
$hoge = preg_grep("/[0-9]{10,10}/",$result);
//結果、両方でてきちゃう。どうして?
print_r($result);
よろしこ。
>>513
それだと
"hoge1234567890hage"とかにもマッチする。
数字で始まり10個目の数字で終わるなら
$result = preg_grep("/^[0-9]{10,10}$/",$str); $result = preg_grep("/^\d{10}$/",$str);
でもいい >>514,515 イ奄様
有難うございます。なるほどよく分りました。
しかも、問題が間違えているにもかかわらずよく理解してくださいました。
重ねて御礼します。
出したかった問題は、こうでした。
$result = preg_grep("/[0-9]{10,10}/",$str);
まぁ、間違ってんだから訂正は要らないんだけどね・・・。
それは perl でも同じ結果だろうなと。
perlとPHPで結果が違うのかと思ったよw 質問してもいいですか?
Perlの「undef」に相当するPHPの関数は何ですか?
マニュアル検索しても見つけられなかったのです。
スレ違いでしたらスルーでお願いします。 Perlだと文字列の置換をしたときに置換されたものが$1などの変数に代入されますよね。
PHPでも同じことは出来るのでしょうか? >>520
自己レスです。
preg_match_allで出来ました・・・
他にいい方法があれば知りたいです。 自作関数に渡した引数は、Perlでは$_[0],$_[1]...に、
JavaScriptではarguments[0]...に、入るじゃないですか。
PHPでは何に入るのでしょうか?
もしかして必ず function x($a,$b,$c) の様にする必要があるのでしょうか?
何とかして引数を配列として扱いたいのです。 >>522
function ほらよ ($配列) { print_r($配列); }
ほらよ(array('a', 'b', 'c')); >>523
有難う御座ります。
PHPって関数名や変数名に日本語使えたんですね 驚きました。 http://f13.aaacafe.ne.jp/~mugen/perlvsphp/top.html
よろしこ。 >>530
Shift_JISでスクリプトを書いてはいけない理由、
どうしてもShift_JISで書きたい場合はどのPHPをインストールすべきとか
mb_string周りのPHP.iniの設定の仕方、設定のオーバーライドの方法を解説して欲しい。
あと、PerlにもHTML埋め込みを行う方法がいくつかあるよ。 >>530
俺もPerlはあまり好きじゃないが
>認めざる終えません。
なんて文章書く人の言語構造をむしろ疑いたい。 >>532
その真珠のヴァージョンは何ですか?
requireを使用するとか笑わせる答えじゃないですよね?
>>533
>しかし、CやJavaなどと比べPerlの方が極力型を意識しない言語仕様
>になっているというのは認めざる終えません。
あーそんな風に書いてたんだね。そのうち、なんとか汁。
# 真珠批判やってるサイトって他にもあるもんだねー。 perlにおいて、csvファイルを配列に取り込み、複数項目(カンマ区切りの2列目と3列目)でソートをかける為に
下記のような方法を取っていたのですが、
これをphpで行う場合、multisortでは1項目でのソートしか出来ないと
マニュアルに記述されていますが、どのような処理でなら可能でしょうか?
@DATA = sort { (split(/,/,$b))[1] <=> (split(/,/,$a))[1] || (split(/,/,$a))[2] <=> (split(/,/,$b))[2]; } @DATA; >>530
あまり真面目に見ていないけど、もっと説得力ある文章になるくらい
たくさんプログラムを作ってみた方が良いんじゃないかな。
今の状態だと言語の違い以前に本当にプログラムを作った事が
あるんだろうかと疑いたくなるよ。
>>535
気にすんな ASPユーザですが、PHPへの移行への許可は頂けますか? perlとPHPのどっちが偉いかとかいった下らない話題につき合うつもりはないが
http://f13.aaacafe.ne.jp/~mugen/perlvsphp/page7.htm
↑を MVC と呼ばれては碇浸透
コンテンツとデザインの分離スレにちょっと鯉 >>350 >>540
そいつはマジメに運営してないからほっといていいよ。 PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
…といいつつ、かく言う私も、PHPに乗り遅れまいと必死だが…。(^^;)
↑もう5回くらい見たんだが。しかも全部IDが同じだ・・・見間違いだよな? 最近やっとphpの配列は、perlの配列のリファレンスだと考えればいいんだとわかった。
んで、phpで関数に配列を引渡すときは、配列のコピーのリファレンスを渡していると考えればいいとわかった。
だから、phpのこれは
$array[$index] = $value;
perlのこれに対応するわけじゃなく
$array[$index] = $value;
これに対応しているわけで
$array->[$index] = $value;
phpのこれは
$array = array($val1,$val2,$val3);
perlのこれに対応している
$array = [$val1,$val2,$val3];
なのでphpのこれは
function f($array){
.......
}
perlのこれに対応するわけだったんだね。
sub f{
my $array = [@{$_[0]}];
.......
} Perlのlast関数にあたるものはPHPのbreak関数かと思いますが、
next関数にあたるものは何になるのでしょうか?
ご教示いただけますと幸いです。 >>545
関数じゃないよ。制御構造と呼んでくれくれたこら >>544
おれがPHP使い始めたころと同じこと考えとるな
きっと次は$がいらないんじゃないかとか
printした時に自動で配列表示して欲しいとか
正規表現や無名関数使いずれーとか
便利な関数がイパーイあってええねとか
クラスがPerlよりはおしゃれだとか
↓ 日本語を変数名に使えるようにすんなよとか
リファレンス変数とか可変変数で戸惑うとか
多重継承できないってなんだよとか
DBはいいなとか
↓ 0.0.1のバージョンアップでコアに新機能を加えたあげくにエンバグって何よとか
デフォルトでハッシュな配列はステキですねとか
array_map_recursive()きぼんとか
↓ perl使いがPHP使いに成ってもスキル低いのには変わらないけどな。
PHP覚える時間と暇があれば、JavaとかCが使えるようにスキル磨け。 スレの内容を勝手にまとめてみたのでうpするよ
俺様タンのレスぶっこ抜いただけなので
だめなようならすぐ消します。
txtだけどhtmlにリネームしてくだせ。
http://bebe.run.buttobi.net/up/src/be_1673.txt.html HEAD内のひとつめのSTYLEタグは不要なので消しておk できんか・・rubyでも同様の文法はあるんだけどなぁ・・。
ヒアドキュメントは、インデントが崩れるので大袈裟でちょっと扱いにくい。 ヒアドキュメントは当然ながら、qqも必要ないもん。 このスレの意思とは逆なんですが、
php経験があり、perl未経験です、
perlスクリプトを眺めているのですが、どうもわからない構文が多々あります。
サブルーチン if ($hoge && $> == 0);
↑これってどういう意味を表しているのでしょうか?
ifの前にサブルーチンが存在するのと、
$hoge && $> == 0 の意味がわからんです。 $>はuid
$hogeが真かつrootで実行されている時だと思う
> ifの前にサブルーチンが存在するのと、
Perlの基本的な変体文法なので入門書読め perlでハッシュの値を出力すると何故か「1/8」になってしまうんですがこれはどうすれば直せますか? 亀だが
>566
$foo=%hoge;
print $foo;
ってなってんじゃね
鯨のハラワタが散らかってるとか言われる部分だから気にするな
perl嫌になてきた
だからといってphpも嫌だぜ
Lispでもはじめようぜ
早くもPHPユーザのためのPerl入門スレになりつつあるな 基礎PHPという教本を読みながら問題を解こうとしているんですが、まったく理解できなくて
悩んでいます。
何方か指南していただけないでしょうか?
問題の内容は以下に、
内容
フォームからPOSTのメソッドを利用して「ユーザー名」と「パスワード」を送信する。
受信したファイルでは「ユーザー名」と「パスワード」の妥当性を判断してメッセージを出力する。
条件
データ送信用ファイル:input.html
データ受信用ファイル:check.php
input.htmlには2種類のテキストボックスを配置させる(txtNameとtxtPassword)
check.phpでは以下の4種類のメッセージを出力させること
ユーザー名とパスワードの組み合わせが正しい場合「認証成功!」
ユーザー名が存在しない場合「ユーザー名が存在しません」
ユーザーは存在するがパスワードが誤っている場合「パスワードが間違っています」
ユーザー名またはパスワードのいずれかが空白の場合「ユーザー名またはパスワードが未入力です」
check.phpにおけるユーザー名とパスワードの組み合わせは以下のとおりとする。(3ユーザー分)
ユーザー名:guest admin shs0000
パスワード:goma adm 0000
スクリプト内での以下の配列に格納し、プログラムによって判断を行うこと。
ユーザー名:$arrUser $arrUser = array(・・・・);
パスワード:$arrPass $arrPass = array(・・・・);
ヒントでfor,if文を使うとあります。
どうかお願いします。
ここに神がいることを祈ります。
これ
↓
$a1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ./";
$a2=substr($a1,int(rand(64)),1).substr($a1,int(rand(64)),1);
$cryptpass = crypt($pass,$a2);
をPHPで同じことさせるにはどうしたらいいのでしょうか・・・
int(rand(64)) => rand(0, 63)
これだけ代えればいけるんじゃね? >>572
あなたは神だ。
ありがとうございました^^
本当助かりました。 >>570
まずPerlでかけるのか?
かけないなら質問スレいってこい 漠然とした質問で申し訳ないが
単なるテキストファイルをincludeするだけだったら
SSIとPHPとどっちがサーバ負荷が少ないかな?
基本同じくらい
ただ、組み込むモジュールmod_includeとmod_phpではmod_phpの方が断然メモリ食う >>576
遅くなったがありがトン
すでに構築されてるサイトを引き受ける事になったんだけど
SSIだらけだったんでちょっと気になってね
PHPの方が利便性良さそうなんで移行しようかと思ったけど静観かな
&ReadParse;
while (($key,$val) = each %in) {
って言う良く見るPerlをphpで書き直すと?
extractだとPOSTとGET両方は拾えないみたいですし。
キーごとに処理を分けるのは、phpではどうしたら?
教えて下さい神様。 if(isset($_POST)) {
while(list($key, $val) = each($_POST)) {
//POST変数が存在する数だけループ $key $valで所得->処理
}
}
if(isset($_GET)) {
while(list($key, $val) = each($_GET)) {
//GET変数が存在する数だけループ $key $valで所得->処理
}
}
かな?後、
import_request_variables("GPC","{re_ とか何か接頭辞}");
を使うとGET,POST,COOKIEを一度に変数へ展開できる。
Perlの方が良く解らないので見当はずれだったらごめん。 ありがとうございます。
上述の方法でやってみます。
助かりました! >>578だとgetだろうがpostだろうが
すでに%inに入ってる訳だがその辺は良いのか?
>>579
俺はPHPはイマイチなんだが、$_POSTか$_GETを判別して別のハッシュに入れ
そのハッシュをeachした方が良くね? >>581
Perlでいうハッシュ=連想配列:$QUERY{$key} = $valで、
$_POSTや$_GETは既に判別された後のハッシュと同じと解釈してますが、
実際どうなんだろう? いや、ループの前に$_POSTでも$_GETでも1つにしちまえば
ループ自体が1つに出来るっていう話 >>584
そんな便利なのあるんだな
元質問者じゃないが勉強になったよ DMYHMS形式をエポック秒に変換したいんだすが、
Perlのtimelocal()的なものがphpでありますでしょうか? お前は風大左衛門かw
こんな感じでどうだす?
mktime(HH,MM,SS,mm,dd,yyyy); 文字列の小数点以下を削除しようと思って、("3.1415"→"3")
$PI = ereg_replace("\.\d*", "", $PI);
とすると、31415になってしまいました。perlの
s/\.\d*//;
だとうまくいくのですが、何かPHPでの注意点ありんすか? perlちとPHPとで、正規表現がちがうでよ。
$PI = ereg_replace("\.[0-9]*", "", $PI);
$PI = preg_replace("/\.\d*/", "", $PI);
こんなんどうだべ? >>590
ズッポシです!ありがとうございました。 PHPのエラー処理は、以下の三つくらいがあげられますが、
どれを使うのが一番なのでしょうか?
・tryとcatch
・set_error_handler
・PEAR_Error
自分は、try catchが一番いいと思いつかっています。 ∧_∧
( ・∀・) | | ガガッ
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←>>416
/ ←>>343 【話題】なぜ日本人は世界中でモテモテなのか!?日本人の魅力について外国人100人に聞いてみた【最強】
https://www.youtube.com/watch?v=P4UD7b6h2KM 【話題】なぜ日本人は世界中でモテモテなのか!?日本人の魅力について外国人100人に聞いてみた【最強】
https://www.youtube.com/watch?v=P4UD7b6h2KM ぜんしろうは、せんずろうと言われるが、この歳になればみんなせんずろうだ。 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
UT147M7AKH ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆