トップページ⇒php
593コメント196KB

【待望】PerlユーザのためのPHP入門

■ このスレッドは過去ログ倉庫に格納されています
0001俺様03/02/27 15:17ID:tJsRCtRD
見事Perl→PHPへの脱皮に成功した俺様が
両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
0285nobodyさん03/03/27 11:21ID:???
>>284
あー例が悪かったですね。丁度身近にあったので出しちゃいました。
要はマッチした部分を簡単に再利用できないか?という質問です。
つまり、Perl の $1, $2 に相当するモノって何だろう、ということです。
0286nobodyさん03/03/27 11:25ID:???
\\1,\\2
0287nobodyさん03/03/27 12:02ID:???
>>286
\\1, \\2 ってどう使うのでしょう?
マッチングの後に、print \\1; とかやったらエラーになりました…。

再度、google 様に問い合わせたら、
if (ereg("(.*)(\#[^ \t\n\r\f]+)", $FROM, $regs)) {
  $name = $regs[1];
  $trip = $regs[2];
}
でいいみたいですね。調査が甘くてすみません。
0288nobodyさん03/03/27 12:52ID:???
自己レスです。
\\1, \\2 は
$url = ereg_replace("(http://ime.nu/)(.*)", "http://\\2", $url);
こうでしたか。
レスありがとうございました。>>286
0289nobodyさん03/03/27 14:34ID:???
magic quotes gpc なるヤツでここしばらく悩んでた。
勝手にエスケープされるなんて、まるで想像もつかなかった。
Perl → PHP への道、俺にとってはかなり遠い。でもガンガルsage

ところで tr/ab/cd/ って PHP ではどーやんの?
0290イ奄様03/03/27 16:23ID:???
>>289
$hoge=strtr($hoge, "ab", "cd");
0291nobodyさん03/03/27 16:32ID:???
>>290
サンクスコ!!
0292nobodyさん03/03/28 04:03ID:???
俺様ありが�d

C/C++とPerlとVBとPascalとASM位しか知らなかったのだが、
よーやくPHPに手が伸びそうでつ。
0293nobodyさん03/03/28 06:56ID:NA3CJ6rA
>>281
教えていただき、ありがとう。

システム側で設定したPHP動作設定値を変えられないとなると、
ISPで利用する場合、大きな壁になりそうですね。

例えばアップロードファイルのサイズは2Mまでだから、それを超え
るものをアップさせる仕様に対応できない。
PHPでWebアプリ組んでも、いつかはユーザ要件に対応できずに全部
Perl等に書き直す時が来るかも、ということでしょうか?
0294nobodyさん03/03/28 08:06ID:56FSUIhD
>>293
>>293
WEB用途にPHPを使うなら、.htaccessでphp.iniの設定を上書きする方法があります。
アップロードサイズの制限を変更するには、
upload_max_filesize と post_max_size の値を上げることで対応出来るかな。

PEAR のインストールは、多分 include_path に PEAR のpathを追加するだけでOKだと思う。
0295nobodyさん03/03/28 18:00ID:56FSUIhD
既出だけど、三項演算子のネストではまった事あったのでそのときの教訓。
Perl と PHP では、演算子の優先順位に結構違いがあるので
一度目を通しておこう。

$r =
 ($foo < $bar) ? "LESS" :
 ($foo > $bar) ? "GREATER" :
 "EQUAL";
0296nobodyさん03/03/28 18:49ID:56FSUIhD
>> 282
php -l script.php

-w は、error_reporting(E_ALL); に相当?(かな?)
Taint モードについては、私も前に探したことあるけどPHPには見つけられなかった。
汚染チェックは、自主的にそういう習慣を身につけるしかないのかな。
0297nobodyさん03/03/28 19:00ID:???
@sortdata = sort { (split(/\,/,$a))[2] <=> (split(/\,/,$b))[2] } @hogehoge;
Perlでいう↑みたいなことはPHPではどうやればできますか?
0298nobodyさん03/03/28 19:19ID:???
>>296
おぉ、回答ありがとう。
0299nobodyさん03/03/28 20:35ID:/IEo7+Sn


      ∧_∧          _ _     .'  , .. .  ∧_∧
     ( ´_ゝ`)   _ .- ― .= ̄  ̄`:, .∴ '     ( >>297)
    /     '' ̄      __――=', ・,‘ r⌒> _/ /
   / /\   / ̄\-―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
 _| ̄ ̄ \ /  ヽ \_              |  /  ノ |
 \ ̄ ̄ ̄ ̄ ̄ ̄ \__)              , ー'  /´ヾ_ノ
  ||\            \          / ,  ノ
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄          / / /
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||          / / ,'
  ||  ||              ||        /  /|  |
                       !、_/ /   〉
                           |_/

