1:名無しさん@おーぷん:2015/01/30(金)13:19:01 CM7
需要ある?
12:名無しさん@おーぷん:2015/01/30(金)13:27:39 mmG
どのくらい教えてくれるの?
13:名無しさん@おーぷん:2015/01/30(金)13:29:48 CM7
>>12
どこからがいい?
つか俺も素人だし重度のめんどくさがり屋だから質問されても詳しいことは分からんけど
時間は暇だから適当な環境からやってもいいよ


14:名無しさん@おーぷん:2015/01/30(金)13:30:08 CM7
>>13
環境構築な
15:名無しさん@おーぷん:2015/01/30(金)13:31:01 6UD
>>14
PuppyLinuxでPHP環境つくるの教えて
16:名無しさん@おーぷん:2015/01/30(金)13:32:12 CM7
>>15
linuxならubuntuにしなさい
なぜなら今僕の手元にあるのubuntuしかないから
17:名無しさん@おーぷん:2015/01/30(金)13:34:04 6UD
>>16
よっしゃ
じゃubuntu立ち上げるわ
20:名無しさん@おーぷん:2015/01/30(金)13:40:16 CM7
>>17
windowsかvirtualBOXでubuntu動かすかどっちがいい?
21:名無しさん@おーぷん:2015/01/30(金)13:41:19 6UD
>>20
もう既にubuntuだけインストールしたハードディスクがあるから
それを立ち上げているよ
19:名無しさん@おーぷん:2015/01/30(金)13:38:22 6UD
次どうするの?
22:名無しさん@おーぷん:2015/01/30(金)13:42:27 CM7
じゃあubuntuでいいか
今インストールしてくるわ
23:名無しさん@おーぷん:2015/01/30(金)13:43:23 6UD
でも設定がわからないからネットに繋がってない

>>22
今からインストールするなら時間かかるのとちゃうのん
24:名無しさん@おーぷん:2015/01/30(金)13:46:08 CM7
>>23
ネットに繋がってなくてもPHP講座は出来るけど
つうかネットに繋がってる前提で進めたいんだが
さすがにつなぎ方からってのはめんどくさい
26:名無しさん@おーぷん:2015/01/30(金)13:47:11 6UD
>>24
ダウンロードは別マシンでするから
どこから何をダウンロードしてくればいい?
27:名無しさん@おーぷん:2015/01/30(金)13:49:04 CM7
>>26
おkじゃあ適当に始めるか
とりあえずxamppダウンロードしてきてください
一応ここから自分の環境にあったものを選んでくれ
https://www.apachefriends.org/jp/download.html
28:名無しさん@おーぷん:2015/01/30(金)13:50:53 6UD
>>27
ダウンロードしたらどこにcopyすればいい?
30:名無しさん@おーぷん:2015/01/30(金)13:56:20 CM7
>>28
どこでもいいよ

Windowsの方は多分解説いらないよな
exeファイルをインストールするだけ

ubuntuの方は
chmod +x xampp-linux-5.5.19-0-installer.run
sudo ./xampp-linux-5.5.19-0-installer.run
インストーラー起動するだろ
32:名無しさん@おーぷん:2015/01/30(金)13:59:57 6UD
>>30
コマンドが見つかりませんになるわ
33:名無しさん@おーぷん:2015/01/30(金)14:02:31 6UD
あっ間違えてた
>>30のchmodを飛ばしてた
それやったら
setupの画面まで進んだ
38:名無しさん@おーぷん:2015/01/30(金)14:12:00 CM7
>>33
そこまで行ければあとは分かるやろ
35:名無しさん@おーぷん:2015/01/30(金)14:05:31 Ich
>>27
情弱なんだが有料?
36:名無しさん@おーぷん:2015/01/30(金)14:08:02 6UD
finish!

Welcome to XAMPP 5.5.19-0の画面になった


>>35
無料やで
38:名無しさん@おーぷん:2015/01/30(金)14:12:00 CM7
>>35
増税したから420円やで
39:名無しさん@おーぷん:2015/01/30(金)14:13:18 6UD
>>38
これからや
PHPフォルダを最初のwwwフォルダ?に設定したい
どうしたらいい?
41:名無しさん@おーぷん:2015/01/30(金)14:15:43 CM7
>>39
そこまで言ったってことはインストールはできたんやな
今ubuntuインストールしとるから一服でもしてちょっとまっとれ
34:名無しさん@おーぷん:2015/01/30(金)14:03:44 6UD
インストール中
42:名無しさん@おーぷん:2015/01/30(金)14:21:06 6UD
何かするたびにポコポンと鳴る音けしたい
どうすればいい?
43:名無しさん@おーぷん:2015/01/30(金)14:22:12 CM7
>>42
つ耳栓
45:名無しさん@おーぷん:2015/01/30(金)14:27:22 6UD
>>43
了解w

で待ってる間に
phpフォルダ内にphpinfo.php
<?
phpinfo();
?>
というのを作っておいたで
これに実行権限とか付ける必要あるのやろか?
47:名無しさん@おーぷん:2015/01/30(金)14:30:36 CM7
>>45
(゚⊿゚)イラネ
ubuntuなら確かデフォルトならaptにxamppのディレクトリあるからその中のhtpdocsにぶっこんで
ブラウザからhttp://localhost/で実行してみ
ファイル名はindex.phpな
50:名無しさん@おーぷん:2015/01/30(金)14:36:23 6UD
>>47
ホームの中のphpフォルダから作ったphpinfo.phpを
/opt/lampp/htdocs内にコピーしようとしたらエラー発生
許可がありませんとなる
どうすればいい?
52:名無しさん@おーぷん:2015/01/30(金)14:48:50 CM7
>>50
何それ
俺そんなん一回も出たことないんだけど
guiからコピペも出来んのか?
53:名無しさん@おーぷん:2015/01/30(金)14:50:33 6UD
>>52
guiからドラッグでコピーしてんだけど
root権限がないらしい
ログインのときもrootなんか選択できないけど
58:名無しさん@おーぷん:2015/01/30(金)15:06:03 BHB
>>53
ターミナルで
su
と、入力してrootになってみて

パスワードは無しか、↓のいずれだと思う
toor, admin, password
55:名無しさん@おーぷん:2015/01/30(金)14:57:25 BHB
>>53を解決法を示せるイッチなら有能
57:名無しさん@おーぷん:2015/01/30(金)14:59:42 CM7
>>55
htpdocsに書き込み権限与えればいいのは分かるけど
utuntu起動してるならお前が教えてやれよw
44:名無しさん@おーぷん:2015/01/30(金)14:25:45 CM7
取り敢えず最終的に何作るか安価で決めとくか>>50
面倒くさいもの作りたくないから選択式な

1おーぷんのdat収集
2おーぷんのdat収集
3おーぷんのdat収集

