固め濃い目

日々のどうでもいいことをつらつらと。

PHPの勉強をはじめた


f:id:katamekoime:20151210231428j:image

この秋ごろからPHPの勉強をし始めた

 

今まではプログラミングというものは多少かじったことがある程度にしかやったことがなかった。

10年ぐらい前に大学の卒業研究でC++のコピペを重ねに重ねて卒業したことと、仕事でVBAをちょっとやったことがあるぐらいで、ほぼ素人同然みたいなもんだ。

 

勉強し始めた動機は、、、表向きはこれからの時代プログラミングができる(わかる)ぐらいのスキルがないと将来的に仕事するのも厳しくなるよなぁ、、、というような意識高い(笑)感じのノリだったりするのだけれど、結局は下心。

 


アフィリエイトでがっぽり副収入がほしい!!

 

ってことが一番の理由だったりするw

手にとったのは、よくわかるPHPの教科書。Amazonで何か入門書を探していたところ、タイトルの帯もまんま初心者に向けたタイトルだし、ユーザレビューも悪くないので迷わずポチポチ。

よくわかるPHPの教科書 【PHP5.5対応版】

 

 

まだまだわからないことがほとんど過ぎて何もできないのだけど、色々動くようになると面白い!

休日やることがなさすぎてパチンコ行って大負け

泣きながら何もせず帰宅

ふて寝

といった負の連鎖からも脱出できそうw

 

今一番やりたいのは簡易的なアンテナサイトを自前で作る。ってところまでをやってみたいので、

  1. 色々なニュースサイトのRSSを読み込み
  2. フィルタリングしたいキーワードを設定してニュースの絞込
  3. 再RSS化

ってのをやりたいので、色々試行錯誤してみた。

大学の時に会得したコピペスキル(笑)を活かして自分なりにコードを作ってみた。今のところうまく行っているような気がするので、ネットの片隅に記念においておこうと思う。

 

 プログラミングのいろはも全く分からないので恥ずかしいのだけど、諸先輩方ご指導ご鞭撻よろしくおねがいしますー!

 

<?php

$feedUrl = 'http://example.com/feed';
$feedTitle = 'フィードのタイトルをテキトウに';
$feedDescription = 'フィードの説明をテキトウに';

$rss_url=array(    
///統合したいRSSを下に並べる
    "http://headlines.yahoo.co.jp/rss/all-dom.xml",
    "http://headlines.yahoo.co.jp/rss/all-c_int.xml",
    "http://headlines.yahoo.co.jp/rss/all-c_ent.xml",
    "http://headlines.yahoo.co.jp/rss/all-c_life.xml",
    );


$patern = ('/絞り込みたいキーワード/');
$unpatern= ('/除外したいキーワード/');
foreach ($rss_url as $url) {
    $data = simplexml_load_file($url);
    $i = 0 ;
//RSS1.0の場合
    if ($data->item) {
        foreach ($data->item as $rssValue) {if ($i++ == 10)  { break; }
            if ((preg_match($patern, $rssValue->description) or preg_match($patern, $rssValue->title) )and !preg_match($unpatern, $rssValue->title)) {
                $link = $rssValue ->link;
                $title = $rssValue ->title;
                $content = $rssValue ->description;
                $content = strip_tags($content);
                $content = mb_strimwidth($content, 0, 250, "...", "UTF-8");
                date_default_timezone_set('Asia/Tokyo');
                $dc = $rssValue ->children('http://purl.org/dc/elements/1.1/');
                $day = date('Y/m/d H:i',strtotime($dc->date));
                $key = date('YmdGHis', strtotime($dc->date));
                $itemPubDate = date('D, d M Y H:i:s O', strtotime($dc->date));
                $guid = $rssValue ->guid;
                $entryArr[$key] = array('key'=> $key,'link' => $link, 'title' => $title, 'description'=>$content,'pubDate'=>$itemPubDate,'guid' =>$guid);  
            } 

    }
//RSS2.0の場合
    }elseif ($data->channel->item) {
        foreach ($data->channel->item as $rssValue) {if ($i++ == 10)  { break; }
            if ((preg_match($patern, $rssValue->description) or preg_match($patern, $rssValue->title) )and !preg_match($unpatern, $rssValue->title)) {
                $link = $rssValue ->link;
                $title = $rssValue ->title;
                echo $title;
                $content = $rssValue ->description;
                $content = strip_tags($content);
                $content = mb_strimwidth($content, 0, 250, "...", "UTF-8");
                date_default_timezone_set('Asia/Tokyo');
                $day = date('Y/m/d H:i',strtotime($rssValue -> pubDate));
                $key = date('YmdGHis', strtotime($rssValue -> pubDate));
                $itemPubDate = date('D, d M Y H:i:s O', strtotime($rssValue -> pubDate));
                $guid = $rssValue ->guid;                
                $entryArr[$key] = array('key'=> $key,'link' => $link, 'title' => $title, 'description'=>$content,'pubDate'=>$itemPubDate,'guid' =>$guid);    
            }

    }
//ATOMの場合
    }elseif ($data->entry) {
        foreach ($data->entry as $rssValue) {if ($i++ == 10)  { break; }
              if ((preg_match($patern, $rssValue->description) or preg_match($patern, $rssValue->title) )and !preg_match($unpatern, $rssValue->title)) {
                $link = $rssValue ->link;
                $title = $rssValue ->title;
                echo $title;
                $content = $rssValue ->summary;
                $content = strip_tags($content);
                $content = mb_strimwidth($content, 0, 250, "...", "UTF-8");
                date_default_timezone_set('Asia/Tokyo');
                $day = date('Y/m/d H:i',strtotime($rssValue -> issued));
                $key = date('YmdGHis', strtotime($rssValue -> issued));
                $itemPubDate = date('D, d M Y H:i:s O', strtotime($rssValue -> issued));
                $guid = $rssValue ->guid;
                $entryArr[$key] = array('key'=> $key,'link' => $link, 'title' => $title, 'description'=>$content,'pubDate'=>$itemPubDate,'guid' =>$guid); 
            }
    }
}
} 

arsort($entryArr);
?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
    <title><?php echo $feedTitle; ?></title>
    <link><?php echo $feedUrl; ?></link>
    <description><?php echo $feedDescription; ?></description>
    <language>ja</language>
    <pubDate><?php echo date('D, d M Y H:i:s O'); ?></pubDate>
    <lastBuildDate><?php echo date('D, d M Y H:i:s O'); ?></lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <?php foreach($entryArr as $item): ?>
    <item>
        <title><?php echo $item['title']; ?></title>
        <link><?php echo $item['link']; ?></link>
        <guid isPermaLink="true"><?php echo $item['link']; ?></guid>
        <description><?php echo $item['description']; ?></description>
        <content:encoded><![CDATA[<?php echo $item['description']; ?>]]></content:encoded>
        <pubDate><?php echo $item['pubDate'];; ?></pubDate>
    </item>
    <?php endforeach; ?>
</channel>
</rss>