PHPでプログラミング講座

1: 名無しさん@おーぷん 2015/01/30(金)13:19:01 ID:CM7

需要ある?


スポンサードリンク

5: 名無しさん@おーぷん 2015/01/30(金)13:23:24 ID:7kd

はよ!


12: 名無しさん@おーぷん 2015/01/30(金)13:27:39 ID:mmG

どのくらい教えてくれるの?


13: 名無しさん@おーぷん 2015/01/30(金)13:29:48 ID:CM7

>>12
どこからがいい?
つか俺も素人だし重度のめんどくさがり屋だから質問されても詳しいことは分からんけど
時間は暇だから適当な環境構築からやってもいいよ


15: 名無しさん@おーぷん 2015/01/30(金)13:31:01 ID:6UD

PuppyLinuxでPHP環境つくるの教えて


16: 名無しさん@おーぷん 2015/01/30(金)13:32:12 ID:CM7

>>15
linuxならubuntuにしなさい
なぜなら今僕の手元にあるのubuntuしかないから


17: 名無しさん@おーぷん 2015/01/30(金)13:34:04 ID:6UD

>>16
よっしゃ
じゃubuntu立ち上げるわ


20: 名無しさん@おーぷん 2015/01/30(金)13:40:16 ID:CM7

>>17
windowsかvirtualBOXでubuntu動かすかどっちがいい?


21: 名無しさん@おーぷん 2015/01/30(金)13:41:19 ID:6UD

>>20
もう既にubuntuだけインストールしたハードディスクがあるから
それを立ち上げているよ


22: 名無しさん@おーぷん 2015/01/30(金)13:42:27 ID:CM7

じゃあubuntuでいいか
今インストールしてくるわ


27: 名無しさん@おーぷん 2015/01/30(金)13:49:04 ID:CM7

おkじゃあ適当に始めるか
とりあえずxamppダウンロードしてきてください
一応ここから自分の環境にあったものを選んでくれ

https://www.apachefriends.org/jp/download.html


28: 名無しさん@おーぷん 2015/01/30(金)13:50:53 ID:6UD

>>27
ダウンロードしたらどこにcopyすればいい?


30: 名無しさん@おーぷん 2015/01/30(金)13:56:20 ID:CM7

>>28
どこでもいいよ

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

ubuntuの方は
chmod +x xampp-linux-5.5.19-0-installer.run
sudo ./xampp-linux-5.5.19-0-installer.run
インストーラー起動するだろ


37: 名無しさん@おーぷん 2015/01/30(金)14:09:01 ID:Ich

情報関係の専門行くからやってみるわ


60: 名無しさん@おーぷん 2015/01/30(金)15:32:57 ID:CM7

一応xamppのインストールの流れな








インストーラーが起動したらネクスト連打でいいや


61: 名無しさん@おーぷん 2015/01/30(金)15:41:22 ID:CM7

xamppでこれが出来たら次はxamppの起動と停止

起動
sudo /opt/lampp/lampp start



停止
sudo /opt/lampp/lampp stop


62: 名無しさん@おーぷん 2015/01/30(金)15:45:19 ID:CM7

上の起動コマンド打って
http://localhost/

でこれが出ればインストール完了な


63: 名無しさん@おーぷん 2015/01/30(金)15:54:28 ID:CM7

xamppのホームディレクトリ場所
opt/lampp/htdocs







ここに作ったファイルをぶっ込むことになる


64: 名無しさん@おーぷん 2015/01/30(金)15:57:01 ID:CM7

>>63
htdocsの中身貼るのを忘れた


65: 名無しさん@おーぷん 2015/01/30(金)16:03:31 ID:Zxx

なんか高度なやりとりしててそもそもプログラミングがどういうのなのかさっぱりなんて言いにくい雰囲気


66: 名無しさん@おーぷん 2015/01/30(金)16:07:37 ID:CM7

>>65
全然高度じゃないお
linuxでやりたいっていうバカが居るか面倒くさい事になってるだけだお
windosでやればxamppでの環境構築なんて5分だよ


67: 名無しさん@おーぷん 2015/01/30(金)16:13:35 ID:Zxx

アルファベットが飛び交ってて何言ってるのか全然わかんないw
猿でもわかるプログラミング入門みたいなのかと思ってたんだけどそもそも環境構築ってなんぞや