好きなもの選んでええんやで^^
46:名無しさん@おーぷん:2015/01/30(金)14:29:03 6UD
>>44
えっ・・
http://hayabusa.open2ch.net/news4vip/
これのhtmlダウンロードして分解したい
48:名無しさん@おーぷん:2015/01/30(金)14:31:02 kDl
ついでにcakeでbakeしたら元あったソースの何かが変わったっぽくて動かなくなったから解説よろ。
49:名無しさん@おーぷん:2015/01/30(金)14:31:48 CM7
>>48
フレームワークなんか使うからだバーカ
59:名無しさん@おーぷん:2015/01/30(金)15:13:14 CM7
よしubuntuインストール終わったぞ
もうちょっと待ってね
60:名無しさん@おーぷん:2015/01/30(金)15:32:57 CM7
一応xamppのインストールの流れな







インストーラーが起動したらネクスト連打でいいや
61:名無しさん@おーぷん:2015/01/30(金)15:41:22 CM7
xamppでこれが出来たら次はxamppの起動と停止

起動
sudo /opt/lampp/lampp start



停止
sudo /opt/lampp/lampp stop

62:名無しさん@おーぷん:2015/01/30(金)15:45:19 CM7
>>61の起動コマンド打ってhttp://localhost/でこれが出ればインストール完了な

86:名無しさん@おーぷん:2015/01/30(金)17:08:38 CM7
続き
取り敢えずxmapp起動

ubuntu
>>61

windows



これで一応PHP使えるはず
87:名無しさん@おーぷん:2015/01/30(金)17:11:31 CM7
>>86
windowならC:¥xampp¥htdocs、ubuntuならopt/lampp/htdocsが今から作るPHPファイルを置く場所です
88:名無しさん@おーぷん:2015/01/30(金)17:13:07 CM7
>>87
追加で
windowsの人はutf-8で保存できるメモ帳用意しといてください
俺は秀丸使ってる
http://hide.maruo.co.jp/software/hidemaru.html
89:名無しさん@おーぷん:2015/01/30(金)17:20:03 CM7
テキストエディタ起動してこんな感じで打ち込む
<?php
echo 'hello';
?>

ファイル名をtest.phpで保存して>>87に入れてhttp://localhost/test.phpを開く
これが表示されれば成功

63:名無しさん@おーぷん:2015/01/30(金)15:54:28 CM7
xamppのホームディレクトリ場所
opt/lampp/htdocs







ここに作ったファイルをぶっ込むことになる
64:名無しさん@おーぷん:2015/01/30(金)15:57:01 CM7
>>63
htdocsの中身貼るのを忘れた

65:名無しさん@おーぷん:2015/01/30(金)16:03:31 Zxx
なんか高度なやりとりしててそもそもプログラミングがどういうのなのかさっぱりなんて言いにくい雰囲気
66:名無しさん@おーぷん:2015/01/30(金)16:07:37 CM7
>>65
全然高度じゃないお
linuxでやりたいっていうバカが居るか面倒くさい事になってるだけだお
windosでやればxamppでの環境構築なんて5分だよ
67:名無しさん@おーぷん:2015/01/30(金)16:13:35 Zxx
アルファベットが飛び交ってて何言ってるのか全然わかんないw
猿でもわかるプログラミング入門みたいなのかと思ってたんだけどそもそも環境構築ってなんぞや
68:名無しさん@おーぷん:2015/01/30(金)16:16:46 CM7
>>67
スーファミの違法ロムを(PHPを)プレイするためにエミュレータ(環境)を入れてるだけ
70:名無しさん@おーぷん:2015/01/30(金)16:24:36 CM7
次にxamppのセキュリティーの設定
コマンド:sudo /opt/lampp/lampp securityってやると対話式で適当にyおしたりパスワードを設定できる



XAMPP: Your XAMPP pages are NOT secured by a password.(XAMPPさん:お前パスワード設定してないじゃん)
XAMPP: DO you want to set a password? [yes] (XAMPPさん:パスワードを設定しますか?[yes])

こんなかんじの形式で色々セキュリティーの設定ができるおk?

71:名無しさん@おーぷん:2015/01/30(金)16:26:49 CM7
>>70
2枚目の画像へのツッコミは受け付けません
72:名無しさん@おーぷん:2015/01/30(金)16:31:15 Zxx
>>71 いや自分もわからん 
スーファミのロムをプレイする環境を作ることとプログラミングになんの関係があるのかもよくわからないです
73:名無しさん@おーぷん:2015/01/30(金)16:34:42 CM7
>>72
PHPをプレイするためにPHPの環境を作ってると思っとけばいいよ
74:名無しさん@おーぷん:2015/01/30(金)16:35:54 Zxx
>>73 おk とりあえず黙って講義きいとく
76:名無しさん@おーぷん:2015/01/30(金)16:41:03 CM7
>>74
黙ってなくていいよ
俺一人だけ書き込んでるのってなんかアホみたいじゃん
暇つぶしのお話しようず
78:名無しさん@おーぷん:2015/01/30(金)16:45:09 Zxx
>>76 んじゃ遠慮なく
自分はパソコン弄っててちょっとプログラミングに興味あるって程度だから知識も皆無なんだけど
>>1はどうやってプログラミングのこと勉強したの?独学?
79:名無しさん@おーぷん:2015/01/30(金)16:50:50 CM7
>>78
100%独学
先生はgoogle先生+先人たちの残しくれた遺産読み漁ったり
基本はCで覚えた
おすすめのサイトは猫でもわかるCじゃなくて苦しんで覚えるC言語
81:名無しさん@おーぷん:2015/01/30(金)16:55:16 Zxx
>>79
ほう ちょっとおすすめのサイトとやら覗いてくるわありがとう
82:名無しさん@おーぷん:2015/01/30(金)16:56:43 CM7
>>81
今頃C覚えてもほどんど使い道無いしプログラミングってどんなもんか程度で捉えとけよ
あくまで説明が一番わかり易いと思ってるサイトだからおすすめしてるだけだし
83:名無しさん@おーぷん:2015/01/30(金)16:57:54 Zxx
>>82
Cってなんなのかすらよくわかんないけどとりあえず全体像をとらえるかんじで見てみるわ
75:名無しさん@おーぷん:2015/01/30(金)16:39:19 CM7
次に>>ID:6UDが言ってたアクセス出来ないとかってやつやりかた
sudo chmod 777 /opt/lampp/htdocs
これ実行すれば多分行ける
正直俺はlinuxとかよくわかってないのコマンド実行すればファイルへのアクセス権が取れるらしい
77:名無しさん@おーぷん:2015/01/30(金)16:43:41 CM7
とりま>>75まで出来ればPHP使えるよっと
これで環境構築終わりです