0300nobodyさん03/03/29 13:38ID:CQcFf7wk
>>294
回答ありがとう。
0301nobodyさん03/03/29 18:28ID:???
%hash = map { $_ => 1 } @list;
とか、
@hash{@list} = (1) x @list;
Perlでいう↑みたいなことはPHPではどうやればできますか?
0302phpformperl03/03/29 20:26ID:kc16+nkl
手本になるようなきれいなPHPコードどれかしってまっか?
やっぱxoopsでっか?
0303nobodyさん03/03/29 22:26ID:???
>>302
XOOPSを積極的に弄っている身としては残念なことだが、
決してきれいなコードではないし、流れを追うのも面倒。
過去のしがらみとかあるので大きく変えられないことや、
複数人で作っているが、細かい部分で明確な規定がある訳ではないので
コア、標準モジュール、果ては標準外の勝手モジュールまで入れると
コードの統一はされていないと思っていい。
フレームワークとしては非常に緩いのでモジュールのコードまで
含めるのは本来フェアではないのだが。

あとJpGraphもコードはちょっとね。便利に使わしてもらってますけど。
0304phpfromperl03/03/30 13:14ID:fNA6Ajxw
>>303
サンクス
とりあえず手本にさせてもらいます。
いろいろ仕掛けをつけやすそうだし。
ほかよりましなようなので。
0305nobodyさん03/03/30 21:07ID:???
sub test {
 my $num = 0;

 return sub {
  $num += shift if @_ == 1;
  return $num;
 }
}
Perlでいう↑みたいなことはPHPではどうやればできますか?
0306nobodyさん03/03/31 00:21ID:???
>297,301,305
PHPでFP(関数プログラミング)でもやりたいのかな?

lambda 代わりに create_function,
array_(map|reduce|filter) 後、array_walk, usort。
で、大体御希望の事は出来ると思います。

ただし、…前にも書いたけど &&, || が倫理値を返したり、
…かといって三項演算子を使おうとすると今度は演算子の優先順位が違ったり、
他にも変数のスコープ等、細かな違いがいろいろ有るので、
PHPでのFPはあまりお勧めしない。素直にパラダイムシフトした方が良いと思う。

例えば >305 だと、

function test(){
 $num=0;
return create_function('$x','global $num;$num+=$x;return $num;');
}

$num がグローバルに置かれるので、これでは要件を満たせていない。
カプセル化したいのなら、クラスを作る。

class Test{
 var $num;
 function Test(){ $this->num = 0; }
 function add($n){ $this->num += $n; }
 function getNum(){ return $this->num; }
}
0307nobodyさん03/03/31 00:21ID:D273gBu9
# 突っ込まれるかもしれないので、一応補足。
現行のバージョンのPHPでは、すべてpublicメンバになるので、
$numへ直接アクセスすることが可能。(Perlのオブジェクトでも同様だよね)
現状(PHP4)では、完全に隠蔽することは出来ない。…はず。(PHP暦浅いので自信なし。フォロー求)

# http://www.php.net/ZEND_CHANGES.txt を読んだところ、
# zend2 engine/PHP5? では private が使えるらしい。
0308名無しさん@Emacs03/03/31 17:22ID:mhlggPCn
perldoc モジュール名、perldoc -f 関数名に該当する PHP のやり方って
なんでしょうか?
0309nobodyさん03/03/31 18:46ID:???
php.netで検索する。
0310nobodyさん03/04/01 02:03ID:???
ブラウザのアドレス欄に
php.net/関数名
pear.php.net/モジュール名
0311nobodyさん03/04/01 18:35ID:???
倫理値w
0312nobodyさん03/04/01 19:21ID:???
ぷりぃず、晒さないでw
訂正 s/イ/言/
0313nobodyさん <>03/04/01 20:18ID:iGZ3zwAc
>310

ローカルには作れんもんでしょうか?
ADSL でも結果が出るまでの "待ち" が気になるの。
0314生徒103/04/01 23:58ID:2arYjAuZ
foreach (@pairs) {
($name,$value) = split(/=/);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, "sjis", "", "z");
$value =~ s/&/&/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/"/"/g;
$value =~ s/\r\n/<br>/g;
$value =~ s/\r/<br>/g;
$value =~ s/\n/<br>/g;
$in{$name} = $value;
}