68: 名無しさん@おーぷん 2015/01/30(金)16:16:46 ID:CM7

>>67
スーファミの違法ロムを(PHPを)プレイするためにエミュレータ(環境)を入れてるだけ


70: 名無しさん@おーぷん 2015/01/30(金)16:24:36 ID: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?
5Tywch9


50: 名無しさん@おーぷん 2015/01/30(金)14:36:23 ID:6UD

ホームの中のphpフォルダから作ったphpinfo.phpを
/opt/lampp/htdocs内にコピーしようとしたらエラー発生
許可がありませんとなる
どうすればいい?


51: 名無しさん@おーぷん 2015/01/30(金)14:48:05 ID:6UD

「あなたは所有者ではありません(これらのアクセス権を変更することはできません)。」
ってどういうこっちゃ
どうすりゃいいの


52: 名無しさん@おーぷん 2015/01/30(金)14:48:50 ID:CM7

何それ
俺そんなん一回も出たことないんだけど
guiからコピペも出来んのか?


53: 名無しさん@おーぷん 2015/01/30(金)14:50:33 ID:6UD

>>52
guiからドラッグでコピーしてんだけど
root権限がないらしい
ログインのときもrootなんか選択できないけど


55: 名無しさん@おーぷん 2015/01/30(金)14:57:25 ID:BHB

>>53を解決法を示せるイッチなら有能


75: 名無しさん@おーぷん 2015/01/30(金)16:39:19 ID:CM7

次に>>ID:6UDが言ってたアクセス出来ないとかってやつやりかた
sudo chmod 777 /opt/lampp/htdocs
これ実行すれば多分行ける
正直俺はlinuxとかよくわかってないのコマンド実行すればファイルへのアクセス権が取れるらしい


77: 名無しさん@おーぷん 2015/01/30(金)16:43:41 ID:CM7

とりまここまで出来ればPHP使えるよっと
これで環境構築終わりです

インストール出来ないとかここが分かんないとかって人いる


85: 名無しさん@おーぷん 2015/01/30(金)17:00:25 ID:CM7

windowsの方の説明欲しい奴いる?


86: 名無しさん@おーぷん 2015/01/30(金)17:08:38 ID:CM7

続き
取り敢えずxmapp起動
windows



これで一応PHP使えるはず


87: 名無しさん@おーぷん 2015/01/30(金)17:11:31 ID:CM7

>>86
windowならC:¥xampp¥htdocs、ubuntuならopt/lampp/htdocsが今から作るPHPファイルを置く場所です


88: 名無しさん@おーぷん 2015/01/30(金)17:13:07 ID:CM7

追加で
windowsの人はutf-8で保存できるメモ帳用意しといてください
俺は秀丸使ってる

http://hide.maruo.co.jp/software/hidemaru.html


90: 名無しさん@おーぷん 2015/01/30(金)17:31:29 ID:CM7

ubuntuは要らないけど一応文字コードをデフォでUTF-8指定するやり方
その他->動作環境->ファイル->エンコード1->標準のエンコードの種類でUTF-8を指定してやる
(Windowsの人はずっとこのままでいいと思う)


89: 名無しさん@おーぷん 2015/01/30(金)17:20:03 ID:CM7

テキストエディタ起動してこんな感じで打ち込む


<?php
echo 'hello';
?>

ファイル名をtest.phpで保存してhtdocsに入れて
http://localhost/test.php
を開く

これが表示されれば成功


84: 名無しさん@おーぷん 2015/01/30(金)16:59:22 ID:CM7

29人もいるのに反応ないし(´・ω・`)
勝手にすすめちゃうぞ


95: 名無しさん@おーぷん 2015/01/30(金)17:41:47 ID:CM7

変数とかからやった方がいいのかな


96: 名無しさん@おーぷん 2015/01/30(金)17:48:55 ID:P3k

>>95
超個人的な意見だと基礎の基礎の基礎ぐらいから教えてほしいぐらい
専門用語がわからないから とりあえず流れをざっと見るのもわかりやすいかもしれないけど
苦Cもちょっとずつ読んでるけど横文字多くて馬鹿には苦しい


97: 名無しさん@おーぷん 2015/01/30(金)17:52:42 ID:CM7

>>96
おk
だったら苦Cなみのスローペースで関数辺りまでやるわ(多分そこまでやればどうにかなると思うし)
俺は疲れたからちょっと風呂入ってくる

つうかこれホントに33人もいるのかよ
一人も反応ないし(´・ω・`)