インストール出来ないとかここが分かんないとかって人いる
80:名無しさん@おーぷん:2015/01/30(金)16:53:23 CM7
質問もないし進めちゃっていい?
84:名無しさん@おーぷん:2015/01/30(金)16:59:22 CM7
29人もいるのに反応ないし(´・ω・`)
勝手にすすめちゃうぞ
85:名無しさん@おーぷん:2015/01/30(金)17:00:25 CM7
windowsの方の説明欲しい奴いる?
90:名無しさん@おーぷん:2015/01/30(金)17:31:29 CM7
ubuntuは要らないけど一応文字コードをデフォでUTF-8指定するやり方
その他->動作環境->ファイル->エンコード1->標準のエンコードの種類でUTF-8を指定してやる
(Windowsの人はずっとこのままでいいと思う)

91:名無しさん@おーぷん:2015/01/30(金)17:32:20 CM7
>>90
秀丸ね
92:名無しさん@おーぷん:2015/01/30(金)17:34:42 CM7
さて次何しよう>>95
93:名無しさん@おーぷん:2015/01/30(金)17:40:16 CM7
見てる奴いるのか
返事だけでもしてくれ
94:名無しさん@おーぷん:2015/01/30(金)17:41:16 Zxx
>>93
95:名無しさん@おーぷん:2015/01/30(金)17:41:47 CM7
>>94
変数とかからやった方がいいのかな
96:名無しさん@おーぷん:2015/01/30(金)17:48:55 P3k
>>95
超個人的な意見だと基礎の基礎の基礎ぐらいから教えてほしいぐらい
専門用語がわからないから とりあえず流れをざっと見るのもわかりやすいかもしれないけど
苦Cもちょっとずつ読んでるけど横文字多くて馬鹿には苦しい
97:名無しさん@おーぷん:2015/01/30(金)17:52:42 CM7
>>96
おk
だったら苦Cなみのスローペースで関数辺りまでやるわ(多分そこまでやればどうにかなると思うし)
俺は疲れたからちょっと風呂入ってくる

つうかこれホントに33人もいるのかよ
一人も反応ないし(´・ω・`)
98:名無しさん@おーぷん:2015/01/30(金)17:55:29 P3k
>>97
俺みたいなプログラミング全然わからん奴らこそ見てるからこんなに静かなんじゃないかって思ったり
俺も風呂入って来るわ おつかれ
101:名無しさん@おーぷん:2015/01/30(金)18:03:49 6UD
>>97
その人数というのは当てにならんと思うで
googleとかyahooとかのクローラーとかもカウントしてるのとちゃうやろか
それに日が変わるとクリアされるとか言われてたけど
どうもそうではないみたいだし
100:名無しさん@おーぷん:2015/01/30(金)18:01:09 6UD
>>94>>96
プログラムに興味あるのなら
とにかくやってみることやと思うわ
でも独学の場合Cから始めるのはあんまり得策じゃないように思うで
102:名無しさん@おーぷん:2015/01/30(金)18:15:56 CM7
>>100
Cは実際時代遅れだからな
でもホントに0からやる場合苦Cほどわかり易い初心者向けのサイトも他の言語じゃ存在してないんだよな
俺はあくまで苦Cに辿り着けることを前提にしてC進めてるだけであって他は知らんw
107:名無しさん@おーぷん:2015/01/30(金)18:21:21 6UD
>>102
実はCの勉強中なんだけどね
確かにCをマスターすればjavaとか進むには楽になると思うけど
進むのに壁ばっかりなのよね
変数、条件分岐、繰り返し、配列、関数などの基本概念は
もっと楽な言語で覚えた方がいいようにも思うのよ
110:名無しさん@おーぷん:2015/01/30(金)18:24:06 CM7
>>107
それもさ苦Cほど分かり易いサイトが他の言語でもあれば俺は押すんだけどなw
108:名無しさん@おーぷん:2015/01/30(金)18:23:10 6UD
>>102
苦Cってこれか
http://9cguide.appspot.com/

言語は楽しんで覚えた方がええwww
111:名無しさん@おーぷん:2015/01/30(金)18:26:48 CM7
>>108
苦Cの苦は全く意味ないんだぜw
しかも学習用環境とか配布しだしたからコンパイラとか入れなくてもパスとか通したりする必要もないし
http://9cguide.appspot.com/p_9cide.html
112:名無しさん@おーぷん:2015/01/30(金)18:30:05 6UD
>>111

>>94とか>>96のような人が
意地でも覚えるぞって気合を持っていれば
そこに合わせるのもいいんじゃないかい
99:名無しさん@おーぷん:2015/01/30(金)17:59:20 6UD
おおっ進んどるな
ubuntuの方は勝手にやっとくわ
103:Awn◆Awn//////E:2015/01/30(金)18:18:03 GXu
こっそり見てました
106:名無しさん@おーぷん:2015/01/30(金)18:20:17 CM7
>>103
俺もお前は見てるような気がしたw
105:名無しさん@おーぷん:2015/01/30(金)18:19:51 CM7
続き
変数の説明

これ入力
<?php
$a='hello';
echo $a;
?>

これ表示されれば成功



つまり$aが変数
わかった?w
110:名無しさん@おーぷん:2015/01/30(金)18:24:06 CM7
>>105
一応プログラムでは=は代入を意味する
右から左に代入する事ができる
120:名無しさん@おーぷん:2015/01/30(金)18:55:29 CM7
続き
phpの基本的な構文の形
「//」の後はコメントって言って何書き込んでもいい

<?php
$a='a';//文の終わりは必ず;で閉じる
$b='b';

echo $a.$b.'テスト';//こんな感じで.で区切ってつなげることも出来る
?>

上のソース実行してこうなれば成功

123:名無しさん@おーぷん:2015/01/30(金)19:19:12 CM7
続き
比較(if文)
変数だったり文字だったり比較する方法
これ入力してokが出れば成功

<?php
$a='Awn';//文字入れる

if($a=='Awn'){
echo 'ok';
}
?>



一応簡単に説明
if(条件式){
実行したいコード
}

これで比較できる
条件式に使える記号、例えば上でやった例なら「==」ってやつが比較に使う記号(比較演算子)
if($a==$b)は$aと$b同一ならばって意味実行しろって意味
試しに$a=='Awn'の'Awn'を変えてみればechoが実行されないのが分かると思う

比較演算子は他にもあるけどこれは丸暗記するしか無いから覚えとけ(感覚でわかるとは思うけど)
他の言語でもこれは基本的には一緒だから覚えといて損はない
(一部使えたり使えたり使えなかったりするのもあるけど)
phpで使える比較演算子
http://php.net/manual/ja/language.operators.comparison.php
125:名無しさん@おーぷん:2015/01/30(金)19:40:17 CM7
>>123でやった比較演算子ってあるけどアレも一応演算子(+とかー)にすぎない

<?php
$a='test'=='test';
echo $a;
?>

これ実行すると1ってのが返ってくる
試しに'test'=='tes'にしてみると何も返ってこない
つまり比較演算子ってのは条件式に合えば1(TRUE)何もなければ何も返ってこない
if文ってのは1(TURE)を受け取って実行してた訳だ
124:名無しさん@おーぷん:2015/01/30(金)19:29:51 CM7
続き
計算機