こんなのはどうやってますか?
0315nobodyさん03/04/02 01:58ID:???
>>314
ネタ?
0316nobodyさん03/04/03 16:31ID:???
> 倫理値w
右か左を返すんだよ
0317nobodyさん03/04/08 14:23ID:???
PHPってx演算子ないの?
print "-" x 10;
みたいな
0318nobodyさん03/04/08 15:41ID:???
str_repeat()が近いよ。
0319nobodyさん03/04/08 22:26ID:???
perl にあって PHP にないもの。
PHP にあって perl にないもの。

…って何かないかな?
0320nobodyさん03/04/11 00:44ID:fBEofA1c
年寄りデザでつが,これから極めるのならPerlとPHPどっちでつか?
ただPerlと違い,初心者向けの本がPHPにないところが痛いでつが。
0321nobodyさん03/04/11 00:47ID:???
でつ厨にはどちらも無理でつ
0322nobodyさん03/04/11 03:50ID:???
”極める”のなら、Perlの方が面白い。
0323nobodyさん03/04/12 05:30ID:sfZex8vW
>>320
私も年寄りですが、Perl、PHPを使ってメシ食ってます。

まったくの初心者が始めるならPHPですね。
HTTPプロトコルをあまり意識する必要がないから、
ブラウザに文字を表示させるのは簡単です。
そのコードも単純明快に理解できます。

一方Perlは、ブラウザに文字を表示させるためには
表示する処理の前に、何行かのおまじないを書かな
ければいけません。
そのおまじないを理解しようとすると、初心者では到底
理解できないので「難しい」ということになるかもしれません。

PHPの本は初心者用がたくさん売られていますよ。
大丈夫です。
0324nobodyさん03/04/12 06:02ID:???
Perlの方が幾分ややこしい気はするね。
Perl->PHPは入りやすいらしいけど逆は結構厳しい。
ちなみに、私は後者です…。
032532003/04/12 22:12ID:3Lo6Ghrc
>>323
Thanksです。
PHPだと入門書でいきなりECサイトまで行ってしまうのですが,
(チャット作成までなんとかついていっている程度)
Perlだと入門書で息切れするような。。。(とてもECサイトまでナンテ
行きませんよね?)
ただ,やはりデザなので自分一人でECサイトまではやりません。
外に頼むまでもない事を自分でやれるようにするという感じです。
(極めるという表現が不適切でした。)
データバのソートとか,Webの自動更新とか。
そのあたりでPerlとPHPはどうかな?と思ったわけです。
0326nobodyさん03/04/13 00:12ID:???
@array = ($query =~ /([0-9a-fA-F]{4})/g);