98: 名無しさん@おーぷん 2015/01/30(金)17:55:29 ID:P3k

>>97
俺みたいなプログラミング全然わからん奴らこそ見てるからこんなに静かなんじゃないかって思ったり
俺も風呂入って来るわ おつかれ


99: 名無しさん@おーぷん 2015/01/30(金)17:59:20 ID:6UD

おおっ進んどるな
ubuntuの方は勝手にやっとくわ


103: Awn◆Awn//////E 2015/01/30(金)18:18:03 ID:GXu

こっそり見てました


105: 名無しさん@おーぷん 2015/01/30(金)18:19:51 ID:CM7

続き
変数の説明

これ入力


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

これ表示されれば成功


つまり$aが変数
わかった?w


110: 名無しさん@おーぷん 2015/01/30(金)18:24:06 ID:CM7

一応プログラムでは=は代入を意味する
右から左に代入する事ができる


120: 名無しさん@おーぷん 2015/01/30(金)18:55:29 ID:CM7

続き
phpの基本的な構文の形
「//」の後はコメントって言って何書き込んでもいい


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

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

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


122: Awn◆Awn//////E 2015/01/30(金)18:58:03 ID:GXu

お、続ききた!


123: 名無しさん@おーぷん 2015/01/30(金)19:19:12 ID: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


124: 名無しさん@おーぷん 2015/01/30(金)19:29:51 ID:CM7

続き
計算機

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

ただ計算させるだけ
使える演算子
+ 足し算
- 引き算
* 掛け算
/ 割り算
% あまり


125: 名無しさん@おーぷん 2015/01/30(金)19:40:17 ID:CM7

比較演算子ってあるけどアレも一応演算子(+とかー)にすぎない

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

これ実行すると1ってのが返ってくる
試しに'test'=='tes'にしてみると何も返ってこない
つまり比較演算子ってのは条件式に合えば1(TRUE)何もなければ何も返ってこない
if文ってのは1(TURE)を受け取って実行してた訳だ


126: 名無しさん@おーぷん 2015/01/30(金)19:47:19 ID:CM7

試しにifで遊んでみる。これで結果を見れば一目瞭然だと思う

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

127: Awn◆Awn//////E 2015/01/30(金)19:48:50 ID:GXu

先生、if(0.5)だとechoはどうなるんですか?


128: 名無しさん@おーぷん 2015/01/30(金)19:51:07 ID:CM7

>>127
パソコンがぶっ壊れるので絶対に少数入れて実行しないように


129: 名無しさん@おーぷん 2015/01/30(金)19:53:11 ID:zgA

>>128
何それ怖い


140: 名無しさん@おーぷん 2015/01/30(金)20:25:30 ID:CM7

続き
繰り返し文(while)

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

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

サンプル

<?php
$a=0;
while($a<=10){
echo $a.'<br>';
$a++;
}
?>

0~10まで表示するだけ


141: 名無しさん@おーぷん 2015/01/30(金)20:29:23 ID:CM7

かなり適当だけどプログラミングの基本はこれで終わり
ここまでやってきたことすべて合わせて計算(演算)->比較(if)+ループ(while)->・・・・みたいな感じでやってくのがプログラミングの全体の基本


145: 名無しさん@おーぷん 2015/01/30(金)20:46:57 ID:CM7

ここまで見てもらった初心者には悪いんだけどたぶん俺の説明で分かるガチ初心者は一人も居ないので分からなくても気を落とさなくていいです
一応fuzzbizz問題とか1~100まで表示して3の倍数の時だけニャーにするとかの問題が自力で解けるようになったらここから先も理解できると思います(多分)


147: 名無しさん@おーぷん 2015/01/30(金)21:13:13 ID:CM7

続き

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

基本的な関数の書き方
function 関数名(){
処理
}
これだけです


148: 名無しさん@おーぷん 2015/01/30(金)21:25:19 ID:CM7

一応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 ID:CM7