<?php
$a=1+2;//1+2して$aに答えを代入してる
echo $a;//答えを表示
?>



ただ計算させるだけ
使える演算子
+ 足し算
- 引き算
* 掛け算
/ 割り算
% あまり
125:名無しさん@おーぷん:2015/01/30(金)19:40:17 CM7
>>124
蛇足
126:名無しさん@おーぷん:2015/01/30(金)19:47:19 CM7
>>125
試しにifで遊んでみる

<?php
if(0){
echo '0';
}
if(1){
echo '1';
}
?>

これで結果を見れば一目瞭然だと思う
127:Awn◆Awn//////E:2015/01/30(金)19:48:50 GXu
先生、if(0.5)だとechoはどうなるんですか?
128:名無しさん@おーぷん:2015/01/30(金)19:51:07 CM7
>>127
パソコンがぶっ壊れるので絶対に少数入れて実行しないように
129:名無しさん@おーぷん:2015/01/30(金)19:53:11 zgA
>>128
何それ怖い
130:名無しさん@おーぷん:2015/01/30(金)19:53:15 CM7
>>127
つうか絶対お前のほうが先生だと思うんだけど
131:Awn◆Awn//////E:2015/01/30(金)19:55:56 GXu
>>130
10 PRINT "それはない"
20 END
132:ぶたさん◆dSysy/OC5.fU:2015/01/30(金)19:58:01 XsV
console.log(“Awnって職業IT系じゃん”)
133:Awn◆Awn//////E:2015/01/30(金)20:04:22 GXu
INSERT INTO THIS_THREAD("MESSAGE_AREA")
VALUES ("まぁまぁ気にせず気にせず")
134:竜◆CYrvU9cCbE:2015/01/30(金)20:04:54 0nA
System.out.print("Awnも解説に加われよ。(*´∇`*)");
135:名無しさん@おーぷん:2015/01/30(金)20:06:31 CM7
exit('何で俺講座にしちゃったんだろ・・・');
138:Awn◆Awn//////E:2015/01/30(金)20:23:14 GXu
//…本当に終わっちゃった系…?おーぷんのdat収集キボンヌ…
142:名無しさん@おーぷん:2015/01/30(金)20:30:16 CM7
>>138
講座にしちゃったばっかりに・・・
144:Awn◆Awn//////E:2015/01/30(金)20:33:28 GXu
>>142
基礎講座乙です


書籍を買えば理解は深まるものの手っ取り早く横断的に学ぶならこれがオススメ
phpもあるよ

基礎文法最速マスターランキング
http://cielquis.net/programming-grammer/
139:名無しさん@おーぷん:2015/01/30(金)20:24:36 CM7
続き
繰り返し文(while)

基本的な書き方
while (条件式){
処理
}

条件式に比較式ぶっ込んで回すループ
1(true)のうちは繰り返し処理を行ってくれる
因みに条件式に1だけは絶対にしないように(無限に処理が実行されるから)

サンプル
<?php
$a=0;
while($a<=10){
echo $a;
$a++;
}
?>
0~10まで表示するだけ

140:名無しさん@おーぷん:2015/01/30(金)20:25:30 CM7
>>139
ミスった
続き
繰り返し文(while)

基本的な書き方
while (条件式){
処理
}

条件式に比較式ぶっ込んで回すループ
1(true)のうちは繰り返し処理を行ってくれる
因みに条件式に1だけは絶対にしないように(無限に処理が実行されるから)

サンプル
<?php
$a=0;
while($a<=10){
echo $a.'<br>';
$a++;
}
?>
0~10まで表示するだけ

141:名無しさん@おーぷん:2015/01/30(金)20:29:23 CM7
かなり適当だけどプログラミングの基本はこれで終わり
ここまでやってきたことすべて合わせて計算(演算)->比較(if)+ループ(while)->・・・・みたいな感じでやってくのがプログラミングの全体の基本
143:名無しさん@おーぷん:2015/01/30(金)20:32:01 CM7
一応比較とかループにはif、while以外にもあるけど都合覚えていけばいいやって感じですw
157:名無しさん@おーぷん:2015/01/30(金)22:01:27 CM7
というわけでここまで来てやっと本題>>44に帰るわけですw
一応今回持ってくる板はガチホモでいいやw
http://engawa.open2ch.net/aniki/subback.html
ここですw
145:名無しさん@おーぷん:2015/01/30(金)20:46:57 CM7
ここまで見てもらった初心者には悪いんだけどたぶん俺の説明で分かるガチ初心者は一人も居ないので分からなくても気を落とさなくていいです
一応fuzzbizz問題とか1~100まで表示して3の倍数の時だけニャーにするとかの問題が自力で解けるようになったらここから先も理解できると思います(多分)
146:名無しさん@おーぷん:2015/01/30(金)21:01:33 CM7
>>145
一応1~100まで表示するのは>>140のサンプル改造すれば分かると思います

ヒント
if分はelseっていうのと組み合わせると例外処理が出来ます

if(条件式){
条件式がtrue(1)の時の処理
}else{
条件式がfalse(0)の時の処理
}

これを組み合わせれば出来ます
147:名無しさん@おーぷん:2015/01/30(金)21:13:13 CM7
続き

関数
ここまでやってきたことの集大成的な感じ
プログラムってのは計算(演算)->比較(if)+ループ(while)・・・の繰り返し
これらの処理を一つにまとめて使うことが出来るのが関数です
これは説明するより使ってみた方がわかりやすいと思います

基本的な関数の書き方
function 関数名{
処理
}
これだけです
148:名無しさん@おーぷん:2015/01/30(金)21:25:19 CM7
>>147
またミスった
function 関数名(){
処理
}



一応1~10まで表示する関数の例

<?php
function test(){//test関数作成

$a=0;//$aを0に代入

//ループ開始
while($a<=10){
echo $a.'<br>';//現在の数値を吐き出す
$a++//更新
}

test();//関数実行
}
?>
150:名無しさん@おーぷん:2015/01/30(金)21:31:38 CM7
>>148
またミスったんだぜw

一応1~10まで表示する関数の例

<?php
function test(){//test関数作成

$a=0;//$aを0に代入
//ループ開始
while($a<=10){
echo $a.'<br>';//表示
$a++;//更新
}
}

test();//関数実行

?>
152:名無しさん@おーぷん:2015/01/30(金)21:43:37 CM7
>>150
関数には引数と戻り値ってのが使えます
引数は関数に数値を渡すもの、戻り値ってのは関数から返ってくる値のこと
言っても何だが分からないと思うので適当にやってみます

<?php
function test($i){//$iが引数の入る変数

$a=0;//$aを0に代入
//ループ開始
while($a<=$i){
echo $a.'<br>';//表示
$a++;//更新
}
return "end";//戻り値
}

$get=test(15);//15の引数をもたせて実行(ようは15まで表示しろってこと)
echo $get;//$getに戻り値が入ってる(今回はend固定)

?>