これをPHPで表現するとどうなるんですか?
0327nobodyさん03/04/13 00:12ID:???
>>323
おまじないってなんだ?CGIとして使ったときのヘッダーのことか?
0328nobodyさん03/04/13 00:56ID:???
>>327
print "Content-type: text/html\n\n";
だと思われ
0329nobodyさん03/04/13 01:06ID:???
>>328
ヘッダーじゃん。
0330nobodyさん03/04/13 01:12ID:???
おまじないって言ったら1;が浮かぶ
0331nobodyさん03/04/13 03:24ID:Ba9KZRzY
PHPって配列厄介だなぁ。
0332nobodyさん03/04/13 03:55ID:???
>>331
PHPの配列の何が厄介なん??? ほれいってみ。教えてあげるよ。
0333nobodyさん03/04/14 01:24ID:???
>>331
僕PHPはじめて1週間だけど配列はだいたい分かったので
配列ですが僕はすぐ理解できたので
331さんの厄介とこが分かれば教えてあげますよ
0334nobodyさん03/04/14 01:28ID:???
オレは>>333の日本語が分かりづらい
0335nobodyさん03/04/14 01:42ID:???
>>334
同じく
0336nobodyさん03/04/14 02:16ID:???
>334
禿デゥ
0337nobodyさん03/04/14 14:30ID:???
>>331=>>334=>>335=>>336 反応しすぎ。
ぶっちゃけ、331はバカだな。(w
0338nobodyさん03/04/15 16:55ID:JlWa+G1C
phpでperlでいうところのpackageの作り方教えてください。
0339nobodyさん03/04/15 18:07ID:???
331は、ハッシュと配列が一緒なのが気に入らないらしい。あと、
いちいちarray_*系の関数を使わないといけないのも面倒らしい。
0340nobodyさん03/04/15 19:26ID:1VLAH3RO
>>338
phpは名前空間を定義できない。
0341山崎渉03/04/17 12:01ID:???
(^^)
0342山崎渉03/04/18 15:30ID:???
(^^)
0343山崎渉03/04/20 06:02ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0344?03/04/27 10:50ID:7vWz7FBG
EUCの配列、文字列をSJISにするのはどういう風にやるの?
0345nobodyさん03/04/27 10:56ID:???
やっぱりpackageはC++でいう名前空間にあたるの?
0346nobodyさん03/04/27 11:36ID:aZMHQklX
見るべし!
http://zoetakami.fc2web.com/
0347( ´Д`)/< 先生!!こんなのが有りますた。03/04/27 12:27ID:???
http://www.yamazaki.90.kg/hankaku/hankaku07.html
http://yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku08.html
http://yamazaki.90.kg/hankaku/hankaku10.html
http://www.yamazaki.90.kg/hankaku/hankaku01.html
http://yamazaki.90.kg/hankaku/hankaku03.html
http://www.yamazaki.90.kg/hankaku/hankaku02.html
http://yamazaki.90.kg/hankaku/hankaku09.html
http://www.yamazaki.90.kg/hankaku/hankaku06.html
http://yamazaki.90.kg/hankaku/hankaku04.html
http://www.yamazaki.90.kg/zenkaku/index.html
http://www.yamazaki.90.kg/hankaku/hankaku05.htm
0348bloom03/04/27 12:29ID:3nPIuagT
http://homepage.mac.com/ayaya16/
0349ワッショイ03/04/27 17:54ID:???
http://www.atmarkit.co.jp/flinux/special/php5/php5a.html
もうひとふんばりっ!
0350nobodyさん03/04/28 22:57ID:3GKx/vUL
イスラエルとか言われると萎える
0351nobodyさん03/05/05 22:17ID:LIOD5Ueh
mb_convert_encodingが使えないサーバの場合は?
0352nobodyさん03/05/05 22:25ID:???
jcode.php
0353nobodyさん03/05/19 23:33ID:cX3VPQ/6
教えてください。
perlで言うところのwarnなんですが、
print error_log($test);
見たいな形でerrorログに$testの値を出そうと思ったのですがうまくいきませんでした。。
どなたかperlでいうところのwarn関数のPHP版を教えてください。
0354nobodyさん03/05/20 01:11ID:???
>>353
よくわかんないけど trigger_error とか?
0355あぼーんNGNG
あぼーん
0356nobodyさん03/05/20 02:27ID:???
まぁ、胸張れるような場所でもないしな。
0357nobodyさん03/05/20 07:45ID:???
その発言しているサイトがある
インターネット全体からどれだけの犯罪者を出しているんだろうね…

2chから情報を得ておきながら悪口言う人間もいることだし
放置しても平気でしょ
0358nobodyさん03/05/20 10:19ID:???
日本人だって
殺人とかの罪犯す奴いるじゃないか

そしたら外国人は
日本人はみんな犯罪者だと思うのか?
0359山崎渉03/05/22 01:59ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0360nobodyさん03/05/22 12:59ID:???
open( LOCK, ">./lock/count.lock" );# ロック用のファイルを作る(※1)
flock( LOCK, 2 );# ファイルをロックする
open( COUNT, "./log/count.log" );# カウンターの値が入ったファイルを開く
$count = <COUNT>;# カウンター値を読み出す
close( COUNT );# カウンターファイルを閉じる
$count++;# カウンターを+1する
open( CTEMP, ">./log/count2.log" );# 更新したカウンタの値を別のファイルに一時的に書き出す(※2)
print CTEMP $count;
$ezcount = "";#カウントファイルの数字を絵文字に変換
for ($i = length($count) - 1; $i >= 0; $i --) {
$n = int(substr($count, $i, 1));
if ($n == 0) {
$ezcount = "<img localsrc=\"325\">" . $ezcount;
} else {
$ezcount = "<img localsrc=\"".(179+$n)."\">".$ezcount;
}
}
close( CTEMP );# 一時的に書き出したファイルを閉じる(書き込み完了)
rename( "./log/count2.log", "./log/count.log" );# 一時的に書き出したファイルを本来のファイル名にリネーム
unlink( "./lock/count.lock" );
flock( LOCK, 8 );
close( LOCK );
これをPHPにしたいのですが…だれかお願いします!
0361nobodyさん03/05/22 13:52ID:???
>>360
マルチおよび自分でやろうともしない。放置
0362nobodyさん03/05/25 01:54ID:YbAXJXvg
formから$_POST["name"]で値を受け取ったのですが、
値中の「"」と「'」がエスケープされてしまって、「\」がついています。
これは自分で取り除くしかないのでしょうか?
0363nobodyさん03/05/25 02:04ID:???
>>362
php.iniのmagic_なんちゃらを、off 詳細は誰かおながい
0364nobodyさん03/05/25 02:05ID:???
>>363
ありがと、やってみる
036536203/05/25 02:32ID:???
>>363
ローカルで出来なかったので、レンタル鯖にスクリプト設置して実験したら
やっぱり同じ現象がおこりました。・゚・(ノД`)・゚・。
自分で取り除いてみます…お騒がせしました
0366nobodyさん03/05/25 02:38ID:???
>>362
StripSlashes
0367山崎渉03/05/28 17:06ID:???
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0368あ03/05/30 22:54ID:Ey+u4zPh
ヒアドキュメントを使うと
print <<<EOF
<タグ>$a<タグ2>
EOF;
の<タグ2>が表示されないのって、どうすりゃいいの???
0369イ奄様03/06/02 11:34ID:EOTygtgq
>>368
print <<<EOF
<タグ>${a}<タグ2>
EOF;
0370あ03/06/02 23:18ID:9zPzvWqa
THANK!!!
0371nobodyさん03/06/04 00:53ID:1Jdo0O1g
jcode.phpでEUC半角カタカナをSJIS全角カタカナにしていのだが。
0372nobodyさん03/06/04 01:12ID:wjzhyKBb
http://homepage3.nifty.com/coco-nut/
・_・y━””
0373age03/06/08 17:42ID:cXeOp+rQ
age
0374_03/06/08 17:44ID:???
http://kame.kakiko.com/hiroyuki/hankaku_b01.html
0375 03/06/08 18:09ID:eRunpr9i
過去ログからのコピーです。http://natto.2ch.net/mass/kako/974/974478132.html

489 名前: 文責:名無しさん 投稿日: 2001/04/11(水) 17:25
 一般人なのに盗聴される、じゃなくて、「一般人だから盗聴される」んじゃないのかな?
 基本的にネタ集めのためにやってんなら、有名人のネタを盗むと、有名人は告発できるし、
そんなことされても当たり前だと思われるので告発しても信じてもらえる。
 そうでない人は、ここの途中の書き込みにもあったように「電波」扱いされるだけ。

 ただで、ネタを仕入れるんなら、一般人に限るでしょう。
 マスコミは自分らの無能さを恥じてほしいです。

 ちなみに私が盗聴されはじめたのは、芸能人にストーカーされ始めてからでした。
 そこからマスコミに広がって行った。
 だから余計「妄想」とか思われそう。
 友人に話したら完全に病気扱いされた。ストーカーって言葉がない時代だったしね。
 書いておいておいた小説のネタが、他人の原作でドラマ化されたときにはきれまくっ
たなあ。(一度や二度のことじゃないけど)
0376age03/06/13 23:55ID:nW6iX8p9
a
0377nobodyさん03/06/14 01:09ID:Zt1p4X90
>>371
http://www.php.net/manual/ja/function.mb-convert-kana.php
0378無料動画直リン03/06/14 01:10ID:K+P5CDjB
http://homepage.mac.com/norika27/
0379nobodyさん03/06/15 21:40ID:???
>362
http://jp.php.net/manual/ja/function.stripslashes.php
これじゃだめかい?
0380nobodyさん03/06/19 03:00ID:yyOItGJy
あ
0381nobodyさん03/06/19 19:42ID:???
HTMLとPHPコードを分離したいんだけど、
何か方法ありますか?perlでいうとこの
HTML::Template みたいなのとか。
0382nobodyさん03/06/20 00:47ID:???
>>381
【PHP】Smarty【Template】
http://pc2.2ch.net/test/read.cgi/php/1047225437/
038338103/06/20 01:29ID:???
>>382
thx!
0384nobodyさん03/07/03 21:53ID:???
perlのdefinedみたいな奴
変数の定義がされているかどうかの
チェックはどうやったらいいですか?

038538403/07/05 12:49ID:???
同名関数ありますた。スマソ
■ このスレッドは過去ログ倉庫に格納されています