関数には引数と戻り値ってのが使えます
引数は関数に数値を渡すもの、戻り値ってのは関数から返ってくる値のこと
言っても何だが分からないと思うので適当にやってみます

<?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 ID:OCw

支援
期待してる!


152: 名無しさん@おーぷん 2015/01/30(金)21:43:37 ID:CM7

>>149
ありがとうございます(;_;)


151: 名無しさん@おーぷん 2015/01/30(金)21:36:48 ID:OCw

次は何をするの?


155: 名無しさん@おーぷん 2015/01/30(金)21:56:16 ID:CM7

ここまでやってきたプログラムのおおまかな構造
関数{処理{}}
こんな感じ

因みに関数もまとめるクラスってのもあるけど今回は触れません


44: 名無しさん@おーぷん 2015/01/30(金)14:25:45 ID:CM7

面倒くさいもの作りたくないから選択式な

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

好きなもの選んでええんやで^^


157: 名無しさん@おーぷん 2015/01/30(金)22:01:27 ID:CM7

一応今回持ってくる板はガチホモでいいやw
http://engawa.open2ch.net/aniki/subback.html
ここですw


159: 名無しさん@おーぷん 2015/01/30(金)22:03:26 ID:OCw

ガチホモwwwwwwwwww


158: Awn◆Awn//////E 2015/01/30(金)22:02:41 ID:fQq

数多ある板からなぜガチホモw


167: 名無しさん@おーぷん 2015/01/30(金)22:39:02 ID: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を表示
?>

168: 名無しさん@おーぷん 2015/01/30(金)22:47:25 ID:lqr

いきなりcurlなんやね
でも使うならこっちの方が便利かな


169: 名無しさん@おーぷん 2015/01/30(金)22:56:11 ID:CM7

>>168
ダメか?
ライブラリ使えばもっと便利なのもあるんだけどなw

続き
これで一旦PHPは終了です
次からは正直自分もよく分かってない正規表現のお勉強です


171: Awn◆Awn//////E 2015/01/30(金)22:59:21 ID:fQq

file_get_contents()「・・・」


172: 名無しさん@おーぷん 2015/01/30(金)23:08:33 ID:CM7

>>171
結局file_getとcurlどっちがいいんだろう?
2chからdat拾う時はcurlの方がいいってどっかで見たから今回はcurl使うようにしたんだけど


173: 名無しさん@おーぷん 2015/01/30(金)23:14:02 ID:OCw

俺はfile_get使ってるよ


174: 名無しさん@おーぷん 2015/01/30(金)23:16:21 ID:CM7

>>173
俺も最初はそうだったんだけどな
今回はcurlでいいやw


170: 名無しさん@おーぷん 2015/01/30(金)22:58:37 ID:4wX

やっと追い付いた
終わっちゃった?


172: 名無しさん@おーぷん 2015/01/30(金)23:08:33 ID: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と同じ


175: 名無しさん@おーぷん 2015/01/30(金)23:22:06 ID:CM7

囲まれた範囲もコメントとして使えます。こんな感じで綺麗装飾する奴もいます

<?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を返す
}

?>

177: 名無しさん@おーぷん 2015/01/30(金)23:35:09 ID: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 ID:CM7

>>177
一応正規表現チェッカーってのがあるからここで色々練習したら分かると思う



http://www.rider-n.sakura.ne.jp/regexp/regexp.php


181: 名無しさん@おーぷん 2015/01/30(金)23:46:52 ID:OCw

>>179
画像でわかりやすい説明乙


182: 名無しさん@おーぷん 2015/01/30(金)23:56:32 ID:CM7

これでおーぷんのVIPのスレだけならどんなスレでも表せるようになりました
http:\/\/hayabusa.open2ch.net\/test\/read.cgi\/news4vip\/[\d]+\/

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

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


183: 名無しさん@おーぷん 2015/01/31(土)00:02:46 ID:tfI

datを読み込んでローカルに保存するまでが目標?


184: 名無しさん@おーぷん 2015/01/31(土)00:08:01 ID:FHm

>>183
うん
というかホントはそれがしたかった
実を言うと自分のローカル環境で動かすログ速みたいなのが欲しくて作ってる途中だったんだ
それで丁度dat取得のところまできたから需要あるならと思ってこのスレ立ててみた