分かるかな?
149:名無しさん@おーぷん:2015/01/30(金)21:31:17 OCw
支援
期待してる!
152:名無しさん@おーぷん:2015/01/30(金)21:43:37 CM7
>>149
ありがとうございます(;_;)
153:名無しさん@おーぷん:2015/01/30(金)21:47:12 OCw
数学で言えばy=f(x)のxが引数で
yにが戻り値だよね

PHPは関数型言語じゃないからこういう説明はあまり良くないけどw
154:名無しさん@おーぷん:2015/01/30(金)21:48:22 CM7
>>153
すべての言語は関数に帰るからこれでいいよ
正直説明すんの面倒くさいしw
155:名無しさん@おーぷん:2015/01/30(金)21:56:16 CM7
ここまでやってきたプログラムのおおまかな構造
関数{処理{}}
こんな感じ

因みに関数もまとめるクラスってのもあるけど今回は触れません
156:名無しさん@おーぷん:2015/01/30(金)21:58:24 CM7
>>155
あっ、ごめん
やっぱ触れるかもしれないけど説明はしませんw
158:Awn◆Awn//////E:2015/01/30(金)22:02:41 fQq
数多ある板からなぜガチホモw
160:名無しさん@おーぷん:2015/01/30(金)22:04:00 CM7
>>158
一番下にあって探しやすいしスレット数も少なくておーぷんに深かからなそうだったからw
正直人気板以外どこでもよかったw
後悔はしていない
161:名無しさん@おーぷん:2015/01/30(金)22:04:33 OCw
>>160
後悔しろよw
162:名無しさん@おーぷん:2015/01/30(金)22:06:00 CM7
おーぷんより本家に負荷かけたほうが良かったかな
スレッド数が少なければもうどこでもいいんだよ
正直疲れた・・・
163:名無しさん@おーぷん:2015/01/30(金)22:06:44 OCw
おーぷんって基本的に1台の鯖だけでやってるんじゃないの?
まあバッググラウンドでは分散しているかもしれないけど
164:名無しさん@おーぷん:2015/01/30(金)22:07:54 CM7
>>163
俺のせいで落ちたらどうしよう
糞スレ建ててゴメンなさとる(;_;
166:Awn◆Awn//////E:2015/01/30(金)22:09:50 fQq
>>164
短時間に2000スレぐらいアクセスしたけど大丈夫でした。
165:名無しさん@おーぷん:2015/01/30(金)22:08:43 OCw
俺1時間に数回のクローラーを走らせてるけど弾かれたこと無いよ
167:名無しさん@おーぷん:2015/01/30(金)22:39:02 CM7
続き
で別のサイトからhtmlをパクるにはcurlって関数を使います
curlってなんぞって聞かないでねw
取り敢えずcurl使えば別のサイトからhtmlの文章パクってこれるって思っておけばいです
ものは試しにyahooのhtmlをパクってきます

<?php
$url ='http://www.yahoo.co.jp/';//yahooのURLを格納
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//yahooのhtml取得
curl_close( $ch );//curl終了

echo $html;//取得したyahooのhtmlを表示
?>

こんな感じで表示されれば成功

172:名無しさん@おーぷん:2015/01/30(金)23:08:33 CM7
>>167のソースを関数にまとめてときます
<?php
$url ='http://www.yahoo.co.jp/';//欲しいサイトのurl

$html = web_get($url);//関数呼び出し
echo $html;//取得したhtmlを表示

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了

return $html;//取得したurlのhtmlを表示
}

?>
結果は
>>167と同じ
168:名無しさん@おーぷん:2015/01/30(金)22:47:25 lqr
いきなりcurlなんやね
でも使うならこっちの方が便利かな
169:名無しさん@おーぷん:2015/01/30(金)22:56:11 CM7
>>168
ダメか?
ライブラリ使えばもっと便利なのもあるんだけどなw

続き
これで一旦PHPは終了です
次からは正直自分もよく分かってない正規表現のお勉強です
172:名無しさん@おーぷん:2015/01/30(金)23:08:33 CM7
>>169
終わる前に>>167のソースを関数にまとめてときます
<?php
$url ='http://www.yahoo.co.jp/';//欲しいサイトのurl

$html = web_get($url);//関数呼び出し
echo $html;//取得したhtmlを表示

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了

return $html;//取得したurlのhtmlを表示
}

?>
結果は
171:Awn◆Awn//////E:2015/01/30(金)22:59:21 fQq
file_get_contents()「・・・」
172:名無しさん@おーぷん:2015/01/30(金)23:08:33 CM7
>>171
結局file_getとcurlどっちがいいんだろう?
2chからdat拾う時はcurlの方がいいってどっかで見たから今回はcurl使うようにしたんだけど
174:名無しさん@おーぷん:2015/01/30(金)23:16:21 CM7
>>172
/*から*/で囲まれた範囲もコメントとして使えます
こんな感じで綺麗装飾する奴もいます
<?php
/******************************************************
*
*
* 2chのだっとをコピーするそーすだよー var0.1
* 最終更新日:1/30
*
*
*
* *****************************************************/
$url ='http://www.yahoo.co.jp/';//欲しいサイトのurl

$html = web_get($url);//関数呼び出し
echo $html;//取得したhtmlを表示
/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了

return $html;//取得したurlのhtmlを表示
}

?>
173:名無しさん@おーぷん:2015/01/30(金)23:14:02 OCw
俺はfile_get使ってるよ
174:名無しさん@おーぷん:2015/01/30(金)23:16:21 CM7
>>173
俺も最初はそうだったんだけどな
今回はcurlでいいやw
175:名無しさん@おーぷん:2015/01/30(金)23:22:06 CM7
>>174
ちょい修正


<?php

/******************************************************
*
*
* 2chのだっとをコピーするそーすだよー var0.1
* 最終更新日:1/30
*
*
*
* *****************************************************/

$url ='http://www.yahoo.co.jp/';//欲しいサイトのurl

$html = web_get($url);//関数呼び出し
echo $html;//取得したhtmlを表示

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了
return $html;//取得したurlのhtmlを返す
}

?>
219:いっち◆04mB7iDdltG4:2015/01/31(土)04:37:22 FHm
>>175のソースを>>213preg_match_allを使った形に置き換える

<?php

$url ='http://engawa.open2ch.net/aniki/subback.html';//欲しいサイトのurl

$html = web_get($url);//htmlを取得


preg_match_all('/<a href="¥/test¥/read.cgi¥/[~¥w]+¥/([¥d]+)¥/l50">.+?<¥/a>/is',$html, $ita_id,PREG_SET_ORDER);//首都したhtmlから板IDを取得
foreach ($ita_id as $key ) {
print($key[1].'<br>');
}

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了
return $html;//取得したurlのhtmlを返す
}

?>


htmlを取得した後に
preg_match_all('/<a href="¥/test¥/read.cgi¥/[~¥w]+¥/([¥d]+)¥/l50">.+?<¥/a>/is',$html, $ita_id,PREG_SET_ORDER);//首都したhtmlから板IDを取得
foreach ($ita_id as $key ) {
print($key[1].'<br>');
}
を追加しただけです
forechってのはwhileとかの仲間のループ文だと思っておけばいいです
配列を使う時によく使います
(配列の説明してなかった事を今さら後悔してます)
177:名無しさん@おーぷん:2015/01/30(金)23:35:09 CM7
続き
正規表現
文字列の形式を文字で表すてきな表現方法?みたいなもん
例えばこのスレのURLと適当にとってきたおーぷんvipのスレのURLを比べてみると
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422625898/

下の数字が違うだけじゃん
これを正規表現で表すとこんな感じで表現できますよって話です
http:¥/¥/hayabusa.open2ch.net¥/test¥/read.cgi¥/news4vip¥/[¥d]+¥/

http~news4vip/まではまったく一緒で一番下の数字は複数の数字ですって感じかなw
多分[¥d]以外は皆何となく感覚で分かると思うけどどうなんだろw
179:名無しさん@おーぷん:2015/01/30(金)23:44:00 CM7
>>177
一応正規表現チェッカーってのがあるからここで色々練習したら分かると思う
http://www.rider-n.sakura.ne.jp/regexp/regexp.php

182:名無しさん@おーぷん:2015/01/30(金)23:56:32 CM7
>>177
これでおーぷんのVIPのスレだけならどんなスレでも表せるようになりました
http:¥/¥/hayabusa.open2ch.net¥/test¥/read.cgi¥/news4vip¥/[¥d]+¥/

一応下の数字だけ違うって行ったけどこれがスレッドIDってものでスレ一つ一つに付いた個人を特定する名前みたいな物
この数字だけ欲しいなと思うのが人情じゃん?
で取ってくるためにはこうする
http:¥/¥/hayabusa.open2ch.net¥/test¥/read.cgi¥/news4vip¥/([¥d]+)¥/

違いは[¥d]+を()で括っただけです
それでこの正規表現を正規表現チェッカーに入れてこんな感じにすると…

184:名無しさん@おーぷん:2015/01/31(土)00:08:01 FHm
>>182
スレッドにも名前があるように板にも名前がある
VIPとガチホモのURLくらべてみる
おーぷんVIP:http://hayabusa.open2ch.net/news4vip/
ガチホモ:http://engawa.open2ch.net/aniki/

見て分かるようにおーぷんVIPの名前はnews4vip、ガチホモの名前はanikiって分かる
一応この板の名前を都合「板ID」と呼ぶことにする
185:名無しさん@おーぷん:2015/01/31(土)00:21:11 FHm
>>182の正規表現をちょっと改造するだけ
改造前:http:¥/¥/hayabusa.open2ch.net¥/test¥/read.cgi¥/news4vip¥/([¥d]+)¥/
改造後:http:¥/¥/hayabusa.open2ch.net¥/test¥/read.cgi¥/([¥w]+)¥/([¥d]+)¥/

違いは板IDのnews4vipの所が([¥w]+)になっただけ
¥wと¥dとか分かんないって人は正規表現チェッカーのメタ文字って所に説明って書いてるからそこ見てくれ

で、改造後の正規表現をまた貼り付けると…

183:名無しさん@おーぷん:2015/01/31(土)00:02:46 tfI
datを読み込んでローカルに保存するまでが目標?
184:名無しさん@おーぷん:2015/01/31(土)00:08:01 FHm
>>183
うん
というかホントはそれがしたかった
実を言うと自分のローカル環境で動かすログ速みたいなのが欲しくて作ってる途中だったんだ
それで丁度dat取得のところまできたから需要あるならと思ってこのスレ立ててみた
185:名無しさん@おーぷん:2015/01/31(土)00:21:11 FHm
>>184
VIPの板IDをとってくる正規表現の例
186:名無しさん@おーぷん:2015/01/31(土)00:27:56 FHm
>>185
でさっきから書いてる$1とか$2ってのの説明
感のいい人なら気付いてると思うけど()の順番なんです
例えば
($1)($2)($3)こんな感じで取り出せます

((()))こんな感じで括弧がネストしてたらどうなるかと言うと($1($2($3)$2)$1)こんな感じで上から順に取り出せます(たしか)

正直正規表現は俺もよく分かってないんで間違ってるところがあったら誰か教えて下さいw
189:名無しさん@おーぷん:2015/01/31(土)00:40:44 FHm
>>186
参考までに昔作ったニコニコとyoutubeのURLから動画のIDだけ取り出してくる正規表現のサンプル
ニコニコ:http:¥/¥/www.nicovideo.jp¥/watch¥/(sm[0-9]+)
youtube:http:¥/¥/)(www.youtube.com|jp.youtube.com|youtube.com)¥/watch¥?v=([a-zA-Z0-9¥-_]+)([a-zA-Z0-9¥/¥*¥-¥_¥?¥&¥;¥%¥=¥.]*)

正直youtubeの方が色んな形式のURLに対応させようとして分けわかんない事になってるけど取りこぼしいっぱいあると思うw
ニコニコはたしか$1でyoutubeは$3でとりだせたかと思う
何で$3なのとかは聞かないで欲しい(初めて自分で考えて作った正規表現なのでホントに正しいのは自分で考えてつくろうずw)
187:名無しさん@おーぷん:2015/01/31(土)00:29:54 tfI
>>186
その説明があるまで$1が何かわからなかったよw
189:名無しさん@おーぷん:2015/01/31(土)00:40:44 FHm
>>187
phpにもどればpreg_replaceとかって関数で正規表現で取り出してはとっかえひっかえしてくことになるから
やってれば嫌でも分かるようになると思うけど念の為に説明してみたw
188:名無しさん@おーぷん:2015/01/31(土)00:40:01 u6p
PHPとか言うクソ言語は駆逐する
190:名無しさん@おーぷん:2015/01/31(土)00:40:48 mwh
>>188 やっぱりLispだよな
191:名無しさん@おーぷん:2015/01/31(土)00:42:39 FHm
>>190
私は提供するだろう
美しさを貴方の手に
しかしそれは松ぼっくりのようにありふれていてなおかつ親しみやすいものであるかもしれない

だろw
192:いっち◆04mB7iDdltG4:2015/01/31(土)00:48:39 FHm
気付いたら日にち変わってたかw
一応コテとトリップ付けとくは
194:いっち◆04mB7iDdltG4:2015/01/31(土)00:53:56 FHm
一応正規表現の質問とかある?
答えれることなら答えるけど
分んないことなら俺は分かんないって言うけど誰か答えてくれるかもしれないw
195:名無しさん@おーぷん:2015/01/31(土)01:07:02 tfI
問題ない
次カモン
196:いっち◆04mB7iDdltG4:2015/01/31(土)01:20:01 FHm
>>195
スマン
正規表現の説明ひと段落ついたから勝手に休憩してたw