194: いっち◆04mB7iDdltG4 2015/01/31(土)00:53:56 ID:FHm

一応正規表現の質問とかある?
答えれることなら答えるけど
分んないことなら俺は分かんないって言うけど誰か答えてくれるかもしれないw


195: 名無しさん@おーぷん 2015/01/31(土)01:07:02 ID:tfI

問題ない
次カモン


197: Awn◆Awn//////E 2015/01/31(土)01:20:48 ID:PLU

わくてか


198: いっち◆04mB7iDdltG4 2015/01/31(土)01:28:04 ID:FHm

続き
ここから板一覧を取得する一連の流れ

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

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

IDからdatのURLを解析

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

大まかにこんな感じかな


199: いっち◆04mB7iDdltG4 2015/01/31(土)01:35:23 ID:FHm

板一覧のhtmlの取得は198をこんな感じで改造 すると

$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


203: 名無しさん@おーぷん 2015/01/31(土)01:56:39 ID:tfI

タイトル一覧がカオスだな…


201: Awn◆Awn//////E 2015/01/31(土)01:42:57 ID:PLU

さすがガチホモ板


200: いっち◆04mB7iDdltG4 2015/01/31(土)01:40:57 ID: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 ID: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だけ抽出したり色々出きるお


204: いっち◆04mB7iDdltG4 2015/01/31(土)02:06:07 ID: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)

何か問題あったらその都度修正してタイプです


205: いっち◆04mB7iDdltG4 2015/01/31(土)02:19:28 ID:FHm

正規表現できたのでこれをPHPでも取り出せるようにコードを弄くる
PHPでは正規表現で切ったり貼ったりするのに便利なpreg_replaceって言う関数があるので今回はこれを使う

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

戻り値で「取り出したい$1とか」を取り出すことができる


208: いっち◆04mB7iDdltG4 2015/01/31(土)02:55:20 ID:FHm

と思ったけどこのままじゃ抜き出せなかったので色々修正
取り合えず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を返す
}

214: 名無しさん@おーぷん 2015/01/31(土)04:20:55 ID:tfI

眠いだろうけど頑張れ!


219: いっち◆04mB7iDdltG4 2015/01/31(土)04:37:22 ID: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とかの仲間のループ文だと思っておけばいいです
配列を使う時によく使います
(配列の説明してなかった事を今さら後悔してます)


221: いっち◆04mB7iDdltG4 2015/01/31(土)04:41:24 ID:FHm

蛇足
PHPでhtmlタグ抽出する時正規表現とか使うやり方は労力の無駄ですw
GoutteとかSimple HTML DOMとかのライブラリ使うの一番楽です
正規表現での抜き出しは今日はじめてやりましたw


220: 名無しさん@おーぷん 2015/01/31(土)04:37:48 ID:tfI

http://engawa.open2ch.net/aniki/subject.txt
ここから取得しないの?


222: いっち◆04mB7iDdltG4 2015/01/31(土)04:41:51 ID:FHm

>>220
してるぜ


223: 名無しさん@おーぷん 2015/01/31(土)04:43:50 ID:tfI

ここに書いてあるプログラムだとsubback.htmlから取得するようになっているよ


224: いっち◆04mB7iDdltG4 2015/01/31(土)04:47:10 ID:FHm

>>223
ホントだw
メンドクサイカラこれでいいや

>>219
の実行結果貼るの忘れた


こんな感じで取得できてれば成功


225: 名無しさん@おーぷん 2015/01/31(土)04:48:47 ID:tfI

>>224
やっとスレ一覧の取得までこぎつけたか
頑張ったかいがあったね!


226: いっち◆04mB7iDdltG4 2015/01/31(土)05:16:44 ID:FHm

http://engawa.open2ch.net/aniki/dat/スレID.datで後は全部取得できますよっと


227: Awn◆Awn//////E 2015/01/31(土)05:22:40 ID:PLU

「終」ってことは終わったのかな?
乙でござり
これでガチホモ板のスレがいっぱい取得できる


228: 名無しさん@おーぷん 2015/01/31(土)05:23:23 ID:tfI

ガチホモ板スレ取得プログラムか…
誰得w


元スレ:http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/