こっからまたPHPに帰還です
198:いっち◆04mB7iDdltG4:2015/01/31(土)01:28:04 FHm
続き
ここから板一覧を取得する一連の流れ

ガチホモ板一覧(http://engawa.open2ch.net/aniki/subback.html)から存在するスレッドのURLの全取得

取得したURLからスレIDを正規表現で抜き出す

IDからdatのURLを解析

datを持ってきてローカルにdatファイルとして保存する

大まかにこんな感じかな
199:いっち◆04mB7iDdltG4:2015/01/31(土)01:35:23 FHm
>>198
板一覧のhtmlの取得は>>175をこんな感じで改造

$url ='http://engawa.open2ch.net/aniki/subback.html';//ここ変えただけ

$html = web_get($url);//関数呼び出し
echo $html;//取得したhtmlを表示

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );//何かやってるwww
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了
return $html;//取得したurlのhtmlを返す
}

するとこんな感じで表示される



なぞの1って数字があるけどすぐ消せるから今は気にしなくいいやw
200:いっち◆04mB7iDdltG4:2015/01/31(土)01:40:57 FHm
>>199
で取得したhtmlのスレッドのリンクである<a>タグからhtmlだけ抜き出す正規表現を考える
取得したhtmlのソースを表示するとスレ一覧のソースの中身はこんな感じで羅列されてる
<a href="/test/read.cgi/aniki/1394978291/l50">1: お前ら好みの絵を描いていくスレ (61)</a>
<a href="/test/read.cgi/aniki/1414757818/l50">2: アッ♂したことあるやつって本当にこんなかんじなの? (13)</a>
<a href="/test/read.cgi/aniki/1411695702/l50">3: またお前は釣られてガチホモ板に来てしまったわけだが… (7)</a>
<a href="/test/read.cgi/aniki/1421322962/l50">4: 大のシコり総合 (26)</a>
<a href="/test/read.cgi/aniki/1400081112/l50">5: ホモ板って何のために存在してるの? (51)</a>
<a href="/test/read.cgi/aniki/1413341977/l50">6: ヤン坊×マー坊 (6)</a>
<a href="/test/read.cgi/aniki/1396630281/l50">7: おすすめのホモ漫画、もしくは漫画家を教えてください (21)</a>
202:いっち◆04mB7iDdltG4:2015/01/31(土)01:47:32 FHm
>>200
2個だけhrefの中身をサンプル的に見ていく
/test/read.cgi/aniki/1394978291/l50
/test/read.cgi/aniki/1414757818/l50

こんな感じに読み取れる
/test/read.cgi/板ID/スレID/l50
一番けつにあるl50ってのはレス0~50まで表示するって意味
このスレだとhttp://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/l50を見れば分かると思う
因みに2chだとけつにスレのURLに色んなオプションをつけることが出きる

個別に表示する
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/50ってみると0~50じゃなくてレス番号50だけ取得できる
他にもIDだけ抽出したり色々出きるお
201:Awn◆Awn//////E:2015/01/31(土)01:42:57 PLU
さすがガチホモ板
203:名無しさん@おーぷん:2015/01/31(土)01:56:39 tfI
タイトル一覧がカオスだな…
204:いっち◆04mB7iDdltG4:2015/01/31(土)02:06:07 FHm
>>202
スレIDと板IDだけ抜き出す正規表現を考えてみる
dat取るだけだったらスレIDだけでいいけど板IDも取り出せるように組んだ方がまたいつか別の物を作る時使えるかもしれないので今回は取り出せるように正規表現を組んでみる

例の如く適当にこれを正規表現チェッカーにコピペしてがんばって正規表現を作る
<a href="/test/read.cgi/aniki/1394978291/l50">1: お前ら好みの絵を描いていくスレ (61)</a>
<a href="/test/read.cgi/aniki/1414757818/l50">2: アッ♂したことあるやつって本当にこんなかんじなの? (13)</a>
<a href="/test/read.cgi/aniki/1411695702/l50">3: またお前は釣られてガチホモ板に来てしまったわけだが… (7)</a>
<a href="/test/read.cgi/aniki/1421322962/l50">4: 大のシコり総合 (26)</a>
<a href="/test/read.cgi/aniki/1400081112/l50">5: ホモ板って何のために存在してるの? (51)</a>
<a href="/test/read.cgi/aniki/1413341977/l50">6: ヤン坊×マー坊 (6)</a>
<a href="/test/read.cgi/aniki/1396630281/l50">7: おすすめのホモ漫画、もしくは漫画家を教えてください (21)</a>

でシンプルにこんな感じで正規表現作ってみた
/<a href="¥/test¥/read.cgi¥/([¥w]+)¥/([¥d]+)¥//



見れば分かると思うけど全部評価してない
「<a href="/test/read.cgi/aniki/1394978291」こんな感じで中途半端に評価してる(多分大丈夫だよねw)

何か問題あったらその都度修正してタイプです
208:いっち◆04mB7iDdltG4:2015/01/31(土)02:55:20 FHm
>>204
と思ったけどこのままじゃ抜き出せなかったので色々修正
取り合えずweb_get()関数から
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了
return $html;//取得したurlのhtmlを返す
}
こんな感じに
213:いっち◆04mB7iDdltG4:2015/01/31(土)04:19:16 FHm
>>204
正規表現変更
/<a href="¥/test¥/read.cgi¥/[~¥w]+¥/([¥d]+)¥/l50">.+?<¥/a>/is


修正その3
215:いっち◆04mB7iDdltG4:2015/01/31(土)04:22:53 FHm
>>204
修正その4
>dat取るだけだったらスレIDだけでいいけど板IDも取り出せるように組んだ方がまたいつか別の物を作る時使えるかもしれないので今回は取り出せるように正規表現を組んでみる
これ嘘
スレIDだけでいいやw
205:いっち◆04mB7iDdltG4:2015/01/31(土)02:19:28 FHm
>>204
正規表現できたのでこれをPHPでも取り出せるようにコードを弄くる
PHPでは正規表現で切ったり貼ったりするのに便利なpreg_replaceって言う関数があるので今回はこれを使う

使い方は
preg_replace(正規表現,取り出したい$1とか,取り出す文字列)

戻り値で「取り出したい$1とか」を取り出すことができる
213:いっち◆04mB7iDdltG4:2015/01/31(土)04:19:16 FHm
>>205ではpreg_replace使うっていったけどpreg_match_allを使います
一応使い方
preg_match_all(正規表現,比較文字,格納変数, パラメータ);
正直俺も正規表現はよくわかりませんw
気になる人はこれ見てください
http://php.net/manual/ja/function.preg-match-all.php
206:名無しさん@おーぷん:2015/01/31(土)02:52:17 dFU
睡魔にやられたな

グッナイ☆
208:いっち◆04mB7iDdltG4:2015/01/31(土)02:55:20 FHm
>>206
いや起きてるよw
リプレイスできなかったからイライラしてただけw
207:Awn◆Awn//////E:2015/01/31(土)02:52:43 PLU
俺は待ってるで!
208:いっち◆04mB7iDdltG4:2015/01/31(土)02:55:20 FHm
>>207
センキュー
でもお前みたいなプロが俺みたいなトーシロの講座見てどうすんねんw
213:いっち◆04mB7iDdltG4:2015/01/31(土)04:19:16 FHm
>>208
修正その2
210:名無しさん@おーぷん:2015/01/31(土)03:10:15 tfI
板一覧はどこから取ってくるの?
212:いっち◆04mB7iDdltG4:2015/01/31(土)03:15:15 FHm
216:Awn◆Awn//////E:2015/01/31(土)04:23:25 rdp
URLを"/"でsplitして何番目かの要素が掲示板のIDとスレのIDだったり
219:いっち◆04mB7iDdltG4:2015/01/31(土)04:37:22 FHm
>>216
それでもいいですね
取り合えず抜き出せれば何でもいいんでw
一応splitも
http://php.net/manual/ja/function.split.php
221:いっち◆04mB7iDdltG4:2015/01/31(土)04:41:24 FHm
>>219
蛇足
PHPでhtmlタグ抽出する時正規表現とか使うやり方は労力の無駄ですw
GoutteとかSimple HTML DOMとかのライブラリ使うの一番楽です
正規表現での抜き出しは今日はじめてやりましたw
224:いっち◆04mB7iDdltG4:2015/01/31(土)04:47:10 FHm
>>219
の実行結果貼るの忘れた



こんな感じで取得できてれば成功
217:名無しさん@おーぷん:2015/01/31(土)04:32:14 tfI
俺が作ったクローラーのプログラム見てきたけどそんなに複雑な正規表現書いてなかったよ
多分splitしているんじゃないかなぁ
218:Awn◆Awn//////E:2015/01/31(土)04:34:06 rdp
phpにsplitあるのかと不安になり調べた


"
ヒント
split() は PHP 5.3.0 以降で非推奨になりました。この関数のかわりに preg_split() を使うことを推奨します。 正規表現の威力が必要ないのであれば、explode() を使用するほうがより高速です。これは正規表現エンジンの オーバーヘッドを受けません。
"

preg_split()←こいつだ
220:名無しさん@おーぷん:2015/01/31(土)04:37:48 tfI
http://engawa.open2ch.net/aniki/subject.txt
ここから取得しないの?
222:いっち◆04mB7iDdltG4:2015/01/31(土)04:41:51 FHm
>>220
してるぜ
223:名無しさん@おーぷん:2015/01/31(土)04:43:50 tfI
ここに書いてあるプログラムだとsubback.htmlから取得するようになっているよ
224:いっち◆04mB7iDdltG4:2015/01/31(土)04:47:10 FHm
>>223
ホントだw
メンドクサイカラこれでいいや
226:いっち◆04mB7iDdltG4:2015/01/31(土)05:16:44 FHm
>>224
http://engawa.open2ch.net/aniki/dat/スレID.datで後は全部取得できますよっと
225:名無しさん@おーぷん:2015/01/31(土)04:48:47 tfI
>>224
やっとスレ一覧の取得までこぎつけたか
頑張ったかいがあったね!
226:いっち◆04mB7iDdltG4:2015/01/31(土)05:16:44 FHm
>>225
最初のほうが殆ど全部蛇足だったからな・・・
232:いっち◆04mB7iDdltG4:2015/01/31(土)06:17:55 FHm
>>226
これでホントに最後っすw
今作業してるphpファイルと同階層にdatとかって名前のフォルダを作る
それでこれを実行するとdatフォルダにホモホモしいdatファイルあふれ変えるわけですとw

<?php
$url ='http://engawa.open2ch.net/aniki/subback.html';//欲しいサイトのurl
$html = web_get($url);//htmlを取得



preg_match_all('/<a href="¥/test¥/read.cgi¥/[~¥w]+¥/([¥d]+)¥/l50">.+?<¥/a>/is',$html, $ita_id,PREG_SET_ORDER);//首都したhtmlから板IDを取得
set_time_limit(0);//タイムアウトしないようにw
foreach ($ita_id as $key ) {
$dat_url='http://engawa.open2ch.net/aniki/dat/'.$key[1].'.dat';//datのurl場所
$dat = web_get($dat_url);//web_get()関数でdat取得
//書き込み開始
if(!$FP = fopen('dat/'.$key[1].'.dat','w'))
echo 'error';
else{
fwrite($FP,$dat);
fclose($FP);
}
}
echo 'end';

/*web_get関数*/
function web_get($url){
$ch = curl_init();//初期化
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_TIMEOUT, 100 );
$html = curl_exec( $ch );//urlのhtml取得
curl_close( $ch );//curl終了
return $html;//取得したurlのhtmlを返す
}
?>

おわったああああああああああああああああああああああああああああああああ!!
これで一応完璧やろw
データベースに登録して色々やろうと思ったけど正直もう寝るわ
皆さん乙乙
233:いっち◆04mB7iDdltG4:2015/01/31(土)06:23:12 FHm
>>232
結果



238:いっち◆04mB7iDdltG4:2015/01/31(土)14:10:22 FHm
>>232
このままだとubuntu書き込みできないっぽいねw
という訳でこんな感じでdatフォルダのアクセス権変えれば書き込めすよ

227:Awn◆Awn//////E:2015/01/31(土)05:22:40 PLU
「終」ってことは終わったのかな?
乙でござり
これでガチホモ板のスレがいっぱい取得できる
228:名無しさん@おーぷん:2015/01/31(土)05:23:23 tfI
ガチホモ板スレ取得プログラムか…
誰得w
229:名無しさん@おーぷん:2015/01/31(土)05:23:43 tfI
datファイルを保存するのはやらなくていいの?
231:いっち◆04mB7iDdltG4:2015/01/31(土)06:11:15 FHm
>>229
おk
じゃあファイルの読み書きもな

ファイルの書き込みはこれコピペでいいよ
if(!$FP = fopen(保存先/ファイル名,モード))//ファイルオープン
echo 'error';
else{
fwrite($FP,書き込む文字);//ファイル書き込み
fclose($FP);//ファイルクローズ
}
230:名無しさん@おーぷん:2015/01/31(土)05:39:26 dFU
235:名無しさん@おーぷん:2015/01/31(土)06:32:59 dFU
乙乙
勉強になりました
おやすみ
236:Awn◆Awn//////E:2015/01/31(土)06:35:51 PLU
>データベースに登録して色々やろうと思ったけど正直もう寝るわ
続編はDB構築からスタートってことですね!
乙乙乙
237:いっち◆04mB7iDdltG4:2015/01/31(土)06:40:01 FHm
理想はログ速みたいな動作する奴だから暫く先になりそうだわいorz
データベースはデータベースでまた別にやろうぜ
っていうか誰か変わりにやってくれてもいいのよ
暇なのでPHPでプログラミング講座やるおー
引用元:http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/

Related Posts Plugin for WordPress, Blogger...